Forum: Mikrocontroller und Digitale Elektronik Fröling Heizungssteuerung auslesen.


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Michael M. (moxel)


Angehängte Dateien:

Lesenswert?

Hallo zusammen ich weis das Thema RS232 wurde schon 1000 mal behandelt 
aber irgedwie komme ich noch nicht auf einen grünen Zweig. Ich versuche 
gerade über einen Atemega8 RS232 "Hex" Daten auf meinen Laptop für 
Testzwecke senden und und Empfangen.
Der Grund dafür ich habe ein mitgeschnittenes Protokoll meiner Heizung 
die an eine Visual.software Daten übermittelt. Ich möchte an meinem 
Atemega8 die gleichen Daten Empfangen und auf einem Display ausgeben.
Um Daten zu Empfangen muss ich vorher immer Daten in HEX senden.

Im Anhang habe ich die mitgeschriebenen Daten:




Mein Aktuelles Testprogramm sieht so aus.


#include   <avr/io.h>
#include  <stdlib.h>
#include  "lcd.c"
#include <stdarg.h>
#include <stdlib.h>
#include <avr/io.h>
#define F_CPU 3686400UL
#define UART_BAUD_RATE 9600



void initUART(void)
  {
  UBRRL = (F_CPU/UART_BAUD_RATE/ 16L)-1; //Baudrate festlegen
  UCSRB = 24;  //RX TX ein
  }



void putChar(char data)
  {
  while (!(UCSRA & 32)); //Warteschleife bis vorheriges Zeichen gesendet 
wurde
  UDR = data;
  }




void print (char buffer[])  // Unterprogramm zum Senden, sendet so lang 
bis 0 erscheint
{
for (int i=0; buffer [i] != 0; i++)
putChar(buffer [i]);
}


int main (void)
{


initUART ();  // Einbinden Schnittstelle







char wert_str[16];  //10 wandeln in dez 16= HEX gibt größe die zu 
Sendende Zeichenkette auf Display an

unsigned int anzeige;
unsigned int gedrueckt;  //zum entprellen
int werthoch;
int wertrunter;
char Zeichen;
unsigned int read;

// PD0 und PD1 reserviert für TX und RX

PORTC = 0xf8;  // Pull UP bei  C3 Taster weiter ,  C4 Taster hoch ,  C5 
Taster runter
PORTB = 0XFF;

lcd_init();
lcd_on();             // Display an









while (1)
{

     {print ("0X4D");
    }




  if (UCSRA&(1<<RXC))  // schaut ob Messwerte auf der RS232 
Schnittstelle sind
    {Zeichen = UDR;
    }


  itoa (Zeichen, wert_str, 10);  // Wandelt Analogwert zu einem String 
um 10= dez und 16= HEX
                 lcd_goto(1,1);            // 2 Zeile und den 
Anfangspunkt des Textes je nach PIN
                 lcd_write_s (wert_str);           // Schreibt den 
String auf das Display
                 lcd_write_s ("   ");                        // ????

von Lambdatronic (Gast)


Lesenswert?

willst Du mit Deinem Mega8 die Lambdatronic simulieren und
Daten per RS232 an die Visu-Software schicken ?
Einfacher ist es den AVR per RS232 an die Lampdatronic anzuschliessen 
und
die Daten auszulesen. Google mal "Fröling Daten auslesen", da wirst Du 
bestimmt fündig. Das Protokoll was in Deinem HTML-File "init" steht ist 
bekannt. Die Prozedur zum Auslesen auch.
Viel Spass dabei :-)

von Michael M. (moxel)


Lesenswert?

Ja ich will die Daten der Lambdatonic auslesen und auf einem LCD Panel 
das am Atemega8 hängt ausgeben. Ja es gibt einiges zur Heizung leider 
meist nur zu neueren Versionen. Daher muss ich das Protokoll entziffern.

von Philipp H. (hansimglueck2)


Lesenswert?


von Lambdatronic (Gast)


Lesenswert?

der Link aufs holzvergaser forum bringt nix. dort wird mit der S3200 
kommuniziert. Wenn Du mir Deine email gibst, helf' ich Dir dabei.
Ich mache das Auslesen der Daten mit einem P2.

von Michael M. (moxel)


Lesenswert?

Danke für den Link leider passen die Daten nicht zu der Lambdatronic 
S3100 hier werden andere Befehle gebraucht.

von Lambdatronic (Gast)


Angehängte Dateien:

Lesenswert?

sag' ich doch!
Probier es mal mit -> siehe Anhang :-)

von Michael M. (moxel)


Lesenswert?

Ja das sieht super aus da kann ich doch glatt das Wochenende mit 
Programmieren beginnen. Vielen Dank

von Vn N. (wefwef_s)


Lesenswert?

Lambdatronic schrieb:
> sag' ich doch!
> Probier es mal mit -> siehe Anhang :-)

Hast du auch Infos zum interpretieren der Daten?

von Lambdatronic (Gast)


Angehängte Dateien:

Lesenswert?

Prinzipiell läuft es ganz grob' gesagt so ab:
Man startet die Kommunikation wie un Bild S3100 oben.
(Use ID kann auch 0x01=Kunde sein)
Dabei sendet die Regelung alle Ihre Einstellungen/Einstellmöglichkeiten.
Die beginnen bei Antwortstrings mit "MA..." und laufen bis "MZ...".
Danach muss man auf den "Messwertstring" (M1....) wechseln.
Nun wird abwechselnd M1 (messwerte) und M2 (Uhrzeit/Datum) abgefragt.
Ist man dabei zu langesam geht die P2-Regelung in ein Timeout und hört 
auf zu senden. Dann muss man wieder ganz von vorne beginnen.
Die beiden Bilder zeigen was hinter den Ma...MZ steckt und wie der 
Messwertstring M1.. interpretiert werden muss (:2 bedeutet der gesendete
Wert muss halbiert werden um den echten zubekommen)
Für detailierte Infos müsste ich mal in meinem Projekt (hab' ich vor 5 
Jahren begonnen) nachschauen.
Viel Spass damit :-)

von Michael M. (moxel)


Lesenswert?

He das klingt schon echt gut ich war ganz auf dem falschen Pfad habe die 
Messwerte unter MA vermutet. Vielen Dank schon mal.
Falls Sie noch einen Quellcode hätten würde es mich natürlich auch sehr 
freuen. Ich hatte vor in C++ auf dem Atemega8 die Daten auszuwerten.
Danke

von Tom Neagu (Gast)


Lesenswert?

Hallo zusammen,
ich hätte bitte eine Frage: wie weit ist jetzt die Software? - oder 
Script?
Ich bin soweit mit dem ersten Schritt - MA Daten, aber nicht weiter.
Irgendwann sendet die S3100 Steuerung MZ... und ich gehe nicht mehr 
weiter.
Ich glaube bis zu dem M1,M2 Parameter wird schon noch ein langer Weg, 
oder?
Über eine Rückmeldung werde ich sehr dankbar.

von Lambdatronic (Gast)


Lesenswert?

Hallo Tom,

nach MZ sollte permanent "M2..." (Zeit und Datum) vom P2 gesendet 
werden.
Nun "schaltet" man mit folgendem Befehl "Rb..." auf "M1..." um.
Ich sende dan folgenden String:
StartLog[15] = "Rb\x03\x00\x00\x00\x00\xB7M2\x01\x01\x00\x81";
ist gleich
"R,b,3,0,0,0,0,183" + "M,2,1,1,0,129" (sind 2 Befehle!)

von Tom Neagu (Gast)


Lesenswert?

Hallo und DANKE für die Rückmeldung! Es ist tatsächlich sehr NETT!
Also:
Frage: 52 61 02 FF F9 02 AD
      ( R  a ...         Chksum) = Anmeldung (-7)
Antwort: 52 61 01 01 00 B5
       ( R  a...        Chksum) & 4D 41 05 53 00 02 00 03 00 EB
                                 ( M  A
                                     data-lang(5)
                                         data(53,00,02,00,03)
                                                        Chksum (hi/low))
Frage: 4D 41 01 01 00 90
Antwort: 4D 41 0c 49 00 1c 07 2B 5A 75 73 61 6E 64 04 1A
        (M  A  ... + Zustand..)
Frage: 4D 41 01 01 00 90
.....
usw
(ca. 25 Mal bis die Board-temperatur am Ende kommt)
& Antwort : 4D 5A 01 41 00 E9 gesendet wird
            (M  Z ...        )
und dann NICHTS mehr!

Wenn weiter irgendein Befel gegeben wird, antwortet die Steuerung immer
4D 5A 01 41 00 E9.

WAS SOLL ICH JETZT SENDEN --- damit die Steuerung mit mir weiter redet?

Danke nochmal und ... sorry für die blöde Fragen! Vielleicht es ist 
offensichtlich leicht, aber ich blicke nicht durch!

von Lambdatronic (Gast)


Lesenswert?

Hallo Tom,
sorry ist schon ziemlich lange her dass ich das gemacht habe, oben
fehlt was....

Mit "MZ..." wird jedesmal der Wechsel auf das nächste "M..." gemacht.
Wenn nur noch "MZ..." von der Heizung kommt, kannst Du mit
"M 2 <1> <1> <0> <129>"
      x01 x01 x00 x81

die Kommunikation am laufen halten indem man die Zeit/Datum abfragt.

JETZT kannst Du mit dem Doppel-Befehl "Rb..." (siehe oben) auf "M1..."
wechseln, siehe angehängtes Bild. Mann muss dann beachten dass M1 und M2
abwechselnd abgefragtr werden.
Berichte bitte ob es funktioniert.

Ich habe auch diesen Thread eröffnet -> Fröling P2 S3100 und AVR-NET-IO
Kannst ja mal nach suchen.

Grüsse aus Hessen!

von Lambdatronic (Gast)


Angehängte Dateien:

Lesenswert?

ich bin's nochmal.
sorry Bild vergessen!

von Michael M. (Gast)


Lesenswert?

Hallo zusammen
arbeite auch noch an dem Programm
ich weiß nicht genau wann ich es fertig habe da ich gerade viel 
beruflich eingespannt bin. Poste aber den Quellcode sobald ich Ihn habe.
Nochmals Danke für die vielen Informationen.

von Tom Neagu (Gast)


Lesenswert?

Hallo,
ein bisschen bin ich weiter, aber nicht viel!
Wenn die MA Sequenz zu Ende kommt (MZ...) sende ich M2 .. die S3100 
antwortet wieder mit MZ, dann habe ich versucht Rb...+ M2, die Regelung 
antwortet mit Rb...MZ ( also ist schon mindestens etwas!) und dann immer 
wieder das gleiche!
Wenn M1, oder M2 gesendet (abgefragt) wird antwortet die Regelung nur 
mit MZ.
Wenn in Kombination Rb+M1(oder+M2) kommt (s.oben) Rb...MZ und das war's.
Die Kommunikation bleibt aktiv - aber die Steuerung bleibt genauso stur!
Nochmal DANKE für die Unterstützung.
Grüß

von Lambdatronic (Gast)


Lesenswert?

Hallo Tom,

poste mal Deine Email Adresse, dann kann ich Dir mal ein
bisschen selbst erstellte Doku zumailen.

von Tom Neagu (Gast)


Lesenswert?

Hallo
es ist ganz einfach....tom.neagu@gmail.com.
So wie ich gesehen habe, es ist eigentlich nicht so wichtig die "-7" 
Anmeldung.
Wenn direkt am Anfang eine R a Frage gestellt wird (52 61 01 01 00 B5), 
es gibt ein R a... Antwort (Ra<1><\0><\0>? ), R b... Frage >>> R b... 
Antwort...und so geht es weiter bis am Ende
sprich R z... wenn die Steuerung anfängt sämtlichen Daten zu senden.

Rinigen    <\0><6>p<24>1??<\0>??

wam??????<24><15><7><28>*q~??

M???????<5><\b>?<\0>hq??u???bpl<20>??<16>?????h??-?P?EHp?JG???q?????A<\n 
>I<\0><28><7>

+stato<\0>d<\0>zen 
4<4>R??v?o???o?sSp?L<2>???w?3G?0/<\0>E?<25>p?Ffyv????hR<\b>???22?Y<23>K 
??W.?-@<\n>??%?S=??6?<18>?<5>??<\n>?A<16>I<\0><29><7><28>

ingr+avviso<\0> 
<\0>?[???t<4>$<\0>:8????6??????@@`??<16>?<3>??-???DRx<1>%????b?]????Y@AJ 
8:<6>??J?K?v????<7>??!?"??o??A<15>I<\0><\0><\0><3>

t. 
caldaia<\0>z<4>Z?R??<\b>??o??????(<1><19><7>0?<16>??$?<\f>???:??%<5>??*B 
?<29>W??k??}<3>;

??u"???Iy?e?k@<7>@?Db??<5>?]???|z!<6>@A<\f>I<\0><5><1><4>

t. 
fumi<\0>p.<\0><\0>B<11>?|??K??.A?F<19><3>b<\b><30>?t?<31>k???P?<\f>??*Q? 
?=z?????<\0><17>?n????W?O?????H<1>?  <\0> 
J?Ry<7>?z?*F?n<4>qRr?rA<16>I<\0><6><5><\r>

t. fumi SP <\0>??????<7><21>` 
#?<23>???#???<\0><23>5<16>??????Wy??]?d<\r>dG?<25>Xi?4??????@<22>gEN<16> 
3<16>W????????pP?(?R???Sg?\?A<16>I<\0><25><5><5>

reg.caldaia<\0> 
<\0>??<\r>?{?<21>[?????8<3>?<4><15>??1?qw????fn<4>G<2>\<\n><\0>W???????< 
25>!F<17>D<\b><18>/JU??|?k?g<15><16><9>?? 
@=E?M????I??<18>?A<16>I<\0><15><1>*

Die Sprache scheint eine lateinische (italienisch?) zu sein, aber es 
stört eigentlich wenig.

"stato" = Status, Zustand
"caldaia"= Kessel
"fumi"  = Rauch, Abgas...usw.

Da die Fa. Fröling aus Österreich kommt - sind die Süd-tyroler mit 
Sicherheit irgendwie mit involviert, mindestens in der Software.

 Ich könnte die ein bisschen "durch-sieben", aber leider nicht viel.
Ich glaube - die einzigen freie Daten sind die M A Parameter und was den 
Rest betrifft sollte man in eine tiefere Ebene rein.
Danke und bis Bald.

von Michael M. (Gast)


Lesenswert?

Hallo Tom
könntest du mir deinen C Code auch schicken ich würde es mir auch mal 
anschauen. Welchen Controller hast du vor zu verwenden ? Ich bin daran 
das auf dem Atemega 8 auf zu bauen und mit einem 2 Zeilen Display 
anzuzeigen.
Als Pegel Converter nehme ich den MAX232
Danke

von Tom Neagu (Gast)


Lesenswert?

Mahl Zeit Michael,
bitte , ich bräuchte Deine E-Mail Adresse - meine ist schon angezeigt 
(s. oben) - die Geschichte mit der Heizung werde ich Dir gerne erzählen.
Nichts besonderes NUR lang.
Die Fröling 3000 Turbo, S3100 Steuerung läuft seit 2008, schön & brav, 
kleine
E-Teile gewechselt, aber "im Rahmen" so zu sagen.
Es ist nicht eine P2 - sondern ich bringe direkt die "Bäume" drin!!
Ich bin oft beruflich unterwegs und es fehlt mir manchmal einfach die 
Zeit.
SG
Tom

von Markus K. (mkot)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ein gewisser "p2_im_keller" hat mich auf diesen Thread aufmerksam 
gemacht. Ich habe vor einiger Zeit schon in einem ganz anderem Forum zu 
diesem Thema meine Sourcen veröffentlicht und tue das gerne hier wieder. 
Im Anhang ist ein Zip file mit 2 Projekten "PC" ist ein simples 
Konsolen-Programm um über eine serielle Schnittstelle die Lambdatronic 
S3100 meines Fröling p2 Kessels auszulesen. Das 2. Projekt benutzt die 
selbe Softwarebasis und läuft auf einem AVR NET IO board, das es bei 
Pollin zu kaufen gibt, also auf einem AT MEGA32. Die NET_IO liest die 
Heizungsdaten über die serielle Schnittstelle und gibt Sie dann in Form 
einer Webseite über die Ehternetschnittstelle aus (basierend auf Ulrich 
Radigs Webserver) In dem ZIP file ist ausserdem eine Readme-Datei in der 
ich relativ viel über die beiden Projekte beschreibe. Also bitte 
unbedingt zuerst diese ReadMe gründlich lesen.

Nachdem ich mich hier in diesem Board selbst schon oft bedient habe, 
freue ich mich, wenn der eine oder andere vielleicht etwas mit meinen 
sourcen anfangen kann...

Markus

von Michael M. (Gast)


Lesenswert?

Da klingt ja alles echt super !
@Tom meine Mail ist:(moxel83@web.de)

von Tom Neagu (Gast)


Lesenswert?

Hallo Markus,
es ist sehr nett und hilfreich!!
DANKE für die Unterstützung.

von Lambdatronic (Gast)


Lesenswert?

@ Markus,

was ist aus dem Fröling-Forum "froeling.foren-city.de" geworden,
warum ist es nicht mehr erreichbar ?

gruss, p2_im_keller

von Markus K. (mkot)


Angehängte Dateien:

Lesenswert?

Keine Ahnung was aus dem Forum geworden ist. Ich kam plötzlich auch 
einfach nicht mehr drauf...

Im Anhang nochmal ein Projekt, das vielleicht interessant sein könnte. 
Das Projekt basiert wieder auf dem Fröling-Auslesemechanismus, den ich 
in den Projekten 2 Posts weiter oben schon verwende. Diese Projekt hier 
läuft aber auf einem AT Mega8. Es sammelt die Froeling Daten über die 
serielle Schnittstelle und stellt sie dann über das I2C Interface zur 
Verfügung (Ich sammle das dann zusammen mit anderen Daten mit einem 
ATMEGA32 als I2C Master auf). Mit etwas Codeänderung kann man die Daten 
aber auch leicht auf einem LCD anstelle des I2C Interfaces darstellen...

Gruß
Markus

von wolf (Gast)


Lesenswert?

Hallo,

super Informationen in diesem Exchange! Endlich sehe ich Licht am Ende 
des Ansteuerungstunnels.

Zwei Fragen dazu:
1.) Bedeutet P2 Kessel, dass ich eine Lambdatronic 3100 Steuerung habe?
2.) Welche Pegel verwendet diese?
Ich sehe vier Kontakte: GND, TxD, RxD und US+
Ich nehme an, letztere ist eine Spannungsversorgung. Zwischen US+ und 
GND messe ich aber 13V!
Welche Pegel haben TxD, RxD?

Danke!

von Lambdatronic (Gast)


Lesenswert?

TxD und RxD haben RS232-Pegel, d.h. passenden Treiber MAX232 für TTL 
benutzen.
Ich habe einen P2 und der hat die Lambdatronic 3100.
Ich meine ab dem P4 ist es die Lamnbdatronic 3200, die hat ein anderes
Protokoll, gibt es aber auch Infos zu.

von wolf (Gast)


Lesenswert?

Danke für den Tip. RS 232 habe ich nachgelesen hat Potentiale zwischen 
+3V und +12V.
Ich möchte die Überwachung mit einem Raspberry Pi realisieren. Der hat 
3,3 V. So muss ich wohl in 2 Stufen arbeiten, zuerst um mit dem Max 232 
um auf 5V zu kommen, dann mit dem bob 11978
https://www.sparkfun.com/products/11978
Den habe ich bereits zwischen Pi und Arduino (5V) erfolgreich im 
Einsatz.

Übrigens habe ich mit dem Pi schon 2 nette Überwachungen laufen:
1. Ich polle den Störkontakt und weiss somit über Störungen bescheid und 
kann eine Notification absetzen (ist offensichtlich).
2. Ich habe in den Saugzugmotor der Raumaustragung ein Relais eingebaut. 
Damit habe ich auch hier einen potentialfreien Kontakt. Den frage ich im 
Sekundentakt ab & kenne somit die Motorlaufzeiten (Entprellungslogik in 
der Software ist wichtig).

Daraus kann man einiges an Infos ableiten:
a) Verstopfte/Leere Düsen erkennen
Bei mir braucht der Tagestank ca. 4 min bis er befüllt ist (falls er 
leer war). Ist nach 8 min saugen der Tagestank noch nicht voll so wird 
zur nächsten Düse gewechselt. Ich sehe im Protokoll ob eine Düse 
leer/verlegt ist! Nämlich immer dann wenn die Maximalzeit erreicht ist. 
Meines Wissens kann ich per direktauslesen nicht an diese Info kommen.
Die 8 min habe ich übrigens selbst eingestellt. Früher waren es 15 min. 
Ist eine Düse leer/verstopft so steigt der Stromverbrauch eklatant. Weil 
nämlich nach jedem 10. saugen der Motor 15min leer durchlauft. (Jede 
Düse wird 5x benutzt, dann wird zur nächsten gewechselt damit die 
Tankentleerung regelmässig erfolgt, ausser das nachladen Tagestank war 
nicht erfolgreich dann wird gleich weitergeschaltet).

b) Natürlich erkenne ich auch den ungefähren Tagesverbrauch daraus (1 
min saugen entspricht (bei mir) ca. 25% Tagestankverbrauch).

Aber nun geht es trotzdem an die Direktauslesung :-)

von Markus K. (mkot)


Lesenswert?

Wg. RS232:

Schau Dir mal den MAX3232 Baustein an. Der kann von 3.0 V bis 5.5 V 
wandeln.

Gruß
Markus

von wolf (Gast)


Lesenswert?

> Schau Dir mal den MAX3232 Baustein an.
Super Tip & da habe ich auf der TI Seite folgendes gefunden:

Recommended Alternative Parts:
    TRS3232E  -  The device has the SAME FUNCTIONALITY/PINOUT as the 
compared device but includes enhanced IEC61000-4-2 ESD Protection.
(Quelle: http://www.ti.com/product/max3232)

also:
http://www.ti.com/product/trs3232e&lpos=See_Also_Container&lid=Alternative_Devices


Das scheint der Baustein meiner Wahl zu sein, fragt sich nur noch wo ich 
ihn beziehen kann.

lg, wolf

von Stefan (Gast)


Lesenswert?

Hallo wolf,
wie hast du das mit dem raspberry pi realisiert? bist du schon weiter 
gekommen?
hast du vielleicht ein beispiel für mich/uns?

vielen dank!

grüße
Stefan

von Jan S. (Gast)


Lesenswert?

Hallo Markus,

vielen Dank für deine PC-Software zum Auslesen der Steuerung P3100. Die 
übersetzte Binärdatei läuft unter Windows ja wunderbar. Allerdings würde 
ich das Ganze gerne auf auf eine Linux-PC bzw. auf einem Raspberry Pi 
mit Raspbian laufen lassen.

Doch leider bin ich nicht in der Lage, die Datei froeling_test.c zu 
übersetzen, obwohl ich ReadMe.txt (betrifft wohl im wesentlichen das 
AVR NET IO board) aufmerksam gelesen und versucht habe, einige 
Anpassungen vorzunehmen.

z.B.

in Makefile:
Pfad des Compilers
Namen der Binärdatei

in froeling_test.c:
#define LINUX statt #define WINDOWS
Backslash durch Slash
#include <curses.h> statt #include <conio.h>
#include <windows.h> in Kommentare gesetzt
int hCom; statt HANDLE hCom;

erste  Fehlermeldung:
froeling_test_linux.c:461:17: error: storage size of ‘options’ isn’t 
known

Vielleicht weisst du oder jemand anders hier, wie ich den Quelltext des 
Konsolenprogrames ändern muss, damit ich ihn auf einem Linux-PC bzw. 
einem Raspberry Pi übersetzten und nutzen kann.

Danke, Jan

P.S.: Man könnte dein Windowsbinary natürlich mit wine laufen lassen, 
aber aufgrund des ARM-Prozessors wird das auf dem Raspberry Pi natürlich 
nicht klappen.

von Markus K. (mkot)


Angehängte Dateien:

Lesenswert?

Hallo Jan,

freut mich, dass noch wer meine Software gebrauchen kann.
Die Implementierung der Codeteile mit dem LINUX Compilerswitch ist 
tatsächlich total unvollständig, da ich das nie gebraucht habe. Ich habe 
alles auf Win ausprogrammiert und dann auf den AVR portiert...

Um das Ganze auf Linux zum Laufen zu bringen muss man einiges umstellen, 
manches hast Du eh schon entdeckt:
- Im make den richtigen compiler aktivieren
TOOL = /usr/bin/
- In den Quellen den Linux Compiler-Switch einschalten und Windows 
ausschalten:
//#define WINDOWS
#define LINUX

Und jetzt halt noch alles das unter Linux ausprogrammieren was ich noch 
nicht gemacht habe ;-):

- Die Unterschiede zwischen Linux und Win liegen hauptsächslich im 
Hardwarezugriff, also alles was die serielle Schnittstelle betrifft wird 
etwas unterschiedlich programmiert, und in der Bilschrirmausgabe, also 
z.B. das Hin- und Herspringen auf dem Bildschirm mit GotoXY() usw.

Ich habe die froeling_test.c mal soweit angepasst, dass man sie unter 
Ubuntu14 übersetzten und das binary starten kann (Siehe Anhang). Ich 
habe nicht getestet, ob ein Kommuikationsaufbau mit dem Brenner 
funktioniert, da meine Fröhling anderweitig verkabelt ist... Außerdem 
hab ich einiges deaktiviert (siehe alle //todo Kommentierungen im 
Quelltext)
Es gibt also noch Einiges zu tun, aber für dich mal als Einstiegshilfe 
ist dieses Programm zumindest schon mal übersetzbar und eigentlich 
sollte die Kommunikation auch klappen. Auskommentiert ist vor allem die 
strukturierte Bildschirmausgabe, d.h. wenn das Programm mal läuft, wird 
er die Werte irgendwie wirr auf der Konsole rausgeben. Ausserdem hab ich 
das 2. File "print_log.c" komplett rausgenommen (ist im make 
auskommentiert und wird nicht mal mehr übersetzt und gelinkt) Die Teile 
darin sind aber sowieso nur da um die Kommunikationsdaten in ein 
Log-File auf der Festplatte zu schreiben - ich denke das brauchst Du im 
Moment eh nicht.

Wie gesagt, noch viel zu tun, aber vielleicht konnte ich Dir beim Start 
ein bisschen weiterhelfen

Schöne Grüße
Markus

von Jan S. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Markus,

erst einmal recht herzlichen Dank für die Linuxversion. Sie lässt sich 
problemlos auch unter OpenSuSE 10.1 und 12.3 sowie Raspbian übersetzen 
und ist damit wirklich eine gute Einstiegshilfe.

Ich habe noch einiges daran herumgeschraubt, z.B. die Bildschirmausgabe 
(ohne ncurses, da müsste ich mich erst richtig einarbeiten) und die 
Ausgabe in eine tägliche Datei, um die Daten extern mittels 
Shellkommandos in eine MySQL-Datenbank zu integrieren.
Ich hänge den aktuellen Stand hier an. Bitte habt Nachsehen. Lang ists 
her, dass ich in C programmiert habe. Es wird wohl keinen Preis Eleganz 
geben.

Aber eine kuriose Sache möchte ich noch erwähnen. Die Kommunikation mit 
der Heizung klappt oft erst nach vielen Anläufen. Entweder reagiert die 
Heizung gar nicht auf Send_Msg("Ra") oder sie hört nach etwa 20 Zeilen 
auf, Daten zu senden. Aber wenn die Heizung mal Daten liefert, dann ohne 
Ende und ohne den kleinsten Fehler.
Ich hielt das anfangs für einen Hardwarefehler (uralt Notebook unter 
OpeSuSE 10.1), aber ich habe dieses Verhalten nicht beobachtet, wenn ich 
das Windwosbinary mittels wine unter Linux ausführe.
Ich habe recht planlos an den ganzen Optionen der OpenComPort-Funktion 
gedreht. Ohne Erfolg. Vielleicht gibt es hier jemand, der eine Idee hat, 
woran das liegen kann.
Zwei Fragmente der Bildschirmausgabe von strace findet man im Anhang, 
aus denen ersichtlich wird, dass beim Lesen von der seriellen 
Schnittstelle nichts mehr ankommt (Abbruch jeweils mittels CTRL-C).
Wenn ich einen USB-Seriell-Konverter habe, werde ich das natrülich auch 
am Raspberry Pi ausprobieren und hoffe, dass es eben doch ein 
Hardwareproblem meines uralt Laptops ist.

Fernziel ist es, irgendwann ein System wie hier 
http://bashy.homepage.t-online.de/status.html zu basteln. Falls ich das 
jemals schaffen sollte, melde ich mich wieder hier.

Schöne Grüße und vielen Dank,
Jan

von Markus K. (mkot)


Lesenswert?

Hallo Jan,

na also - klappt doch. Das mit Deinen Kommunikationsproblemen kann ich 
auch nicht erklären. Muss wohl irgend ein Timeoutproblem sein. Aber 
schwer zu sagen. Wie gesagt, meine AVR-NetIO läuft seit mittlerweile 3 
Jahren problemlos, und das völlig ohne Betriebssystem, direkt auf einem 
ATmega 8 Microcontroller. Die Comport Parameter sind 8N1 also 8Bit, 
NoParity, 1 Stopbit, und das Ganze mit 9600 Baud.

Übrigens braucht man für den Raspberry nicht unbedingt einen USB 
converter (Die Dinger haben mir schon oft Ärger gemacht) Der Raspberry 
beinhaltet einen UART onboard:

http://lavalink.com/2012/03/raspberry-pi-serial-interfacing/

Die Pegel auf dieser Schnittstelle sind allerdings nur TTL also +5V. Für 
die Anbindung an die Fröhling benötigt man RS232 Pegel mit +/-12 Volt 
das geht aber einfach mit einem MAX232 Chip, entweder selbst entwerfen 
oder z.B. hier ein Modul bestellen:

http://www.pollin.de/shop/dt/MzY5OTgxOTk-/Bausaetze_Module/Bausaetze/Bausatz_RS232_TTL_Wandler.html

Wie gesagt: Vorteil ist der onboard USART macht normalerweise nie 
Probleme.

Schöne Grüße
Markus

von Johann Streitwieser (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Markus,

danke für das Programm und die Mühe die Kommunikationsparameter zu 
bestimmen.

Hallo Jan,

hatte das gleiche Problem. Genauere Analysen zeigten, dass manchmal ein 
Byte nicht übtertragen wurde (meißt das Byte für die Länge der 
Kommunikation).
Habe mit den UART-Parametern experimentiert.
Ich sichere die originalen Parameter und setzt die benötigten Parameter 
direkt (siehe Sourcecode), dadurch läuft nun das Programm bei mir unter 
Kubuntu 14.04 und auf dem Raspberry PI (mit einem USB FTDI Adapter 
->/dev/ttyUSB0) ohne Probleme.

Gruß,
Hans

von Jan S. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo an alle,

bei mir läuft, aus welchen Gründen auch immer, das Programm nun auch 
stabil. Um das Ganze auch sinnvoll zugänglich zu machen, habe noch ein 
"webinterface" eingebaut.

Wen es interessiert, kann sich das Archiv herunterladen und den 
screenshot bzw. die README Datei ansehen.

LG, Jan

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Hallo ich versuche gerade Daten die ich von der Heizung bekommen auf ein 
LCD zu schreiben. 2*16 Zeichen. Dazu verwende ich die Routine von Ulrich 
Radig.
Nur jetzt habe ich ein Probelm ich habe in einem Array die Zahlen und 
weis nicht genau wie ich die am besten aneinander reihen kann und 
umwandeln um später auf dem LCD zB. "16:05:03 Uhr" zu haben. Wie groß 
muss ich den String definieren ?

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen jetzt habe ich nach fast 2 Jahren meine Heizungsanzeige 
am laufen. Die Daten werden auf einem 2*16 LCD angezeigt und mit zwei 
Tastern lässt sich durchblättern. Drei weitere LEDs dienen um schnell 
einen Überblick über den Zustand der Heizung zu haben. Desweitern können 
die Daten Problemlos überall über eine Webpage abgerufen werden. Ich 
habe evtl. noch vor einer Erweiterung mit Datenspeicherung auf SD Karte 
oder ein Wochendiagramm auf der Webpage aber das dauert noch. Als 
Grundlage dient das AVR NET IO Board.
Und noch vielen DANK an alle Leute die mir geholfen haben oder einen 
Quellcode zur Verfügung gestellt haben. DANKE

von Marcus K. (alzeck)


Lesenswert?

Hallo und sorry dass ich diesen alten Thread wieder herauskrame, aber 
ich bin derzeit ebenfalls brennend daran interessiert, die Daten meiner 
S3100 auszulesen. Ich bin eher aus der Informatik-Ecke, sollte also mit 
der Programmierung weniger Probleme haben, dafür aber leider mit der 
Elektronik... also bitte entschuldigt die Anfängerfragen.

Benötige ich denn unbedingt das im Thread benannte MAX232-Modul oder 
kann ich auch direkt mit z.B. einem Raspberry Pi, einem Arduino oder 
auch mit einem PC an die serielle Schnittstelle der S3100 gehen?
Habe ich der Anleitung für Servicetechniker richtig entnommen, dass die 
serielle Schnittstelle irgendwo auf der unteren Platine sitzt? Hatte 
leider noch keine Zeit, mir die Steuerung von innen anzusehen. Kommt man 
denn dort problemlos dran um die Verbindung herzustellen? Und sollte man 
beim Anschließen irgendetwas beachten, z.B. Heizung vorher stromlos 
machen o.ä.? Habe ein wenig Angst irgendwas kaputt zu machen...

Vielen Dank für eure Hilfe... ist übrigens ein super Forum hier! :-)

von Lambdatronic (Gast)


Lesenswert?

der P2-Kassel hat eine echte RS232-Schnittstelle, also bitte 
Pegelwandler
verwenden.
Der Anschlussstecker sitzt auf der grossem Hauptplatine, von vorne
gesehen rechts. Er ist auch mit Rx und Tx beschriftet.

von Jan S. (malkur)


Lesenswert?

Hallo Markus,

die Steuerung Lambdatronic S3100 gehört doch zum Fröling P4, oder? Die 
wird anders (viel einfacher) angesteuert als die P3100.
Wenn du den P4 mit einem USB-seriell Adapter o.ä. an einen Raspberry Pi 
anschließt, schreibt die P4 die Daten einfach in /dev/tty<irgendetwas>, 
die sich dann mit cat o.ä. auslesen lassen. Aber 100%-ig sicher bin ich 
mit nicht, da ich einen P2 mit P3100 habe. Sie doch mal hier nach:

http://bashy.homepage.t-online.de/status.html

Unter "howto" findest du vielleicht ein paar hilfreiche Infos.

Gruß, Jan

von Marcus K. (alzeck)


Lesenswert?

Hallo Jan, es handelt sich um einen Fröling Holzvergaser FHG 3000 mit 
Steuerung S3100, ca. 10 Jahre alt. Ich dachte um die S3100 geht es auch 
im obigen Thread?
EDIT:
Habe mir deinen Link mal angeschaut, dort wird ja mit einem Prolific 
USB-Serial-Adapter gearbeitet. Ich weiß aber nicht genau, ob so ein 
Adapter das Signal ähnlich wie der MAX232 umshifted. Ich möchte gern mit 
einem Mikrocontroller an die S3100, der definitiv nur 5V bzw. 3.3V 
verträgt. Also gibt denn die S3100 nun ein einfaches TTL-Signal aus oder 
ist es tatsächlich ein ECHTES RS232-Signal? Kann dazu jemand eine 
definitive Aussage treffen?

Viele Grüße
Marcus

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Lambdatronic schrieb:
> der P2-Kassel hat eine echte RS232-Schnittstelle, also bitte
> Pegelwandler verwenden.

Insbesondere, da die Max232 nicht nur Pegelwandler sind, sondern das 
Signal auch noch invertieren.

von Michael M (Gast)


Lesenswert?

Hallo Marcus ich habe das ganze mit dem AVR NET IO umgestetzt hier war 
wirklich nicht mehr viel zu tun, ausser die Software anzupassen. 
Quellcode habe ich weiter oben mal gepostet. Bei mir läuft die Anwendung 
seit einem Jahr ohne Probleme. Ich kann jetzt die Kesseldaten an allen 
Browser fähigen Geräten abrufen. (Handy, TV, Laptop) Als direkte Anzeige 
an der Platine reicht mir ein 2*16Zeilen Display und zwei Taster mit 
denen ich durchschalten kann. Zusätzlich habe ich noch 3 LEDs dran um 
die Zustände direkt anzuzeigen.

Grüße

von Marcus K. (alzeck)


Lesenswert?

Hallo zusammen,
ich bräuchte noch einmal eure Hilfe beim Auslesen der Daten von meiner 
Lambdatronic P1000. Ich habe das hier gepostete Programm für den ESP8266 
portiert, ein kleiner Mikrocontroller mit integriertem Wifi und 
TCP/IP-Stack. Der µC gibt ein sauberes "Ra" auf der TTL-Schnittstelle 
aus, welches ich auch am Laptop empfangen kann, wenn ich direkt per TTL 
an den µC gehe. Allerdings habe ich zur Verbindung mit dem Heizkessel 
dem µC ein MAX3232 (ESP8266 arbeitet mit 3.3V) nachgeschaltet, um ein 
RS232-Signal zu erhalten. Das konnte ich auch schonmal sauber am PC 
empfangen, allerdings hab ich beim Anschluss an die Heizung keine Daten 
von dieser erhalten.
Beim erneuten Anschließen am PC kam über den MAX3232 nur noch 
Kauderwelsch am Laptop (über einen USB-RS232-Adapter) an. Ich weiß 
leider nicht mehr genau, wie ich es anschlossen hatte, als ich ein 
sauberes Signal bekam. Ich habe schon verschiedene Spannungsquellen 
versucht (externes Netzteil, USB am Laptop), dies hatte jedoch keinen 
Erfolg.
Habt ihr noch eine Idee, warum kein sauberes Signal (mehr) vom MAX3232 
kommt? Wenn ich das Signal direkt am ESP8266 über TTL abgreife, sehe ich 
nachwievor das "Ra".
Vielen Dank für eure Hilfe!

von Marcus K. (alzeck)


Lesenswert?

Hallo noch einmal,

bitte entschuldigt meinen letzten Beitrag, der war vermutlich wenig 
aussagekräftig um irgendwelche Fehlerdiagnosen zu stellen. Dieses 
Problem konnte ich mittlerweile zum Glück selbst lösen, meine ESP8266 
"spricht" nun anstandslos über RS232 mit meinem PC.

Leider funktioniert die Kommunikation mit der Fröling immer noch nicht, 
aber ich konnte das Problem vermutlich schon eingrenzen - stehe aber 
trotzdem gerade noch auf dem Schlauch.
Ich habe testweise die PC-Version der FroelingSoftware zur Ermittlung 
der Parameter laufen lassen und an einem anderen COM-Port dessen Ausgabe 
analysiert. Im seriellen Monitor taucht dabei ein String in der Art 
"Raящ®" auf, was sicherlich dem HEX-Code "52 61 03 00 ff f9 02 ae" 
entsprechen sollte, denn dieser taucht auch im Log des PC-Programms auf 
und damit klappt auch die Kommunikation mit der Froeling problemlos, es 
werden alle Parameter korrekt angezeigt, wenn mit dem Heizkessel 
verbunden.

Nun war ich der Meinung, dass mein ESP8266 als ersten Befehl ja auch 
diesen String "Raящ®" über die serielle Schnittstelle schicken müsste, 
da der entsprechende Teil im Quellcode ja mit dem der PC-Version 
übereinstimmt. Also schloss ich es einfach per USB-RS232-Adapter am 
Laptop an und lauschte auf dem entsprechenden COM-Port. Dort kam jedoch 
nur ein "Ra" und eine Art Zeilenvorschubzeichen an. Ich konnte durch 
Probieren schon herausfinden, dass es irgendwie mit den HEX-Werten 0x03 
(ETX) und 0x02 (STX) in der Ra-Message zusammenhängt, denn wenn ich 
diese testweise einfach im Code des ESP8266 weg lasse, kommt zumindest 
etwas wie "Raящ®" auf dem COM-Port an, also im Grunde die komplette 
Nachricht wie auch beim PC-Programm, nur ohne die von mir absichtlich 
entfernte 02 und 03 (3. und 7. Byte).
Ich verstehe leider nicht, warum die Nachricht vom ESP8266 scheinbar 
abgeschitten wird, obwohl sie ja im Quellcode auf die selbe Art und 
Weise wie in der PC-Version generiert wird. Ein Hardware-Problem 
schließe ich aus, da ich es schon sowohl über die RS232-Schnittstelle 
als auch direkt vom TTL des ESP8266 untersucht habe, und das ganze 
sowohl mit dem HardwareSerial des µC als auch mit der 
SoftwareSerial-Variante, das Ergebnis ist immer der gleiche 
abgeschnittene Ra-String auf dem COM-Port.

Liegt das Problem vielleicht in der Nutzung der 
Arduino-ESP8266-Bibliotheken, haben diese vieleicht ein Problem mit den 
HEX-Werten 0x02 und 0x03? Wie gesagt, wenn ich diese beiden weglasse, 
kommt zumindest der Rest der Nachricht komplett an. Ich habe den 
gesamten Teil des Quellcodes aus der originalen froeling_com.c, welcher 
mit der UART-Kommunikation zusammenhängt, weggelassen, und nutze 
einfache die HardwareSerial bzw. SoftwareSerial-Funktionen aus den 
Arduino-ESP8266-Libraries für die serielle Kommunikation.

Sorry wenn das hier möglicherweise eine absolute Anfängerfrage ist, aber 
ich habe leider nich nicht so viel Erfahrung mit Mikrocontrollern und 
komme hier einfach nicht weiter. Ich bin nun aber schon so weit gekommen 
und möchte nicht kurz vor dem Ziel aufgeben. Daher wäre ich für jede 
Hilfe dankbar!

Viele Grüße
Marcus

von Marcus K. (alzeck)


Lesenswert?

Okay, das Problem hat sich soeben geklärt! Irgendwie wurden die Bytes 
für die User-ID nicht korrekt gesetzt. Habe diese jetzt hart 
reingeklopft und nun funktioniert es! Empfange Daten der Heizung per 
WLAN!

von Marcus K. (alzeck)


Lesenswert?

Hallo nochmal,
weiß zufällig jemand von euch, ob man den "US+"-Pin auf dem 
Fröling-Board am Anschluss für die Bedienerweiterung als Spannungsquelle 
für kleine Verbraucher nutzen könnte? Würde dort gern für mein kleines 
Board über einen nachgeschalteten Spannungsregler 5V mit einem Strom von 
max. 200-300 mA abgreifen, um möglichst auf ein externes Netzteil 
verzichten zu können. Ist das zuviel für den Anschluss am Board oder 
hält er das aus?

Danke für eure Hilfe!

von Robert (Gast)


Lesenswert?

Hallo,
erstmal vielen, vielen Dank für die Beiträge aus diesem Forum!
Mithilfe der Dateien des Zips 
"froeling_p3100_logger_auf_raspberry_pi.zip" konnte ich bei mir auf 
einem Raspberry Pi 3 die Visualisierungssoftware für eine Fröling P2 zum 
Laufen bekommen.
Vielleicht noch ein paar Hinweise an Leute die das Gleiche vorhaben.
Ich hab mir den seriellen Adapter (RS232 Erweiterungs-Platine für den 
Raspberry Pi) besorgt. Damit man diesen ans Laufen bekommt muss man den 
Adapter "ttyAMA0" aus der Datei "/boot/cmdline.txt" entfernen. 
Zusätzlich muss man Bluetooth deaktivieren weil dieses auf den gleichen 
GPIOs liegt. Dazu in der Datei "/boot/config.txt" am Ende diese Zeile 
hinzufügen: "dtoverlay=pi3-disable-bt".
Im Zip ist die Datei "froeling_p3100_logger.c" enthalten. Dort musste 
ich auch ein paar Veränderungen vornehmen. Zum einen musste ich in der 
Liste der ComPorts die serielle Schnittstelle "/dev/ttyAMA0" hinzufügen, 
zum anderen hab ich festgestellt dass bei mir die Indizes anders sind 
wie im File. Z.B. ist die "Puffert.ob" auf Index 13 und ich musste die 
Anpassungen (svalue = svalue / 2.0) für die einzelnen Indizes verändern. 
Das Anpassen der Einträge musste ich ebenfalls noch in der "Status.sh" 
nachziehen.

von Stefan S. (stefan_s917)


Angehängte Dateien:

Lesenswert?

Hallo!
Auch von meiner Seite mal vielen Dank an die Hinweise in diesem Forum!
Ich habe fast die gleichen Voraussetzungen wie Robert (Lambdatronic 
S3100 und Raspi2 als Mikrocontroler). Daher habe ich mich motivieren 
lassen, auch meine Daten auszulesen. Mein Endziel wäre die Daten an Fhem 
zu schicken.
Ich bin zwar technisch versiert, stehe jetzt aber leider schon an.
Was ich erledigt habe:
- Kabel von Kessel zu Mikrocomputer gelegt.
An der Lambdatronic ist an diesem Port bisher mein Raumbediengerät 
gewesen. Ich weiß nicht, ob ich daher in der Lambdatronic etwas 
umstellen muss?
- Ich habe am Raspi eine RS232 Erweiterung angeschafft.
Muss ich dann noch einen Pegelwandler einsetzen oder passt das dann 
schon zusammen?
- Obige Punkte von Robert habe ich ausgeführt (den ttyAMA0 Adapter habe 
ich hinzugefügt, kompiliert und ausgewählt.

Mein Problem ist, dass wenn ich den Befehl ausführe nur der Ra Befehl 
geschickt wird und nichts weiter...

Es würde mich sehr freuen, wenn mir mit meinem Problem jemand helfen 
könnte.

LG
Stefan

von Lambdatronic (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Stefan,
meines Wissens muss man an der Heizung nix umstellen.
Ich habe letzten Donnerstag ein neues Bedienteil bekommen.
Der Servicetechniker hat sich auch mit der Fröling-SW einfach an
die Bedienerweiterung "gestöpselt" und ausgelesen.

Ich habe nun die Version v24.20 (vorher v24.17) und es kommt
mir so vor, dass der M1-String von der Lambdatronic jetzt etwas anders 
ist.
Hat jemand ähnliches festgestellt oder kann mal zeigen
an welcher Stelle man welche Werte im String findet ?

Ich habe mal angehängt wie es bei v24.17 bisher war.

Gruss aus Hessen

von Lambdatronic (Gast)


Lesenswert?

Problem gefunden:
vor der Aussentemperatur liegt der Wert "Puffer Pu.".
Konnte ich erst im P2-Menü sehen als ich auf SERVICE umschaltete.
Für was der Wert ist oder ob beim Einbau der neuen Bedienplatine ein
Parameter nicht so eingestellt wurde wie vorher kann ich nicht sagen.
Am Montag kommt ein Fröling-Techniker, da werde ich der Sache mal auf 
den Grund gehen.

von Lambdatronic (Gast)


Lesenswert?

"Puffer Pu." ist der Wert mit dem die Pufferladepumpe
(auf der Frontplatte die LED "Pumpe 2) angesteuert wird.
Im Menü von 0...100%

von Thomas A. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo und vielen Dank für die tollen Einträge. Mit der Datei 
froeling_p3100_logger_auf_raspberry_pi.zip ist es mir auch gelungen die 
Heizungsdaten dauerhaft auszulesen. USB-dongle (Manhattan)mit RS232.
Meine Ergänzung ist in der Anlage enthalten: ein Alarm der eine E-mail 
absendet sobald ein Grenzwert erreicht ist (frei wählbar aus 
actual_data, das Einlesen der Messdaten in eine rrd-Datenbank und das 
Füllen von Grafikdateien auf Basis dieser Datenbank, Vollbackup. Lange 
nicht so schön wie bei bashy, aber ich habe was gelernt und es 
funktioniert.

Vielleicht kann das euch auch weiterhelfen.

von Daniel L. (Gast)


Lesenswert?

Markus K. schrieb:
> Hallo zusammen,
>
> ein gewisser "p2_im_keller" hat mich auf diesen Thread aufmerksam
> gemacht. Ich habe vor einiger Zeit schon in einem ganz anderem Forum zu
> diesem Thema meine Sourcen veröffentlicht und tue das gerne hier wieder.
> Im Anhang ist ein Zip file mit 2 Projekten "PC" ist ein simples
> Konsolen-Programm um über eine serielle Schnittstelle die Lambdatronic
> S3100 meines Fröling p2 Kessels auszulesen. Das 2. Projekt benutzt die
> selbe Softwarebasis und läuft auf einem AVR NET IO board, das es bei
> Pollin zu kaufen gibt, also auf einem AT MEGA32. Die NET_IO liest die
> Heizungsdaten über die serielle Schnittstelle und gibt Sie dann in Form
> einer Webseite über die Ehternetschnittstelle aus (basierend auf Ulrich
> Radigs Webserver) In dem ZIP file ist ausserdem eine Readme-Datei in der
> ich relativ viel über die beiden Projekte beschreibe. Also bitte
> unbedingt zuerst diese ReadMe gründlich lesen.
>
> Nachdem ich mich hier in diesem Board selbst schon oft bedient habe,
> freue ich mich, wenn der eine oder andere vielleicht etwas mit meinen
> sourcen anfangen kann...
>
> Markus


Hallo bin neu hier,

bin durch Zufall auf das Forum gestoßen, weil ich vorhabe meine 
Holzvergasser Heizung mit der S3100 Lambdatronic mit dem AVR-NETO 
auszulesen. Habe mir das Programm auf meinem NETIO gebrannt und 
angepasst für die Webpage. ( Markus vielen Dank dafür ). Das 
funktioniert auch alles, nur werden ein paar Werte in der Webpage falsch 
dargestellt. Wenn ich diese Werte durch 2 Teile, dann passt der Wert mit 
der Heizung überein.

Jetzt meine Frage: Wo sind die Variablen für die Einzelnen Werte, damit 
ich mit diesen arbeiten, bzw rechnen kann.

Wenn mir da einer weiterhelfen könnte wäre super, und würde mir 
wahnsinnig helfen.

Vielen Dank schon mal.

MFG Daniel

PS: Kann keine Dateien anhängen: Software ist die von Markus mit dem 
Namen FroelingSoftware.zip

von Daniel L. (bmwler2008)


Lesenswert?

Hallo bin neu hier,

bin durch Zufall auf das Forum gestoßen, weil ich vorhabe meine
Holzvergasser Heizung mit der S3100 Lambdatronic mit dem AVR-NETO
auszulesen. Habe mir das Programm von Markus K. auf meinem NETIO 
gebrannt und
angepasst für die Webpage. ( Markus vielen Dank dafür ). Das
funktioniert auch alles, nur werden ein paar Werte in der Webpage falsch
dargestellt. Wenn ich diese Werte durch 2 Teile, dann passt der Wert mit
der Heizung überein.

Jetzt meine Frage: Wo sind die Variablen für die Einzelnen Werte, damit
ich mit diesen arbeiten, bzw rechnen kann.

Wenn mir da einer weiterhelfen könnte wäre super, und würde mir
wahnsinnig helfen.

Vielen Dank schon mal.

MFG Daniel

PS: : Software ist die von Markus mit dem
Namen FroelingSoftware.zip aus folgendem Thread:

Beitrag "Fröling Heizungssteuerung auslesen."

von Lambdatronic (Gast)


Lesenswert?

Hallo Daniel,

hast weiter oben das Bild <M1_String.jpg> gesehen?
Dort habe ich alle Werte und Ihren "Faktor" eingetragen.

von Markus K. (Gast)


Lesenswert?

Hallo Daniel,

das scalieren der Rohdaten geschieht in diesem Beispiel in der Datei 
froeling_com.c ab der Zeile 201. Da heißt es:

// scale some values
switch(i){
  case 4:
  case 12:
  case 13:
  case 14:
  case 15:
  case 16:
  case 17:
  case 18:
  case 22:{sValue = sValue >> 1;break;}
  case 11:{sValue = sValue / 207;break;}
}

Heißt, dass die Prozesswerte 4,12,13... bis 22 um ein bit nach rechts 
verschoben werden (sValue >> 1) was einer Division durch 2 entspricht. 
Der Prozesswert Nr 11 wird durch 207 geteilt (sValue / 207)

Hier könntest Du Deine Prozesswerte, die noch nicht stimmen auch mit 
aufnehmen.

Danach musst Du natürlich no compilieren und ein neuer HEX file 
erstellen.

Schönen Gruß
Markus

von Daniel Lang (Gast)


Lesenswert?

Markus K. schrieb:
> Hallo Daniel,
>
> das scalieren der Rohdaten geschieht in diesem Beispiel in der Datei
> froeling_com.c ab der Zeile 201. Da heißt es:
>
> // scale some values
> switch(i){
>   case 4:
>   case 12:
>   case 13:
>   case 14:
>   case 15:
>   case 16:
>   case 17:
>   case 18:
>   case 22:{sValue = sValue >> 1;break;}
>   case 11:{sValue = sValue / 207;break;}
> }
>
> Heißt, dass die Prozesswerte 4,12,13... bis 22 um ein bit nach rechts
> verschoben werden (sValue >> 1) was einer Division durch 2 entspricht.
> Der Prozesswert Nr 11 wird durch 207 geteilt (sValue / 207)
>
> Hier könntest Du Deine Prozesswerte, die noch nicht stimmen auch mit
> aufnehmen.
>
> Danach musst Du natürlich no compilieren und ein neuer HEX file
> erstellen.
>
> Schönen Gruß
> Markus



Guten morgen Markus,

super, vielen Dank, hab das gestern gleich noch ausprobiert und meine 
Daten richtig skaliert. Funktioniert einwandfrei.

Danke dir nochmal für deine Mühe für das Programm, das ist genau das was 
ich wollte ;-).

MFG Daniel

von Philipp S. (astrograph)


Lesenswert?

Hallo miteinander,

Wir haben einen Fröling Kessel mit der P3100 Steuerung, seit ca. einem 
Jahr läuft ein Raspberry Pi, der die Kesseldaten ausliest.

Das Programm, das ich dazu nutze ist das C Programm von mkot, in der 
Version von Jan S. (siehe Beitrag #3964290)

Anlass für die Überwachung war die Überprüfung auf Handlungsbedarf, 
insbesondere wenn beim Pelletskessel die Tür aufgedrückt wird, da die 
Aschebox voll ist, und man nicht auf die Rückmeldung warten will, dass 
es irgendwo in unserer Reihenhausanlage kalt wird.

Also gibt es ein Bash Skript, das ständig läuft und den Status 
überprüft, und mir entsprechende e-mails schickt. Im Laufe der Zeit, 
durch Überwachung des Displays mittels dem Tool "motion" und einer auf 
das Display gerichteten Kamera und mithilfe des Sourcecodes in diesem 
Thread Konnte ich folgende Zuordnung zwischen Statusmeldung am Display 
und Statuscodes machen:

Die erste Zahl ist wohl die Betriebsart:

0.0 Winterbetrieb
2.0 Übergangsbetrieb
6.0 Ausgeschaltet

ich vermute, das sind die übrigen Betriebsarten:

1.0 Sommerbetrieb
3.0 Scheitholzbetrieb
4.0 Reinigen
5.0 Kaminfeger

Die zweite Zahl ist der Betriebszustand:

Hier die Werte, die ich selbst ermitteln konnte:

1.0 Brenner Aus
2.0 Anheizen
3.0 Heizen
9.0 Zünden
11.0 Abst. Warten 1
13.0 Abst. Warten 2

vermutlich sind das weitere Betriebszustände:

7.0 Vorbereitung
8.0 Vorwärmphase
12.0 Abst. Einschub 1
13.0 Abst. Einschub 2
15.0 Abreinigen

In der Praxis sehen die drei Status dann z.B. so aus:

6.0-1.0-1.0;Ausgeschaltet - Brenner aus
6.0-1.0-3.0;Ausgeschaltet - Brenner aus
6.0-1.0-9.0;Ausgeschaltet - Brenner aus
6.0-1.0-3.0;Ausgeschaltet - Brenner aus
6.0-1.0-9.0;Ausgeschaltet - Brenner aus
6.0-1.0-3.0;Ausgeschaltet - Brenner aus
6.0-1.0-1.0;Ausgeschaltet - Brenner aus
2.0-7.0-1.0;Uebergangsbetrieb - Vorbereitung (?)
2.0-2.0-1.0;Uebergangsbetrieb - Anheizen
2.0-8.0-1.0;Uebergangsbetrieb - Vorwaermphase (?)
2.0-9.0-1.0;Uebergangsbetrieb - Zuenden
2.0-3.0-1.0;Uebergangsbetrieb - Heizen
6.0-11.0-1.0;Ausgeschaltet - Abst. warten 1
6.0-13.0-1.0;Ausgeschaltet - Abst. Warten 2
6.0-4.0-1.0;Ausgeschaltet - unknown
6.0-1.0-1.0;Ausgeschaltet - Brenner aus
2.0-7.0-1.0;Uebergangsbetrieb - Vorbereitung (?)
2.0-2.0-1.0;Uebergangsbetrieb - Anheizen
2.0-8.0-1.0;Uebergangsbetrieb - Vorwaermphase (?)
2.0-9.0-1.0;Uebergangsbetrieb - Zuenden
2.0-3.0-1.0;Uebergangsbetrieb - Heizen
6.0-11.0-1.0;Ausgeschaltet - Abst. warten 1
6.0-13.0-1.0;Ausgeschaltet - Abst. Warten 2
2.0-7.0-1.0;Uebergangsbetrieb - Vorbereitung (?)
2.0-2.0-1.0;Uebergangsbetrieb - Anheizen
2.0-8.0-1.0;Uebergangsbetrieb - Vorwaermphase (?)
2.0-3.0-1.0;Uebergangsbetrieb - Heizen
6.0-11.0-1.0;Ausgeschaltet - Abst. warten 1
6.0-12.0-1.0;Ausgeschaltet - unkown
6.0-13.0-1.0;Ausgeschaltet - Abst. Warten 2
6.0-14.0-1.0;Ausgeschaltet - unknown
6.0-1.0-1.0;Ausgeschaltet - Brenner aus

Die Bedeutung der dritten Zahl ist mir noch nicht klar...

Besonders interessant sind natürlich die Fehlerzustände, da es dann ja 
wohl was zu tun gibt,

dabei konnte ich bis jetzt folgende Zustände beobachten:

0.0-11.0-7.0  Winterbetrieb - Isoliertuer offen - Aschebox voll
2.0-11.0-7.0  Übergangsbetrieb - Isoliertuer offen - Aschebox voll

Heute hatte ich die Anzeige "Lagerraum kontrollieren", zu der Zeit lag 
an der Steuerung aber der Zustand 6.0-1.0-7.0 an - also "Ausgeschaltet - 
Brenner aus". Zuvor gab es folgende Sequenz von Status:

08.01.2018;09:50:08;2.0-3.0-9.0;Uebergangsbetrieb - Heizen
08.01.2018;09:50:14;6.0-11.0-7.0;Ausgeschaltet - Isoliertuer offen - 
Aschebox voll
08.01.2018;10:15:14;6.0-12.0-7.0;Ausgeschaltet - unkown
08.01.2018;10:15:19;6.0-13.0-7.0;Ausgeschaltet - Abst. Warten 2
08.01.2018;10:35:19;6.0-14.0-7.0;Ausgeschaltet - unknown
08.01.2018;10:35:24;6.0-1.0-7.0;Ausgeschaltet - Brenner aus
08.01.2018;12:12:56;2.0-7.0-1.0;Uebergangsbetrieb - unknown
08.01.2018;12:13:01;2.0-2.0-1.0;Uebergangsbetrieb - Anheizen
08.01.2018;12:14:01;2.0-8.0-1.0;Uebergangsbetrieb - Vorwaermphase (?)
08.01.2018;12:16:01;2.0-9.0-1.0;Uebergangsbetrieb - Zuenden
08.01.2018;12:17:36;2.0-3.0-1.0;Uebergangsbetrieb - Heizen
08.01.2018;13:36:27;2.0-3.0-3.0;Uebergangsbetrieb - Heizen
08.01.2018;13:51:27;2.0-3.0-9.0;Uebergangsbetrieb - Heizen
08.01.2018;13:54:02;2.0-3.0-3.0;Uebergangsbetrieb - Heizen
08.01.2018;14:09:02;2.0-3.0-9.0;Uebergangsbetrieb - Heizen
08.01.2018;14:11:32;2.0-3.0-3.0;Uebergangsbetrieb - Heizen
08.01.2018;14:26:32;2.0-3.0-9.0;Uebergangsbetrieb - Heizen
08.01.2018;14:26:38;6.0-11.0-7.0;Ausgeschaltet - Isoliertuer offen - 
Aschebox voll
08.01.2018;14:51:38;6.0-12.0-7.0;Ausgeschaltet - unkown
08.01.2018;14:51:43;6.0-13.0-7.0;Ausgeschaltet - Abst. Warten 2
08.01.2018;15:11:43;6.0-14.0-7.0;Ausgeschaltet - unknown
08.01.2018;15:11:48;6.0-1.0-7.0;Ausgeschaltet - Brenner aus
08.01.2018;20:35:38;6.0-1.0-3.0;Ausgeschaltet - Brenner aus
08.01.2018;20:36:38;6.0-1.0-5.0;Ausgeschaltet - Brenner aus
08.01.2018;20:36:43;6.0-1.0-1.0;Ausgeschaltet - Brenner aus

eventuell versteckt sich die Information über die Meldung "Lagerraum 
kontrollieren" ja im dritten Status - weiß da ev. jemand wie der zu 
interpretieren ist?

Zur Erklärung: im Lagerraum hatten sich die Ansaugdüsen freigesaugt, und 
ich musste die Pellets verteilen, die rieseln nicht ganz so gut, wie 
sich das der Erbauer des Pelletsbunkers gedacht hatte, ich vermute, die 
pneumatische Pelletsaustragung hat zu einer Öffnung der Tür geführt, da 
zu viel "gepustet" wurde.

vielen Dank für den Sourcecode und etwaige Unterstützung bei meinem 
Problem.

lg

Philipp

von Mini 2. (Firma: Privat) (mini25)


Lesenswert?

Hallo miteinander,

auch ich bin daran interessiert, die Föling Lambdatronic S3100 
auszulesen und die Werte ev. auch in meiner Hausautomatisierung zu 
verwenden.

Jetzt stelle ich mir noch folgende Frage:
Wie ich gesehen habe funktioniert die Datenabfrage per RS232 über den 
gleichen Anschluss an dem auch das RBG dran hängt.

Gibt es eine Möglichkeit, beides quasi zusammen zu verwenden? Ich kenne 
mich elektrotechnisch nicht so aus, habe aber gesehen, dass es so eine 
Art RS232 Sniffer gibt.

Die nächste Frage ist dann natürlich, ob das RBG ständig die Daten 
abfragt oder ob das nur geschieht, wenn am Display etwas gedrückt wird. 
Weiß das zufällig jemand?

Vielen Dank vorab für eure Hilfe!

LG
mini25

von Lambdatronic (Gast)


Lesenswert?

Hallo,
in meinem obigen Bild "M1_String.jpg" sind die Stellen [4][5] und
[6][7] mit Fragezeichen benannt.
Ich habe fest gestellt dass sich einer der beiden (weiss nicht aber mehr 
welcher, könnte ich aber nachschauen) sich ändert wenn zum Bsp.
Pellets gesaugt werden ist oder eine Störung vorliegt (z.Bsp. 
Schlüsselschalter). Hat jemand dazu noch was rausgefunden?
Gruss aus Hessen.

von Daniel Höpfl (Gast)


Lesenswert?

Hallo,

ich hab mir für unsere Fröling vor einiger Zeit ein ähnliches Tool 
gebastelt und dafür das Protokoll genauer analysiert.

Nachdem ich jetzt zufällig gesehen habe, dass es noch immer Leute gibt, 
die das vielleicht interessieren könnte, habe ich den Source mal zu 
github (https://github.com/dhoepfl/Radiator) geschoben, hatte ich 
sowieso vor.

Vielleicht hilft es ja mal.

Bye,
   Daniel

von Martin S. (matz666)


Lesenswert?

Hallo Leute.
Entschuldigt das ich den alten Thread hier wieder ausgrabe.

Ich hätte die Software gerne auf einer VM mit Ubuntu 20.04 installiert.

Der Logger lässt sich auch mit make erstellen, nur die Ausführung bringt 
folgenden Fehler:

Datenausgabe nach stdout aktivert!
*** buffer overflow detected ***: terminated
Aborted (core dumped)

jemand eine Idee an was es liegen kann??

DANKE

MATZ

von Wawa W. (rady)


Lesenswert?

Ich betreibe noch einen der eher wenig verbreiteten Froeling P3 mit 
S3100. Da ich das Gerät selbst warte würde mir der digitale Zugriff auf 
die Daten sehr helfen.
Am liebsten würde ich die Daten in nodered und MQTT verarbeiten.

Radiator von Daniel mit der round robin db wäre eine prima Lösung. 
Leider konnte ich den daemon nicht mit mariadb und rrdtool starten.

(radiator läuft auf meinem PI4 bereits wie folgt ohne Probleme:
radiator -o /tmp/S3100.txt /dev/ttyUSB0)


Der daemon schreibt leider nicht in die DBs (ich breche dann mit STR-C 
ab).

radiator.conf ist nur bei device angepasst und sollte passen:

    SERIAL_DEVICE="/dev/ttyUSB0"
    SQL_BINARY='mysql'

    VU_SERVER='-'

    MAIL_SERVER='localhost'
    MAIL_FROM='<heizung@example.com>'
    MAIL_TO='<janitor@example.com>'

    PUSHED_APP_KEY='-'

    PUSHED_APP_SECRET='-'

    PUSHED_CHANNEL='-'
    RRD='/tmp/database.rrd'

Wenn ich den daemon starte folgt:
    root@pi4:/usr/local/bin# sudo radiator_daemon.sh
    root@pi4:/usr/local/bin# Traceback (most recent call last):
      File "/usr/local/bin/radiator_sql.py", line 46, in <module>
        ");").encode('utf-8'))
        IOError: [Errno 32] Broken pipe
        ^C
    root@pi4:/usr/local/bin#

Fehlersuche:

radiator_sql.log

    ERROR 1046 (3D000) at line 1: No database selected

radiator_rrdtool.log

    Failed to call rrdtool:
    ERROR: /tmp/database.rrd: expected 30 data source readings (got 25) 
from 1622882256


Ich hatte beide setup-scripts rrd und sql bereits laufen lassen. Leider 
klappt die Datenspeicherung nicht.
@Daniel: Vielen Dank für RADIATOR. Funktioniert ansonsten sehr gut. Hast 
Du einen Tipp?

von Daniel Höpfl (Gast)


Lesenswert?

Hallo,

freut mich, wenn jemand mit dem Tool etwas anfangen kann.

Zu Deinen Problemen:

Das Skript für MySQL/MariaDB ruft einfach das mysql-Tool auf. Dabei wird 
nicht mitgegeben, welche User/Passwort/Datenbank-Kombination benutzt 
werden soll. Du kannst entweder das SQL_BINARY in der Config auf ein 
eigenes Skript umstellen, das mysql dann passend aufruft (mysql --user 
RADIATOR --password ... RADIATOR) oder (besser) Du konfigurierst es in 
"$HOME/.my.cnf":
1
[mysql]
2
user="RADIATOR"
3
password="..."
4
database="RADIATOR"

Wenn Du in die radiator_setup_rrd.sh schaust, dann siehst Du unten 30 
Zeilen, die mit DS beginnen. Diese Zeilen definieren, welche Datensätze 
es gibt. Das muss dem entsprechen, was radiator jede Sekunde als 
"[VALUE]" ausgibt (wird aufsteigend sortiert). Bei mir sind das die 30, 
bei Dir anscheinend nur 25. Das musst Du also anpassen.

Das gleiche Problem bekommst Du bei MariaDB, da ist die Tabelle auch auf 
meine 30 Datenfelder ausgelegt (siehe radiator_setup_sql.sh).

Und gleich eine Warnung: Schreib die Daten auf keinen Fall auf die 
SD-Karte auf dem Raspberry. Ein Update pro Sekunde, das sind über 30 Mio 
Schreibzyklen pro Jahr. Meine SD hat das nicht lange mitgemacht. Meine 
Lösung: Ich habe eine RAM-Disk, auf der die RRD liegt (SQL benutze ich 
nicht - "SQL_BINARY='tail'"), die via cronjob alle 30 Minuten auf ein 
NAS kopiert wird (bzw. von da geholt wird, wenn sie nicht auf der 
RAM-Disk vorliegt - nach einem Reboot).

von Daniel Höpfl (Gast)


Lesenswert?

Hallo,

> Datenausgabe nach stdout aktivert!
> *** buffer overflow detected ***: terminated
> Aborted (core dumped)
> jemand eine Idee an was es liegen kann??

Spontan: An einem Bug. :-)

Hast Du das Problem noch? Wenn Du das Binary und den Core Dump noch 
hast, dann könntest Du im Debugger mal schauen, wo es abstürzt:
1
gdb ./radiator core
2
(gdb) bt
3
(gdb) list
4
(gdb) quit

Alternativ kannst Du radiator auch direkt im Debugger starten:
1
gdb ./radiator
2
(gdb) set args -o - /dev/ttyUSB0
3
(gdb) run

Nach dem Crash dann:
1
(gdb) bt
2
(gdb) list
3
(gdb) quit

von Wawa W. (rady)


Lesenswert?

@Daniel: ...und schon funzt's :) VIELEN DANK!
Der Unterschied bei mir liegt offenbar in der Konfiguration des P3. Nach 
Anpassung wie empfohlen erhält RRD und mariadb die Daten.
Ich werde auch noch auf reinen RRD - Betrieb umstellen und die RAMDISK 
aufsetzen. Von dort gehe ich dann noch auf meine node-red-Anzeige für 
das Monitoring.
Ich weiss auch noch nicht, wie ich eine frische Störung in node-red 
hole. Das muss ich mir auch noch mal genauer ansehen, aber für heute 
reichts erstmal.

Hier meine Werte des P3

Ich bekomme diese Parameter:

[TIME] Fri, 2021-06-04, 22:55:40

[VALUE] 00 [] = [übergangsbetr.] [S] (2)

[VALUE] 01 [] = [  Brenner Aus  ] [S] (1)

[VALUE] 02 [Zustand] = [1] [N] (1)

[VALUE] 03 [ROST] = [0] [N] (0)

[VALUE] 04 [Kesseltemp] = [28°] [N] (55)

[VALUE] 05 [Abgastemp.] = [35°] [N] (35)

[VALUE] 06 [Abgas. SW ] = [45°] [N] (45)

[VALUE] 07 [KessStellGr] = [50%] [N] (50)

[VALUE] 08 [Saugzug  ] = [0%] [N] (0)

[VALUE] 09 [SZ-Drehz.] = [1842U] [N] (1842)

[VALUE] 10 [Einschub] = [0%] [N] (0)

[VALUE] 11 [Rest-O2] = [1.9%] [N] (19)

[VALUE] 12 [O2-Regler] = [100%] [N] (100)

[VALUE] 13 [Fuellst.:] = [91.5%] [N] (18948)

[VALUE] 14 [Feuerraumt] = [409°] [N] (409)

[VALUE] 15 [Puffert.ob] = [46°] [N] (93)

[VALUE] 16 [Puffert.un] = [44°] [N] (89)

[VALUE] 17 [Boilertemp] = [28°] [N] (57)

[VALUE] 18 [KTY6_H1] = [127°] [N] (254)

[VALUE] 19 [KTY6_H2] = [127°] [N] (254)

[VALUE] 20 [KTY7_H2] = [127°] [N] (254)

[VALUE] 21 [Brenn.ST] = [10085] [N] (10085)

[VALUE] 22 [Laufzeit:] = [23350h] [N] (23350)

[VALUE] 23 [Boardtemp.] = [35°] [N] (35)

[VALUE] 24 [Die Kesseltemp. soll sein] = [70°] [N] (140)

von Daniel Höpfl (Gast)


Lesenswert?

Wawa W. schrieb:
> ...und schon funzt's :) VIELEN DANK!

Na wunderbar!

> Der Unterschied bei mir liegt offenbar in der Konfiguration des P3. Nach
> Anpassung wie empfohlen erhält RRD und mariadb die Daten.

Wundert mich jetzt nicht, dass die P3 andere Daten liefert, als meine P2 
…

> Ich weiss auch noch nicht, wie ich eine frische Störung in node-red
> hole. Das muss ich mir auch noch mal genauer ansehen, aber für heute
> reichts erstmal.

node-red benutze ich nicht, aber schnell ergoogelt: Ich würde einen flow 
anlegen, der auf einen eingehenden HTTP-request reagiert. Den kannst Du 
dann analog radiator_pushed.py erzeugen. Wenn Dir Fehler reichen, dann 
brauchst dann nur send_error_message, das musst Du halt anpassen, und 
alles ab (incl. der Zeile) "if timestamp:" kannst Du weglassen.

Oder Du machst das ganze als MQTT-Client.
Dann auch gleich mit den Daten …

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.