Hallo, da ich seit einem gutem Jahr einen Heizkessel von Windhager habe (VarioWin, UML+, WVF+ und InfoWin+), habe ich mich auch schon längere Zeit bemüht, eine Möglichkeit zu finden, diverse Werte über den LON Bus auszulesen (Status, Temperaturen, Pellets Verbrauch, ...). Beim Suchen ist mir dann die Service SW von Windhager über den Weg gelaufen. In der beiliegenden Doku ist der verwendete USB-LON Adapter zu sehen. Den habe ich mir besorgt, und jetzt kann ich die Anlage "auslesen" (es werden alle vorhandenen Module gesucht/gefunden, und die NV ausgelesen), und könnte FW Updates durchführen. Vom VarioWin kann man auch ein paar Parameter auslesen und am PC speichern bzw. zurück schreiben (für Baugruppentausch). Damit habe ich mal ein schönes (funktionierendes) Beispiel, was sich so am LON abspielt. Im Prinzip möchte ich auch genau so was machen, aus den Modulen diverse NV auslesen. Ich habe schon mit einem USB-Analyser und diversen PDF von Echelon auf der USB Schnittstelle zwischen Treiber und LON Adapter mitgelesen, und kann die Nachrichten einigermaßen interpretieren. Auch habe ich versucht mit dem Echelon Paket „OpenLDV SDK“ und der darin enthaltenen ldv32.dll (ist laut Adapterhersteller kompatibel mit der HW) mit Visual Basic die Verbindung zu öffnen. Laut der „C“ Beispiele sollte das ja ganz einfach sein, bekomme aber immer den Fehler „invalid Parameter“ beim Aufruf der Open Funktion in der ldv32.dll zurück. Ich habe schon alle möglichen Varianten der Funktionsdeklaration in VB versucht, aber ohne Erfolg. Ein anderer Weg wäre, die beiden DLL die mit dem Service Toll mitgekommen sind zu verwenden. Aber dafür habe ich ja gar keine Beschreibung. Müsste man mühsam mit einem Debugger raus finden, was da passiert. Wer Interesse hat an näheren Informationen, oder helfen kann, ist herzlich willkommen. Lg. Peter
Hi, ich bin auch schon seit einiger Zeit an einer Anbindung der Heizung an meine Haussteuerung interessiert. Leider ist Windhager da etwas träge. Ich selbst habe einen Firewin mit UML und WVF (nicht die Plus-Version). Es gibt seit 2 Wochen eine Möglichkeit von Windhager die Heizung über das Smartphone zu steuern, jedoch ist der Preis für die Lösung einfach zu hoch, davon mal abgesehen dass die Steuerung über einen Windhager-Server (Cloud) läuft. Mir wäre es deshalb auch lieber, das ganze über den LON-Bus zu steuern bzw. mitzulesen. Kannst du mir mal die Unterlagen zukommen lassen, die du dazu gefunden hast?
Also inzwischen bin ich ja schon viel weiter, als meine letzte Nachricht vermuten lässt. Ich bin zwar mit der OpenLDV Bibliothek von Echelon soweit gekommen, dass ich den XLON-USB Adapter (http://www.xlon.de/index.htm) öffnen kann, aber eine Kommunikation mit UML/WVF/VarioWIN ist mir nicht gelungen. Scheinbar ist der Adapter doch nicht kompatibel, wie angegeben, und leider auch nicht ganz billig. Somit habe ich dann "einfach" die Service SW von Windhager analysiert, und mit einem VB2005 Programm nachgeahmt, mithilfe der mitgelieferten DLLs. Mein Progi kann jetzt alle Komponenten (UML, WVF, Kessel) selber finden, die darin enthaltenen NV (Variablen) abfragen, und deren Werte auslesen. Weiters habe ich eine Trace Funktion, wo ich zyklisch in einer Datei hinterlegte NV abfrage, und speichere. Zuz. bin ich am spielen (mit dem Kessel), um die Bedeutung der einzelnen NV zu erforschen. Nicht alle sind durch den Namen selbsterklärend. Wer es mit einem anderen Adapter versuchen möchte, oder ganz ohne, der kann auch nähere Informationen haben, was so am Lon Bus nötig ist, um die Komponenten anzusprechen.
So, ich bin jetzt einigermaßen fertig mit diesem Projekt. Die interessantesten Parameter werden jetzt periodisch aus dem Kessel ausgelesen, und in eine Datei gespeichert. Diese Datei (bzw. deren Inhalt) wird dann über eine .ASP Datei auf einem Webserver bereitgestellt (siege Bild), und kann mit jedem Browser aufgerufen werden.
Hallo, schön das sich da auch andre mit beschäftigen atte vor ca. 5 Jahren auch mal ein versuch gestartet scheiterte aber an den Protokollen bzw konnte ich den Bus nicht richtig lesen. Ich wäre für infos zu der Abrage des Uml sehr interessiert gern per mail.
Hallo Christian (Gast), was für Infos würdest du denn genau brauchen? Um sie dir per Mail zu senden, musst du mir deine Adresse zukommen lassen.
Hallo Peter M. Ich habe auch eine Windhager-Pelletheizung. Ich bin im Moment daran den Datenverkehr auf dem LON Bus zu analysieren. Schwere Aufgabe ! Hast du da Unterlagen zum Telegrammaufbau, zum datenverkehr etc ? Mfg Juergen R.
Hallo Peter M., ich habe einen Windhager HMX Holzvergaserkessel, also den Vorgänger der derzeitigen Modellpalette von Windhager. Hast du Informationen ob deine Lösung auch bei diesem Kessel funktionieren würde? Er nutzt intern auch schon LON um Zusatzmodule an den Kessel anzubinden. Wäre sehr Interessiert den Status, Temperaturen,… auszulesen, um diese dann in meiner Heizungsregelung, Visu zu integrieren. Vielen Dank!
Hallo David, möglicherweise kann das original Service Tool auch mit HMX Holzvergaserkessel kommunizieren. Im Unterordner wo die Symbolbilder liegen, die angezeigt werden, wenn eine Komponente beim einlesen der Anlage gefunden wurde, ist ein Bild HMX.jpg. Allerdings sind in den Ordnern, wo die FW der einzelnen Komponenten liegt, die vom Service Tool aktualisiert werden können, nur BioWin, VarioWin und FireWin Anlagen. Man müsste das halt testen, aber dazu braucht man den Xlon-USB Adapter. Peter
Hallo Peter, darf ich fragen wie du zu dem "Technikermodul" gekommen bist? Mir wurde gesagt, dass das nicht verkauft wird. lg Martin
An Privatpersonen wird leider nicht geliefert. Ich habe den Adapter über die Firma eines Bekannten bestellt.
Woher kann ich die Service SW bekommen? Modul mit rs232 Schnittstelle ist schon da :)
:
Bearbeitet durch User
Hallo Jürgen, wo du die SW findest, habe ich dir per Email gesendet. Aber du wirst den oben erwähnten XLON USB Adapter brauchen, was anderes funktioniert mit der Service SW nicht. Peter
Hallo Peter, könntest du mir eine Mail zukommen lassen, wo ich die Software finde. Danke und Gruss Dominic sgtdodo81@gmail.com
Hi, Im trying to interact with a windhager variowin with mes module and fb5210 thermostat from an open domotic platform in raspberry, someone can confirm me what interface could communicate with the bus, im looking that cheapest option is u60 from échelon and appear to be compatible with same drivers and software than u10/u20. Could someone indicate me if im investigating in the correct way? Thanks!
Hallo, bin soeben auf diesen Thread gestoßen. Ich habe seit 2006 einen Vitolig 200, der eigentlich ein HMX von Windhager ist. Hatte auch bisher nach Vitolig gesucht, dachte nicht an die Suche nach HMX. Vor drei Jahren habe ich erfolglos versucht, die Daten aus dem Kessel auszulesen. Dazu habe ich einen LON-Bus PCMCIA-Adapter besorgt, bin aber wohl an der Softwareumgebung gescheitert. Ich wusste nichts von einem Service-Tool. Ich habe mir inzwischen mit einem Beckhoff-System (Analoge Eingangsklemmen und Ethernet-Buskoppler) beholfen und ein zweites dünnes Thermoelement in die Brennkammertauchhülse geschoben, ebenso im Abgas. Die Tank- und sonstigen Wassertemperaturen messe ich mit PT100-Fühlern. Dazu in Labview einen Recorder geschrieben, um den Verlauf der Verbrennung über der Zeit zu beobachten (ein Schritt ca. 3 sek.). Seit 2 Jahren habe ich zusätzlich noch eine Lambda-Sonde im Abgasstrang installiert. Dabei habe ich feststellen müssen, dass der Kessel von Zeit zu Zeit in einen Zustand verfällt, der durch starken Luftmangel gekennzeichnet ist. Normalerweise pendelt der Kessel zwischen Lambda = 1,05 und 1,2. Dann aber stimmt plötzlich das Luftverhältnis nicht mehr und es kommt zu Phasen mit Lambda kleiner 0,7, ggf. auch mit Qualmen. Das passiert bevorzugt bei Lastwechseln (wenn die Rücklauftemperatur ansteigt). Ich würde die Sache gerne nochmal mit der Abfrage der Daten aus dem Kessel selbst angehen. Besteht die Möglichkeit, mir für einen erneuten Anlauf am LON-Bus unter die Arme zu greifen? Grüße Gerhard
Hallo Gerhard, kannst du "unter die Arme zu greifen" näher erläutern? Die Service SW dient ja "nur" zum aktualisieren der FW der diversen Teile. Im Verzeichnis der FW sind folgende Komponenten zu sehen: AB-Modul BioWIN BioWIN2 BioWINXL B-PLM + FireWIN InfoWIN InfoWIN BW InfoWIN FW InfoWIN SW JetWIN KAS + LogWIN LWP PMX SilvaWIN SOFU UML + VarioWIN WVF + ZSP-O2 Da ist kein HMX dabei. Das bedeutet nicht, dass man mit dem XLON-USB (den die Service SW verwendet) nicht auch mit einem HMX kommunizieren kann. Aber für die Kommunikation werden diverse Informationen gebraucht. Die kann man für die Komponenten, die in der Service SW vorhanden sind, aus deren FW Ordner gewinnen. Da dort kein HMX vorhanden ist, ist das nicht so einfach. Und nur zum testen ist der XLON-USB etwas teuer. Was für einen LON-Bus PCMCIA-Adapter hast du denn? Peter
Hallo Peter, vielen Dank für die schnelle Antwort. Da die letzten Aktivitäten mit dem LON-Bus bereits mehrere Jahre her sind muss ich das Interface erst mal suchen. Ich glaube mich zu erinnern, dass es ein Interface von Echellon war. Inzwischen ist die HW irgendwo in meinem Bastelkeller nach hinten gewandert, ich werde am Wochenende mal versuchen das Kärtchen aufzutreiben, dann werde ich mich wieder mit genaueren Informationen melden. Bis dahin eine angenehme Woche Gerhard
Hallo Peter,
wir haben seit letzem Herbst auch eine Windhager Pellet-Heizung
(BioWin2). Ich möchte nun auch diverse Werte aus der Anlage auslesen und
ein wenig STatistik damit betreiben. Infos über den LON-Bus habe ich
schon im Netz gefunden. Das Protokoll ist zwar prinzipiell verständlich,
aber selber einen protokoll-Stack zu programmieren erscheint mir recht
mühsam.
In einem Deiner ersten Posts schreibst Du:
> Wer es mit einem anderen Adapter versuchen möchte, oder ganz ohne, der
kann auch nähere Informationen haben, was so am Lon Bus nötig ist, um
die Komponenten anzusprechen.
Da ich beabsichtige, mit einer eigenen Interface-Hardware in Verbindung
einem RasperryPi zu arbeiten, bin ich dringend auf Insider-Wissen des
Protokolls und der Datenformate bei der Kesselsteuerung angewiesen.
Über eine Reaktion würde ich mich sehr freuen!
Grüße
Horst
Hallo Horst, ohne LON Stack glaube ich nicht das es gehen wird. Entweder mit einem Adapter (zB. so wie den XLON-USB, wo man dann eine DLL mit den Funktionen anspricht, oder einen von Echelon, der mit deren DLL bedient werden kann), oder alles selber programmieren, was sehr aufwendig ist, wie du schon angemerkt hast. "Nur" mit passivem mitlesen am Bus wirst du nicht weiterkommen. Die gesuchten Informationen werden in Netzvariablen gespeichert/übertragen. Die sind aber nur nach "Aufforderung" am Bus vorhanden, somit muss man am Bus "mitreden". Und dazu wirst du den LON Stack brauchen. Die Informationen die ich liefern kann, beziehen sich auf die LON Kommandos, die nötig sind, um die am Bus vorhandenen Komponenten (Kessel, UML, WVF, InfoWin) zu finden, und deren Eigenschaften (wie die Netzvariablen, Knotenadressen, ...) auszulesen. Mit diesen Werten kann dann gezielt ein/mehr Werte aus einem Knoten ausgelesen werden. Die Informationen liegen in Form von Mitleseprotokollen vor, die ich an der USB Schnittstelle zwischen PC und XLON-USB gewonnen habe. Da sieht man mit welchen Befehlen die Knoten gesucht und ausgelesen werden. Was aber bei der DLL ein ganz einfacher Funktionsaufruf ist (Open, Reset, Write CMD, Close, ...), sind an der USB Schnittstelle schon einige Befehle mehr (Handshake mit Quittungen, ...), und was genau direkt am LON Bus passiert, kann ich dir gar nicht genau sagen (zB. die Kollisionserkennung, wann ist der Bus frei, damit geschrieben werden kann, ...). Ich habe mir den Bus zwar auch mit dem Oszilloskop angesehen, aber mehr als die physikalischen Bedingungen (wie Spannung, Übertragungsrate) ist da nicht zu erfahren. lg. Peter
Hallo Peter, vielen Dank für Deine ausführliche Antwort. Ich hatte etwas in der Form leider schon erwartet. Eigentlich möchte ich ja ohne teure Spezial-Teile auskommen. Und da ich auch kein Freund von Windows bin (ich nutze auschließlich Linux), kann ich auch mit einem Tool, dass auf DLLs setzt nicht richtig was anfangen. Mir wird also nichts anderes übrig bleiben, als den Protokoll-Stack irgendwie nachzubauen. Das ist ja prinzipiell nicht unmöglich, aber bisher ist mir noch keine halbwegs verständliche Beschreibung über den Weg gelaufen. Bis auf die Bit-Kodierung (Manchester) habe ich noch nichts gefunden. Ist Dir vielleicht bei Deinen Recherchen irgendwas in der Art aufgefallen? Ich bin da für jeden Himweis (Link) dankbar. Grüße Horst
Sende mir deine Email per privater Nachricht, dann sende ich dir diverse PDF die ich über LON habe. Peter
Hallo Peter, Ich habe eine Rapido KP100, der ist baugleich mit der Biowin Exclusiv. Kannst Du mir schreiben wo ich die Service Software und das Interface bekomme? Deine Visualisierung finde ich sehr gut, kann ich die an den Biowin anbinden? Mit freundlichen Grüßen Jochen
Hallo Jochen. KP 100: Da habe ich folgende Installationsanleitung gefunden: http://www.rapido-waermetechnik.at/pdf/manuals/Pelletkessel/Inst-Anl_KP100_D_011407_06-06_Rue.pdf Wenn die für alle KP 100 gilt, wird man zwar mit der Service-SW sicher den Kessel auslesen/updaten können (den Feuerungsautomaten, siehe Seite 22 Abb. 5.2), weil der ja sicher von Windhager ist, und auf XR2 1+2 der LON Bus raus kommt). Die meisten Werte die in meiner Ansicht oben zu sehen sind, sind aber aus der Heizungssteuerung. Das ist bei mir ein UML+ und WVF+ von Windhager, die auch vom Bedienfeld des Kessels aus angesprochen werden können (und natürlich auch von der Service-SW). Aber auch bei ältere UML/WVF (ohne "+") können die wichtigsten Werte über den LON ausgelesen werden. Eingestellt werden die aber "mechanisch" am Modul. Beim KP 100 sieht es aber in diesem PDF so aus, wie wenn da eine andere Steuerung drin ist (Seite 17, "rapidomatic"). Die ist auch in den Bildschirm Ansichten des Bedienfeldes des KP 100 nicht zu sehen (bei mir ist Im Menü noch die Zeile "MES Module", wo es zum UML/WVF geht). Das bedeutet nicht, dass nicht auch die "rapidomatic" über den LON gelesen/gesteuert werden kann. Alleine ich (und vermutlich die Service-SW) haben davon keine Ahnung. Alle Informationen zu den NV (Netzvariablen) von Kessel/UML/WVF habe ich aus der Service-SW bzw. den mitgelieferten Dateien. Für die "rapidomatic" müsste man da erneut Grundlagenforschung betreiben. Oder man ist damit zufrieden, was man aus dem Kessel an Daten bekommt. Was man aus einem Kessel ausgelesen kann (Beispiele für VarioWin und fireWin): ####################################################################
1 | Node: VarioWin |
2 | ############### |
3 | NV:nvoError (nvo_Störcode ) Typ:SNVT_count(8) |
4 | NV:OXY_nvoHeating (nvo_O2_Heizung ) Typ:SNVT_lev_cont(21) |
5 | NV:nvoWvEnergyHold (nvo_EnergyHold_HK ) Typ:SNVT_lev_percent(81) |
6 | NV:nvoBwEnergyHold (nvo_EnergyHold_WW ) Typ:SNVT_lev_percent(81) |
7 | NV:WET_nvoTist (nvo_WET_T_Kessel ) Typ:SNVT_temp_p(105) |
8 | NV:GB_nvoNist (A_GB_Drehzahl ) Typ:SNVT_rpm(102) |
9 | NV:GB_nvoNsoll (A_GB_Drehzahl_Soll ) Typ:SNVT_rpm(102) |
10 | NV:FS_ioMsum (B_Pellets_Gesamt ) Typ:SNVT_count(8) |
11 | NV:FS_nviMfoerder (A_FS_Menge_berech ) Typ:SNVT_mass_kilo(24) |
12 | NV:FS_nciCO2 (E_Korr_Brennstoff ) Typ:UNVT(0) |
13 | NV:FS_nvoRotation (A_FS_Überwachung ) Typ:SNVT_lev_percent(81) |
14 | NV:PMX_Status (nvo_FMP_Status ) Typ:UNVT(0) |
15 | NV:PMX_nvoLstg (P_Leistung ) Typ:SNVT_lev_cont(21) |
16 | NV:PMX_PwrAvg (P_Leistung_Mittel ) Typ:SNVT_lev_cont(21) |
17 | NV:PMX_avgTb_Tk (T_TB_TK_berechnet ) Typ:SNVT_temp(39) |
18 | NV:PMX_state (B_Zustand_Brenner ) Typ:UNVT(0) |
19 | NV:PMX_eeBetrStd (B_Betriebsstunden ) Typ:SNVT_time_hour(124) |
20 | NV:PMX_eeNbrAnhz (B_Anheizvorgänge ) Typ:SNVT_count(8) |
21 | NV:PMX_CntShort (Z_Ausbrand_Kurz ) Typ:UNVT(0) |
22 | NV:PMX_CntLong (Z_Ausbrand_Lang ) Typ:UNVT(0) |
23 | NV:PMX_InModTmr (Z_TimeModulation ) Typ:SNVT_time_min(123) |
24 | NV:LPC_nvoState (B_Druckschalter ) Typ:UNVT(0) |
25 | NV:NIC_nvoValue (T_Brennraum ) Typ:SNVT_temp(39) |
26 | NV:NIC_nvoTboard (T_Schaltfeld innen ) Typ:SNVT_temp_p(105) |
27 | NV:NIC_nvoAvgVal (T_Brennraum_Mittel ) Typ:SNVT_temp(39) |
28 | NV:TK_nviSetP (T_Kessel_Soll ) Typ:SNVT_temp_p(105) |
29 | NV:TK_nvoTemp (T_Kessel ) Typ:SNVT_temp_p(105) |
30 | NV:TK_nviExtSetP (T_Kessel_Soll_ext ) Typ:SNVT_temp_p(105) |
31 | NV:TK_nvoAvgVal (T_Kessel_Mittel ) Typ:SNVT_temp_p(105) |
32 | NV:TK_Stpt (T_Kessel_Soll ) Typ:SNVT_temp_p(105) |
33 | NV:TK_nvoNSollBP (A_Kesselpumpe ) Typ:SNVT_lev_cont(21) |
34 | NV:RG_nvoTemp (T_Abgas ) Typ:SNVT_temp(39) |
35 | NV:PZS_status (PZS_Betriebszustand ) Typ:UNVT(0) |
36 | NV:PZS_Restmenge (PZS_Restmenge ) Typ:SNVT_mass_kilo(24) |
37 | NV:RUE_cntError (Z_Störung_Entasch ) Typ:SNVT_count(8) |
38 | NV:RUE_status (B_Zustand_Entasch ) Typ:UNVT(0) |
39 | NV:RUE_cntEntaZue (Z_Stör_Warmstart ) Typ:SNVT_count(8) |
40 | NV:FWN_nviRunTm2Cln (B_Kesselreinigung ) Typ:SNVT_time_hour(124) |
41 | NV:FMx_status (B_Betriebszustand ) Typ:UNVT(0) |
42 | NV:WVF_nvoFBflag (nvo_WVF_FB-Betr ) Typ:SNVT_switch(95) |
43 | |
44 | Node: FireWin |
45 | ############### |
46 | NV:nvoTime (nvo_Uhrzeit_FA ) Typ:SNVT_time_stamp(84) |
47 | NV:nvoError (nvo_Störcode ) Typ:SNVT_count(8) |
48 | NV:nvoWvEnergyHold (nvo_EnergyHold_HK ) Typ:SNVT_lev_percent(81) |
49 | NV:nvoBwEnergyHold (nvo_EnergyHold_WW ) Typ:SNVT_lev_percent(81) |
50 | NV:WET_nvoTist (nvo_WET_T_Kessel ) Typ:SNVT_temp_p(105) |
51 | NV:GB_nvoNist (A_GB_Drehzahl ) Typ:SNVT_rpm(102) |
52 | NV:GB_nvoNsoll (A_GB_Drehzahl_Soll ) Typ:SNVT_rpm(102) |
53 | NV:FS_ioMsum (B_Pellets_Gesamt ) Typ:SNVT_count(8) |
54 | NV:FS_nviMfoerder (A_FS_Menge_berech ) Typ:SNVT_mass_kilo(24) |
55 | NV:FS_nciCO2 (E_Korr_Brennstoff ) Typ:UNVT(0) |
56 | NV:FS_nvoRotation (A_FS_Überwachung ) Typ:SNVT_lev_percent(81) |
57 | NV:PMX_nvoLstg (P_Leistung ) Typ:SNVT_lev_cont(21) |
58 | NV:PMX_PwrAvg (P_Leistung_Mittel ) Typ:SNVT_lev_cont(21) |
59 | NV:PMX_avgTb_Tk (T_TB_TK_berechnet ) Typ:SNVT_temp(39) |
60 | NV:PMX_state (B_Zustand_Brenner ) Typ:UNVT(0) |
61 | NV:PMX_eeBetrStd (B_Betriebsstunden ) Typ:SNVT_time_hour(124) |
62 | NV:PMX_eeNbrAnhz (B_Anheizvorgänge ) Typ:SNVT_count(8) |
63 | NV:PMX_nvoLps (B_Druckschalter ) Typ:SNVT_switch(95) |
64 | NV:NIC_nvoValue (T_Brennraum ) Typ:SNVT_temp(39) |
65 | NV:NIC_nvoTboard (T_Schaltfeld innen ) Typ:SNVT_temp_p(105) |
66 | NV:NIC_nvoAvgVal (T_Brennraum_Mittel ) Typ:SNVT_temp(39) |
67 | NV:TK_nviSetP (T_Kessel_Soll ) Typ:SNVT_temp_p(105) |
68 | NV:TK_nvoTemp (T_Kessel ) Typ:SNVT_temp_p(105) |
69 | NV:TK_nviExtSetP (T_Kessel_Soll_ext ) Typ:SNVT_temp_p(105) |
70 | NV:TK_nvoRist (T_Kessel_Rücklauf ) Typ:SNVT_temp_p(105) |
71 | NV:TK_nvoAvgVal (T_Kessel_Mittel ) Typ:SNVT_temp_p(105) |
72 | NV:RG_nvoTemp (T_Abgas ) Typ:SNVT_temp(39) |
73 | NV:PZS_status (PZS_Betriebszustand ) Typ:UNVT(0) |
74 | NV:FWN_nviRunTm2Cln (B_Kesselreinigung ) Typ:SNVT_time_hour(124) |
75 | NV:FMx_status (B_Betriebszustand ) Typ:UNVT(0) |
76 | NV:WVF_nvoFBflag (nvo_WVF_FB-Betr ) Typ:SNVT_switch(95) |
Was man aus den UML[+] auslesen kann: #####################################
1 | Node: UML + |
2 | ############### |
3 | NV:nvoTimeSet (Lokale Zeit ) Typ:SNVT_time_stamp(84) |
4 | NV:nvoOprMode (Betriebsphase ) Typ:UNVT(0) |
5 | NV:nvoCtrlMode (nvo_Betriebswahl ) Typ:UNVT(0) |
6 | NV:WET_nvoTsoll[0] (WET_T_Soll_HK ) Typ:SNVT_temp_p(105) |
7 | NV:WET_nvoTsoll[1] (WET_T_Soll_WW ) Typ:SNVT_temp_p(105) |
8 | NV:WET_nvoTist (nvo_WET_T_Kessel ) Typ:SNVT_temp_p(105) |
9 | NV:nviTaFb (nvi_T_Aussen ) Typ:SNVT_temp_p(105) |
10 | NV:nvoTa (T_Aussen ) Typ:SNVT_temp_p(105) |
11 | NV:LX_nviTist[0] (L_T_Boiler ) Typ:SNVT_temp_p(105) |
12 | NV:LX_nviTsoll[0] (L_T_Boiler1_Soll ) Typ:SNVT_temp_p(105) |
13 | NV:LX_nvoPump[0] (L_Pumpe_BK1 ) Typ:SNVT_lev_cont(21) |
14 | NV:LX_nvoValve[0] (L_Ladeventil_BK1 ) Typ:SNVT_lev_cont(21) |
15 | NV:WVF_nviTPO (T_PufferOben TPO ) Typ:SNVT_temp_p(105) |
16 | NV:WVF_nviTPU (T_PufferUnten TPU ) Typ:SNVT_temp_p(105) |
17 | NV:WVF_nviTPM (nvi_WVF_TPM ) Typ:SNVT_temp_p(105) |
18 | NV:M_nviTVsoll (T_Vorlauf_Soll ) Typ:SNVT_temp_p(105) |
19 | NV:M_nviTVist (T_Vorlauf ) Typ:SNVT_temp_p(105) |
20 | NV:M_nvoPump (Pumpe ) Typ:SNVT_lev_cont(21) |
21 | NV:M_nvoValve (M_Mischventil ) Typ:SNVT_lev_percent(81) |
22 | NV:FA_nviTVsoll (FA_T_Kessel_Soll ) Typ:SNVT_temp_p(105) |
23 | NV:FA_nvoTk (FA_T_Kessel_VL ) Typ:SNVT_temp_p(105) |
24 | NV:FA_nvoTr (FA_T_Kessel_RL ) Typ:SNVT_temp_p(105) |
25 | NV:FA_nvoError (FA_Störcode ) Typ:SNVT_count(8) |
26 | NV:nvoTi (T_Raum ) Typ:SNVT_temp_p(105) |
27 | NV:nvoTiStpt (T_Raum_Soll ) Typ:SNVT_temp_p(105) |
28 | NV:nvoError (nvo_Störcode ) Typ:SNVT_count(8) |
29 | NV:nviError (nvi_Störcode ) Typ:SNVT_count(8) |
30 | |
31 | Node: UML C1 |
32 | ############### |
33 | NV:nvoTimeSet (Lokale Zeit ) Typ:SNVT_time_stamp(84) |
34 | NV:nviError (nvi_Störcode ) Typ:SNVT_count(8) |
35 | NV:nvoError (nvo_Störcode ) Typ:SNVT_count(8) |
36 | NV:nciLocation (Bezeichnung ) Typ:SNVT_str_asc(36) |
37 | NV:WET_nvoTsoll[0] (WET_T_Soll_HK ) Typ:SNVT_temp_p(105) |
38 | NV:WET_nvoTsoll[1] (WET_T_Soll_WW ) Typ:SNVT_temp_p(105) |
39 | NV:WET_nvoTist (nvo_WET_T_Kessel ) Typ:SNVT_temp_p(105) |
40 | NV:WET_m (?? ) Typ:UNVT(0) |
41 | NV:nviTaFb (nvi_T_Aussen ) Typ:SNVT_temp_p(105) |
42 | NV:nvoTa (T_Aussen ) Typ:SNVT_temp_p(105) |
43 | NV:TA_m ( ) Typ:UNVT(0) |
44 | NV:LX_nviTist[0] (L_T_Boiler ) Typ:SNVT_temp_p(105) |
45 | NV:LX_nviTsoll[0] (L_T_Boiler1_Soll ) Typ:SNVT_temp_p(105) |
46 | NV:LX_nvoPump[0] (L_Pumpe_BK1 ) Typ:SNVT_lev_cont(21) |
47 | NV:LX_nvoValve[0] (L_Ladeventil_BK1 ) Typ:SNVT_lev_cont(21) |
48 | NV:WVF_nviTPO (T_PufferOben TPO ) Typ:SNVT_temp_p(105) |
49 | NV:M_nviTVsoll (T_Vorlauf_Soll ) Typ:SNVT_temp_p(105) |
50 | NV:M_nviTVist (T_Vorlauf ) Typ:SNVT_temp_p(105) |
51 | NV:M_nvoPump (Pumpe ) Typ:SNVT_lev_cont(21) |
52 | NV:M_nvoValve (M_Mischventil ) Typ:SNVT_lev_percent(81) |
53 | NV:RC_nvoMode[0] (BDM1_Betriebsart ) Typ:UNVT(0) |
54 | NV:RC_nviError[0] (BDM_Störcode ) Typ:SNVT_count(8) |
55 | NV:RC_nvoSpaceTemp[0] (BDM_T_Raum ) Typ:SNVT_temp_p(105) |
56 | NV:RC_nvoHeatSetPt[0] ( ) Typ:SNVT_temp_p(105) |
57 | NV:RC_nvoBoilSetPt[0] (BDM_T_Boiler_Soll ) Typ:SNVT_temp_p(105) |
58 | NV:RC_nviSolarTemp (BDM_TSA_Koll.Austr ) Typ:SNVT_temp_p(105) |
59 | NV:RC_nviSolarEnrgy (BDM_Solargewinn ) Typ:SNVT_elec_kwh(13) |
60 | NV:FA_nviTVsoll (FA_T_Kessel_Soll ) Typ:SNVT_temp_p(105) |
61 | NV:FA_nvoTk (FA_T_Kessel_VL ) Typ:SNVT_temp_p(105) |
62 | NV:FA_nvoTr (FA_T_Kessel_RL ) Typ:SNVT_temp_p(105) |
63 | NV:FA_nviExtTsoll ( ) Typ:SNVT_temp_p(105) |
64 | NV:SYS_pack ( ) Typ:UNVT(0) |
LON-USB Adapter: http://www.xlon.de/index.htm (XLON-USB RS485) Service-SW: sende mir deine Email Adresse für nähere angaben. Grüße, Peter
:
Bearbeitet durch User
Vielen Dank für die Infos. Meine E-Mail Adresse lautet sierck@gmx.de (Sierck at gmx Punkt de) Mit freundlichen Grüßen Jochen
Hi Peter, ich hab mich länger nicht mehr mit dem LON Bus meines Windhagers beschäftigt und deine Erfolge erst heute gelesen, kannst du mich mal unter the.simpsons@aon.at kontaktieren wegen weiterer Details ? DANKE und lg
Ich hoffe der Thread wird noch gelesen. Ich habe eine Windhager XenoWin und würde gerne die Daten der Gastherme auslesen. Die Frage die sich stellt ob die XenoWin Anlage ebenfalls über die Schnittstelle verfügt und überhaupt ausgelesen werden kann. (Ich vermute Mal ja, der Techniker ist ja dazu auch in der Lage) Sofern @peter2003 noch mitliest würde mich die Bezugsquelle des Schnittstellenkabels und der Software interessieren. Wenn ich die Angaben im Thread richtig gelesen habe so kann man das Kabel und xlon.de kaufen - gibt es günstigere Möglichkeiten? Ist ja nicht gerade billig. Gibt es die entwickelte Auslesesoftware vielleicht in einem Github Repo? Falls eine Mailadresse benötigt wird: stephan.kw+lonbus (a) gmail.com
Hallo Stephan, im Beitrag "Re: LON Bus Windhager mitlesen/steuern" sind alle Systeme gelistet, die die Service SW bedienen kann. Das sind alles Windhager Systeme. Windhager verkauft zwar Gaskessel/thermen, die sind meines Wissens aber alle zugekauft. So wie andere Hersteller Kessel von Windhager unter deren Namen verkaufen. Die sind aber nicht mit dieser Service SW zu bedienen. Welche Schnittstelle dein XenoWin hat (und ob er eine hat), kannst du nur in den technischen Unterlagen des original Herstellers sehen. Den XLON-USB gibt es nur beim Hersteller. Meine SW, um mit einem XLON-USB einen Windhager Kessel auszulesen, nur bei mir (VB2005). Peter
:
Bearbeitet durch User
Hello Is it ok to write in english? Ansewr in German is ok for me :) Very great thread this! Good work from Peter and many more! I have recently installed a Biowin Exklusiv, and would like to connect it with an Arduino board or a Raspberry Pi. Is it the LonWorks/LonTalk protocol that is used by Windhager? Peter, would you be so kind and send also me the information you have collected about the bus-interface? trnilsson at gmail punkt com Thomas, Gothenburg, Sweden
Hallo Zusammen, würde mich ebenso über nähere Informationen zu LON BUS und Windhager Pelletkesseln freuen. mrmint bei gmx net. Vielen Dank im Voraus!
Hallo Thomas, ich habe den BioWin2 Touch und kann die Daten über API auslesen. Da brauchst Du: 1. einen Rechner (kann auch RaspberryPi sein) 2. FHEM https://fhem.de/ 3. und einen zusätzlichen Modul: https://github.com/tobias-d-oe/fhem-windhager Bei mir funktioniert das Ganze gut. Ich versuche gerade einen Modul für ioBroker zu schreiben, das auch die API-Schnittstelle verwendet. VG. Roman
Aha, that was really interesting information. There is a LON to LAN converter, the RC3070. That needs to be further investigated! Thanks!
Roman B. schrieb: > Bei mir funktioniert das Ganze gut. Ich versuche gerade einen Modul für > ioBroker zu schreiben, das auch die API-Schnittstelle verwendet. Hallo Roman, wie läuft es mit deiner Visualisierung? Wir haben nun auch so einen Pellets Kessel von Windhager mit dem Touchpanel, das sich auch via Ethernet per Handy-App steuern lässt. Kannst du die Werte nur auslesen, oder auch Werte manipulieren? LG, Karl
Hallo Karl, es gibt zwei Möglichkeiten: 1. Du nimmst das FHEM-Modul: https://github.com/tobias-d-oe/fhem-windhager und liest die Anlage aus 2. Du wartest noch eine Woche bis ich mein Modul (Javascript für ioBroker) veröffentliche Mit dem FHEM-Modul kannst Du die Werte nur auslesen. Mit meinem Modul könntest Du auch die Module auslesen, aber auch steuern: z.B. habe ich die Alarmanlage mit dem Warmwasserkreislauf verbunden - wird die Alarmanlage scharf, schaltet sich die Zirkulationspumpe aus. ioBroker macht hier alles. Ich habe nur den Adapter geschrieben. Das hat leider noch keine Admin-Oberfläche. Aber bis Ende der nächsten KW müsste ich das fertig haben... VG. Roman
Hallo Roman, wenn alles glatt läuft, dann schreibe ich auch einen Daemon. Dieser sollte dann eine Schnittstelle zwischen der Web API und MQTT bilden. Das ganze sollte dann in Home Assistant integriert werden. Dann sollten wir drei die Wichtigsten Sprachen eingebunden haben :) Aber ich werd so schnell noch nicht dazukommen, und werde mir somit deine Lösung gerne Anschauen. Hab nun schon 3 mal mit dem Kundensupport telefoniert, aber die Herren dort wollen echt nix rausrücken. Die API ist oft gar nicht dokumentiert. Bei uns werden im Optimalfall alle Radiatoren mit Funk-Ventile ausgestattet, die dann von einer Zentralen stelle gesteuert werden. LG, Karl
Hallo allerseits, Erstmal Hut-Ab was hier schon geleistet wurde und zusammengetragen wurde. ;-) Ich habe eine BioWin Exklusiv und würde auch gerne eine Steuerung meiner Heizung realisieren. Bin gerade am recherchieren was ich alles dazu brauche. (LON?) Könnte dazu nähere Info´s brauchen. Meine E-Mail lautet le(punkt)ram(ät)gmx(punkt)at Vielen Dank und liebe Grüße Christian
Hallo Zusammen, leider habe ich mit dem Adapter noch nicht geschafft... Mein Urlaub war zu kurz. Aber für die, die sich damit auskennen, nenne ich einfach paar Wörter: - Login: Service, Password: kann man hier bekommen: https://connect.windhager.com/ - REST API mit DigestAuth - Werte lesen: GET - Werte schreiben: PUT (value="Wert") - http://BioWin-IP/api-docs/ - hier sind die API Docs - http://BioWin-IP/api/1.0/datapoint/1/15/0/115/0 - bei mir die Aussentemperatur Viel Spaß, Roman
Hallo Christian, auf Deiner Stelle würde ich nur mit API arbeiten. Ich wollte auch mal über LON steuern. Die Steuerung über API ist aber viel einfacher und billiger. VG. Roman
Super Roman, das mit api-docs muss ich probieren, wie bist denn auf diese URL gekommen? Passwort kann man durch 10s auf Resettaster am Touchpanel auch löschen. Aber dann ist der Remotezugang von außen auch weg...
Hallo Zusammen, ich denke ich werde die Steuerung anderweitig realisieren, jedoch möchte ich gerne per LON Bus die Prozessdaten (Temperaturen, Verbrauch,...) auslesen. Mittlerweile konnte ich ein MES Kommunikationsmodul ergattern, brauche dazu aber noch nähere Info´s zu den Datenpunkten, Befehlen, etc,.. Könnte mir jemand diese dankenswerterweise zusenden? Meine E-Mail Adresse wäre le(punkt)ram(ät)gmx(punkt)at Vielen Dank Christian
Hallo Christian, ich habe vor etwa 1 Jahr auch meine Windhager Steuerung (Firewin) ersetzt mit einer UVR 16x2 von der Technischen Alternative. Diese Steuerung kann ich nur empfehlen. Die Brenneranforderung habe ich über die X18 Klemme (0-10V) an meinem Kessel realisiert, d.h. die UVR schickt z.B. 7,5V und fordert damit eine Kessel-Vorlauftemperatur von 75°C an. Den Rest steuert die UVR, also Pumpen, Mischer, etc. selbst. Mir war das aber auch noch zu wenig, da ich z.B. Fehlermeldungen, Pelletsverbrauch usw. auch in meiner Haussteuerung sehen möchte. Deshalb habe ich mir vor 3 Wochen nun auch den XLON USB Adapter besorgt. Zum Auslesen der Daten vom Kessel nimmst du am Besten die Windhager Software MES und dekompilierst sie mit dem ILSpy. Damit kannst du ein C# Projekt generieren. Das kannst du dann entsprechend umbauen. Alternativ kann ich dir auch mal meinen bisherigen Code schicken bei Bedarf. LG, Rainer.
Rainer Müller schrieb: > nimmst du am Besten die Windhager Software MES und > dekompilierst sie mit dem ILSpy. Damit kannst du ein C# Projekt > generieren. Das kannst du dann entsprechend umbauen. Kann es sein, dass das nicht ganz legal ist? Nur so aus Interesse. Bei so proprietären Systemen darf ruhig auch mal illegal gehandelt werden. Eigentlich müssten so Systeme immer mit offenen Schnittstellen ausgeliefert werden müssen, da man sonst einem Vendorlockin unterliegt. Hier sollte sich der Konsumentenschutz mal engagieren, denke ich.
Hallo, ich bin über das KNX-UF auf den Thread gestoßen, ich habe mich auch lange mit dem Auslesen der Heizung beschäftigt, und habe den weg über die API eingeschlagen. Aktuell habe ich ein kleines PHP Skript (welches in einem EDOMI LBS läuft) welches mir alle relevanten DAten ausliest. ebenso kann ich Daten schreiben (Also RT setzen, oder ähnliches) Hier ein Auszug aus meinem Code - man kann sich auch eine einfache Website basteln und die Werte dort ausgeben, habe ich bereits auch laufen, da ich mit meinem GIRA Homeserver die Website dann auslese. Und auch übers Web kann man dann einfach Werte ändern! LG PETER
1 | $url = $E[2]['value']; // URL für Abfrage |
2 | $login = $E[3]['value']; // User vom LBS-Eingang |
3 | $password = $E[4]['value']; // Password vom LBS-Eingang |
4 | $ch = curl_init(); |
5 | //Login Daten
|
6 | curl_setopt($ch, CURLOPT_URL,$url); |
7 | curl_setopt($ch, CURLOPT_VERBOSE, 1); |
8 | curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); |
9 | curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); |
10 | curl_setopt($ch, CURLOPT_USERPWD, "$login:$password"); |
11 | curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); |
12 | $result = curl_exec($ch); |
13 | $json_raw=('{"entries":' . $result) . '}'; |
14 | |
15 | $json=json_decode($json_raw); |
16 | $data = json_decode($json_raw); |
17 | $rows=(count($data->entries)-1); |
18 | |
19 | |
20 | |
21 | //OID Nummer den jeweiligen Werten zuweisen, als Variable festlegen!
|
22 | $OID_Aussentemperatur = '/1/15/0/0/0/0'; |
23 | $OID_Warmwassertemperatur_IST ='/1/15/0/0/4/0'; |
24 | $OID_Warmwassertemperatur_SOLL ='/1/15/0/1/4/0'; |
25 | $OID_Kesseltemp_IST = '/1/15/0/0/7/0'; |
26 | $OID_Kesseltemp_SOLL = '/1/15/0/1/7/0'; |
27 | $OID_VORLAUF_HK1_IST = '/1/15/0/0/2/0'; |
28 | $OID_VORLAUF_HK1_SOLL ='/1/15/0/1/2/0'; |
29 | $OID_VORLAUF_HK2_IST ='/1/15/1/0/2/0'; |
30 | $OID_VORLAUF_HK2_SOLL ='/1/15/1/1/2/0'; |
31 | $OID_RAUMT_HK1_IST ='/1/15/0/0/1/0'; |
32 | $OID_RAUMT_HK2_IST ='/1/15/1/0/1/0'; |
33 | $OID_RAUMT_HK1_SOLL ='/1/15/0/1/1/0'; |
34 | $OID_RAUMT_HK2_SOLL ='/1/15/1/1/1/'; |
35 | $OID_KESSELLEISTUNG ='/1/60/0/0/9/0'; |
36 | $OID_ABGASTEMPERATUR ='/1/60/0/0/11/0'; |
37 | $OID_HKP_HK1 ='/1/15/0/1/20/0'; |
38 | $OID_HKP_HK2 ='/1/15/1/1/20/0'; |
39 | $OID_WW_Ladepumpe ='/1/15/0/1/66/0'; |
40 | $OID_MISCHER_HK1 ='/1/15/0/1/21/0'; |
41 | $OID_MISCHER_HK2 ='/1/15/1/1/21/0'; |
42 | $OID_MODUS ='/1/15/0/3/50/0'; |
43 | $OID_PHASE ='/1/60/0/2/1/0'; |
44 | $OID_VERBRAUCH_GES ='/1/60/0/23/103/0'; |
45 | $OID_VERBRAUCH_FUELLUNG ='/1/60/0/23/100/0'; |
46 | $OID_T_REINIGUNG ='/1/60/0/20/61/0'; |
47 | $OID_T_HAUPTREINIGUNG ='/1/60/0/20/62/0'; |
48 | $OID_T_WARTUNG ='/1/60/0/20/63/0'; |
49 | $OID_BRENNERSTARTS ='/1/60/0/2/80/0'; |
50 | $OID_BETRIEBSSTUNDEN='/1/60/0/2/81/0'; |
51 | $OID_KESSEL_SOLL_TEMP ='/1/60/0/1/7/0'; |
52 | $OID_BETRIEBSWAHL_HK1 ='/1/15/0/3/50/0'; |
53 | $OID_BETRIEBSWAHL_HK2 ='/1/15/1/3/50/0'; |
54 | $OID_ALARM='/1/60/0/2/0/0'; |
55 | |
56 | |
57 | $i=0; |
58 | for ($i = 0; $i <= $rows; $i++) { |
59 | //Aussentemperatur
|
60 | if ($json->entries[$i]->OID == $OID_Aussentemperatur) { |
61 | $Aussentemperatur = $json->entries[$i]->value; |
62 | }
|
63 | //Warmwassertemperatur
|
64 | if ($json->entries[$i]->OID == $OID_Warmwassertemperatur_IST) { |
65 | $Warmwassertemperatur_IST = $json->entries[$i]->value; |
66 | }
|
67 | if ($json->entries[$i]->OID == $OID_Warmwassertemperatur_SOLL) { |
68 | $Warmwassertemperatur_SOLL = $json->entries[$i]->value; |
69 | }
|
70 | if ($json->entries[$i]->OID == $OID_Kesseltemp_IST) { |
71 | $Kesseltemp_IST = $json->entries[$i]->value; |
72 | }
|
73 | if ($json->entries[$i]->OID == $OID_Kesseltemp_SOLL) { |
74 | $Kesseltemp_SOLL = $json->entries[$i]->value; |
75 | }
|
76 | if ($json->entries[$i]->OID == $OID_VORLAUF_HK1_IST) { |
77 | $VORLAUF_HK1_IST = $json->entries[$i]->value; |
78 | }
|
79 | if ($json->entries[$i]->OID == $OID_VORLAUF_HK1_SOLL) { |
80 | $VORLAUF_HK1_SOLL = $json->entries[$i]->value; |
81 | }
|
82 | if ($json->entries[$i]->OID == $OID_VORLAUF_HK2_IST) { |
83 | $VORLAUF_HK2_IST = $json->entries[$i]->value; |
84 | }
|
85 | if ($json->entries[$i]->OID == $OID_VORLAUF_HK2_SOLL) { |
86 | $VORLAUF_HK2_SOLL = $json->entries[$i]->value; |
87 | }
|
88 | if ($json->entries[$i]->OID == $OID_RAUMT_HK1_IST) { |
89 | $RAUMT_HK1_IST = $json->entries[$i]->value; |
90 | }
|
91 | if ($json->entries[$i]->OID == $OID_RAUMT_HK1_SOLL) { |
92 | $RAUMT_HK1_SOLL = $json->entries[$i]->value; |
93 | }
|
94 | if ($json->entries[$i]->OID == $OID_RAUMT_HK2_IST) { |
95 | $RAUMT_HK2_IST = $json->entries[$i]->value; |
96 | }
|
97 | if ($json->entries[$i]->OID == $OID_RAUMT_HK2_SOLL) { |
98 | $RAUMT_HK2_SOLL = $json->entries[$i]->value; |
99 | }
|
100 | if ($json->entries[$i]->OID == $OID_VORLAUF_HK2_IST) { |
101 | $VORLAUF_HK2_IST = $json->entries[$i]->value; |
102 | }
|
103 | if ($json->entries[$i]->OID == $OID_VORLAUF_HK2_SOLL) { |
104 | $VORLAUF_HK2_SOLL = $json->entries[$i]->value; |
105 | }
|
106 | if ($json->entries[$i]->OID == $OID_KESSELLEISTUNG) { |
107 | $KESSELLEISTUNG = $json->entries[$i]->value; |
108 | }
|
109 | if ($json->entries[$i]->OID == $OID_ABGASTEMPERATUR) { |
110 | $ABGASTEMPERATUR = $json->entries[$i]->value; |
111 | }
|
112 | if ($json->entries[$i]->OID == $OID_HKP_HK1) { |
113 | $HKP_HK1 = $json->entries[$i]->value; |
114 | |
115 | }if ($json->entries[$i]->OID == $OID_HKP_HK2) { |
116 | $HKP_HK2 = $json->entries[$i]->value; |
117 | }
|
118 | if ($json->entries[$i]->OID == $OID_WW_Ladepumpe) { |
119 | $WW_Ladepumpe = $json->entries[$i]->value; |
120 | }
|
121 | if ($json->entries[$i]->OID == $OID_MISCHER_HK1) { |
122 | $MISCHER_HK1 = $json->entries[$i]->value; |
123 | }
|
124 | if ($json->entries[$i]->OID == $OID_MISCHER_HK2) { |
125 | $MISCHER_HK2 = $json->entries[$i]->value; |
126 | }
|
127 | if ($json->entries[$i]->OID == $OID_MODUS) { |
128 | $str_modus = $json->entries[$i]->value; |
129 | }
|
130 | if ($json->entries[$i]->OID == $OID_PHASE) { |
131 | $str_phase = $json->entries[$i]->value; |
132 | }
|
133 | if ($json->entries[$i]->OID == $OID_VERBRAUCH_GES) { |
134 | $VERBRAUCH_GES = $json->entries[$i]->value; |
135 | }
|
136 | if ($json->entries[$i]->OID == $OID_VERBRAUCH_FUELLUNG) { |
137 | $VERBRAUCH_FUELLUNG = $json->entries[$i]->value; |
138 | }
|
139 | if ($json->entries[$i]->OID == $OID_T_REINIGUNG) { |
140 | $T_REINIGUNG = $json->entries[$i]->value; |
141 | }
|
142 | if ($json->entries[$i]->OID == $OID_T_HAUPTREINIGUNG) { |
143 | $T_HAUPTREINIGUNG = $json->entries[$i]->value; |
144 | }
|
145 | if ($json->entries[$i]->OID == $OID_T_WARTUNG) { |
146 | $T_WARTUNG = $json->entries[$i]->value; |
147 | }
|
148 | if ($json->entries[$i]->OID == $OID_BRENNERSTARTS) { |
149 | $BRENNERSTARTS = $json->entries[$i]->value; |
150 | }
|
151 | if ($json->entries[$i]->OID == $OID_BETRIEBSSTUNDEN) { |
152 | $BETRIEBSSTUNDEN = $json->entries[$i]->value; |
153 | }
|
154 | if ($json->entries[$i]->OID == $OID_BETRIEBSWAHL_HK1) { |
155 | $str_modus_hk1 = $json->entries[$i]->value; |
156 | }
|
157 | if ($json->entries[$i]->OID == $OID_BETRIEBSWAHL_HK2) { |
158 | $str_modus_hk2 = $json->entries[$i]->value; |
159 | }
|
160 | if ($json->entries[$i]->OID == $OID_ALARM) { |
161 | $str_alarm = $json->entries[$i]->value; |
162 | }
|
163 | }
|
164 | switch($str_phase) //Zuordnung der Betriebsphase |
165 | {
|
166 | case("0"): |
167 | $PHASE=('"Brenner gesperrt"'); |
168 | break; |
169 | case("1"): |
170 | $PHASE=('Selbsttest'); |
171 | break; |
172 | case("2"): |
173 | $PHASE=('WE ausschalten'); |
174 | break; |
175 | case("3"): |
176 | $PHASE=('Standby'); |
177 | break; |
178 | case("4"): |
179 | $PHASE=('Brenner AUS'); |
180 | break; |
181 | case("5"): |
182 | $PHASE=('Vorspülen'); |
183 | break; |
184 | case("6"): |
185 | $PHASE=('Zündphase'); |
186 | break; |
187 | case("7"): |
188 | $PHASE=('Flammenstabilisierung'); |
189 | break; |
190 | case("8"): |
191 | if($res_wwp >= "1" and $res_mischer=-100){ |
192 | $PHASE=('Warmwasser-Ladung'); |
193 | }else{ |
194 | $PHASE=('Modulationsbetrieb'); |
195 | }
|
196 | break; |
197 | case("17"): |
198 | $PHASE=('Ausbrand'); |
199 | break; |
200 | }
|
201 | |
202 | switch($str_modus) //Zuordnung aktueller Betriebsmodus Allgemein |
203 | {
|
204 | case("0"): |
205 | $MODUS=('Standby'); |
206 | break; |
207 | default:
|
208 | $MODUS=('Kein Modus erkannt'); |
209 | break; |
210 | case("1"): |
211 | $MODUS=('Heizprogramm 1'); |
212 | break; |
213 | case("2"): |
214 | $MODUS=('Heizprogramm 2'); |
215 | break; |
216 | case("3"): |
217 | $MODUS=('Heizprogramm 3'); |
218 | break; |
219 | case("4"): |
220 | $MODUS=('Heizbetrieb'); |
221 | break; |
222 | case("5"): |
223 | $MODUS=('Absenkbetrieb'); |
224 | break; |
225 | case("6"): |
226 | $MODUS=('Warmwasserprogramm'); |
227 | break; |
228 | case("7"): |
229 | $MODUS=('LEER'); |
230 | break; |
231 | |
232 | }
|
233 | |
234 | switch($str_modus_hk1) //Zuordnung aktueller Betriebsmodus Allgemein |
235 | {
|
236 | case("0"): |
237 | $BETRIEBSWAHL_HK1=('Standby'); |
238 | break; |
239 | default:
|
240 | $BETRIEBSWAHL_HK1=('Kein Modus erkannt'); |
241 | break; |
242 | case("1"): |
243 | $BETRIEBSWAHL_HK1=('Heizprogramm 1'); |
244 | break; |
245 | case("2"): |
246 | $BETRIEBSWAHL_HK1=('Heizprogramm 2'); |
247 | break; |
248 | case("3"): |
249 | $BETRIEBSWAHL_HK1=('Heizprogramm 3'); |
250 | break; |
251 | case("4"): |
252 | $BETRIEBSWAHL_HK1=('Heizbetrieb'); |
253 | break; |
254 | case("5"): |
255 | $BETRIEBSWAHL_HK1=('Absenkbetrieb'); |
256 | break; |
257 | case("6"): |
258 | $BETRIEBSWAHL_HK1=('Warmwasserprogramm'); |
259 | break; |
260 | case("7"): |
261 | $BETRIEBSWAHL_HK1=('LEER'); |
262 | break; |
263 | |
264 | }
|
265 | |
266 | switch($str_modus_hk2) //Zuordnung aktueller Betriebsmodus Allgemein |
267 | {
|
268 | case("0"): |
269 | $BETRIEBSWAHL_HK2=('Standby'); |
270 | break; |
271 | default:
|
272 | $BETRIEBSWAHL_HK2=('Kein Modus erkannt'); |
273 | break; |
274 | case("1"): |
275 | $BETRIEBSWAHL_HK2=('Heizprogramm 1'); |
276 | break; |
277 | case("2"): |
278 | $BETRIEBSWAHL_HK2=('Heizprogramm 2'); |
279 | break; |
280 | case("3"): |
281 | $BETRIEBSWAHL_HK2=('Heizprogramm 3'); |
282 | break; |
283 | case("4"): |
284 | $BETRIEBSWAHL_HK2=('Heizbetrieb'); |
285 | break; |
286 | case("5"): |
287 | $BETRIEBSWAHL_HK2=('Absenkbetrieb'); |
288 | break; |
289 | case("6"): |
290 | $BETRIEBSWAHL_HK2=('Warmwasserprogramm'); |
291 | break; |
292 | case("7"): |
293 | $BETRIEBSWAHL_HK2=('LEER'); |
294 | break; |
295 | |
296 | }
|
297 | |
298 | switch($str_alarm) |
299 | {
|
300 | default: $alarm_text("Sonstiger Alarm"); |
301 | break; |
302 | case("-"): $alarm_text="Kein Alarm"; |
303 | break; |
304 | case("1"): $alarm_text="Primärluftklappe blockiert oder defekt."; |
305 | break; |
306 | case("3"): $alarm_text="Sekundärluftklappe blockiert oder defekt."; |
307 | break; |
308 | case("5"): $alarm_text="Entaschung / Rostrüttelung defekt oder steckt. Brennertopf reinigen."; |
309 | break; |
310 | case("6"): $alarm_text="Motor Förderschnecke defekt"; |
311 | break; |
312 | case("8"): $alarm_text="Heizflächenreinigung defekt Heizflächenreinigung überprüfen."; |
313 | break; |
314 | case("15"): $alarm_text="Netzspannung nicht vorhanden"; |
315 | break; |
316 | case("16"): $alarm_text="Saugzuggebläse defekt Gebläserad und Gebläsekasten reinigen."; |
317 | break; |
318 | case("17"): $alarm_text="Saugzuggebläse steckt Gebläserad reinigen."; |
319 | break; |
320 | case("18"): $alarm_text="Saugzuggebläse instabil"; |
321 | break; |
322 | case("37"): $alarm_text="Klappe Pelletszuführung öffnet nicht Klappe in Zuführeinheit überprüfen."; |
323 | break; |
324 | case("40"): $alarm_text="Absperreinheit defekt Absperreinheit der Pelletszuführung öffnet oder schließt nicht."; |
325 | break; |
326 | case("41"): $alarm_text="Schalter Deckel Vorratsbehälter defekt Schalter Deckel Vorratsbehälter überprüfen."; |
327 | break; |
328 | case("42"): $alarm_text="Relais Saugturbine defekt Netzstecker am Kessel abstecken."; |
329 | break; |
330 | case("57"): $alarm_text="Brennerstörung"; |
331 | break; |
332 | case("62"): $alarm_text="Zuluftklappe defekt bzw. öffnet nicht. Klappe überprüfen."; |
333 | break; |
334 | case("71"): $alarm_text="Sicherheits-/Notschalter offen Schalterstellung bei Sicherheits- und Notschaltern kontrollieren."; |
335 | break; |
336 | case("76"): $alarm_text="Kesselfühler defekt Kesselfühler und Anschlüsse prüfen."; |
337 | break; |
338 | case("78"): $alarm_text="Thermocontrolfühler defekt Thermocontrolfühler und Anschlüsse überprüfen."; |
339 | break; |
340 | case("88"): $alarm_text="O2-Sonde defekt O2-Sonde und Anschlüsse überprüfen."; |
341 | break; |
342 | case("89"): $alarm_text="O2-Sonde Heizung defekt O2-Sonde; Trafo und Anschlüsse überprüfen."; |
343 | break; |
344 | case("101"): $alarm_text="TWE-Fühler defekt"; |
345 | break; |
346 | case("103"): $alarm_text="Kessel-Fühler defekt"; |
347 | break; |
348 | case("104"): $alarm_text="TPE-Fühler defekt"; |
349 | break; |
350 | case("105"): $alarm_text="TPA-Fühler defekt"; |
351 | break; |
352 | case("107"): $alarm_text="Saugzuggebläse steckt Gebläserad reinigen."; |
353 | break; |
354 | case("114"): $alarm_text="Weichen-/Pufferfühler defekt Weichen-/Pufferfühler und Anschlüsse am Kaskadenmodul überprüfen."; |
355 | break; |
356 | case("115"): $alarm_text="ZSK Kesselfühler defekt"; |
357 | break; |
358 | case("128"): $alarm_text="Keine Flammenbildung im Regelbetrieb Kessel und Brenner reinigen."; |
359 | break; |
360 | case("129"): $alarm_text="Maximale Ausbrandzeit überschritten"; |
361 | break; |
362 | case("130"): $alarm_text="Brennraumtemperatur zu gering"; |
363 | break; |
364 | case("133"): $alarm_text="Sicherheitstemperatur Abschaltung Anlage und Fülldruck überprüfen."; |
365 | break; |
366 | case("135"): $alarm_text="Übertemperatur am Schneckenrohr"; |
367 | break; |
368 | case("144"): $alarm_text="Sicherheitseinrichtung unterbrochen Sicherheitseinrichtung überprüfen."; |
369 | break; |
370 | case("155"): $alarm_text="Wassermangelsicherung hat angesprochen Anlagendruck überprüfen."; |
371 | break; |
372 | case("156"): $alarm_text="Kein Unterdruck im Brennraum bzw. Sensor defekt."; |
373 | break; |
374 | case("171"): $alarm_text="Maximale Anheizzeit überschritten Brennertopf reinigen."; |
375 | break; |
376 | case("186"): $alarm_text="Keine Kommunikation mit MES Modul"; |
377 | break; |
378 | case("187"): $alarm_text="Keine Kommunikation mit Feuerungsautomat Bindung Feuerungsautomat und Anschlüsse überprüfen."; |
379 | break; |
380 | case("188"): $alarm_text="Internal error occurred"; |
381 | break; |
382 | case("189"): $alarm_text="Keine Kommunikation mit Zusatzprint Bindung Zusatzprint; Feuerungsautomat und Anschlüsse prüfen"; |
383 | break; |
384 | case("191"): $alarm_text="GAS-FA meldet Störung"; |
385 | break; |
386 | case("194"): $alarm_text="Keine Kommunikation mit einem Wärmeerzeuger"; |
387 | break; |
388 | case("195"): $alarm_text="Brennraumtür im Betrieb geöffnet"; |
389 | break; |
390 | case("206"): $alarm_text="Überwachung der Förderschnecke defekt"; |
391 | break; |
392 | case("208"): $alarm_text="Heizflächenreinigung defekt Heizflächenreinigung überprüfen."; |
393 | break; |
394 | case("226"): $alarm_text="Keine Flammenbildung beim Zünden Zündvorgang nicht erfolgreich"; |
395 | break; |
396 | case("238"): $alarm_text="Zuführung saugt keine Pellets an Pelletsvorrat im Lagerraum und Zuführschlauch überprüfen."; |
397 | break; |
398 | case("239"): $alarm_text="Sondenumschaltung defekt Umschalteinheit überprüfen."; |
399 | break; |
400 | case("240"): $alarm_text="Absperreinheit Pelletszuführung offen Absperreinheit der Pelletszuführung schließt nicht."; |
401 | break; |
402 | case("241"): $alarm_text="Deckel Vorratsbehälter offen Deckel Vorratsbehälter schließen."; |
403 | break; |
404 | case("266"): $alarm_text="Fülltürschalter schaltet nicht Nicht mehr einheizen."; |
405 | break; |
406 | case("268"): $alarm_text="Verkleidungstürschalter defekt"; |
407 | break; |
408 | case("281"): $alarm_text="Abgastemperaturfühler defekt Abgastemperaturfühler und Anschlüsse überprüfen."; |
409 | break; |
410 | case("296"): $alarm_text="Vorlauffühler defekt"; |
411 | break; |
412 | case("297"): $alarm_text="Sollwert wird nicht erreicht"; |
413 | break; |
414 | case("299"): $alarm_text="RT-Fühler defekt"; |
415 | break; |
416 | case("300"): $alarm_text="WW-Fühler defekt"; |
417 | break; |
418 | case("320"): $alarm_text="Notbetrieb! Reinigung"; |
419 | break; |
420 | case("321"): $alarm_text="Notbetrieb! Hauptreinigung"; |
421 | break; |
422 | case("322"): $alarm_text="Aschebox entleeren; Brennraum und Brennertopf reinigen."; |
423 | break; |
424 | case("324"): $alarm_text="Die Wartung ist Voraussetzung für die Gerätegarantie."; |
425 | break; |
426 | case("330"): $alarm_text="Brennraumtemperatur zu gering Hauptreinigung entsprechend der Bedienungsanleitung durchführen."; |
427 | break; |
428 | case("345"): $alarm_text="Brennraumtür offen Brenner gesperrt."; |
429 | break; |
430 | case("356"): $alarm_text="Brennraumdruck nicht stabil"; |
431 | break; |
432 | case("372"): $alarm_text="Anheizauswertung Zu geringe Brennkammertemperatur beim Anheizen."; |
433 | break; |
434 | case("373"): $alarm_text="Zu geringe Leistungsabnahme beim Anheizen."; |
435 | break; |
436 | case("374"): $alarm_text="Anheizabbruch"; |
437 | break; |
438 | case("375"): $alarm_text="Anheizen bei zu hoher Kesseltemperatur"; |
439 | break; |
440 | case("381"): $alarm_text="Vorratsbehälter leer Zeitprogramm sperrt Zuführung. Freigabezeit in Menü/ Betreiberebene ändern."; |
441 | break; |
442 | case("382"): $alarm_text="Klappe oder Schalter im Vorratsbehälter defekt. Klappe und Schalter im Vorratsbehälter überprüfen."; |
443 | break; |
444 | case("387"): $alarm_text="Fehler bei der Kommunikation mit Feuerungsautomat Reset Taste mindestens 5 sec drücken."; |
445 | break; |
446 | case("390"): $alarm_text="Notbetrieb! Kessel und Brenner reinigen. Reinigung bestätigen."; |
447 | break; |
448 | case("393"): $alarm_text="Fehlermeldung E1"; |
449 | break; |
450 | case("395"): $alarm_text="Brennraum- oder Aschetür offen."; |
451 | break; |
452 | case("396"): $alarm_text="Verkleidungstür schliessen."; |
453 | break; |
454 | case("438"): $alarm_text="Eine Zone im Lagerraum ist leer Pelletsvorrat im Lagerraum überprüfen."; |
455 | break; |
456 | case("496"): $alarm_text="Anlagen-Frostschutz aktiv"; |
457 | break; |
458 | case("499"): $alarm_text="Raum-Frostschutz aktiv"; |
459 | break; |
460 | case("500"): $alarm_text="WW-Frostschutz aktiv"; |
461 | break; |
462 | case("504"): $alarm_text="TP/TW Frostschutz aktiv"; |
463 | break; |
464 | case("520"): $alarm_text="Reinigung Aschelade entleeren; Asche unter Nachheizfläche entfernen. Thermocontrolfühler reinigen."; |
465 | break; |
466 | case("521"): $alarm_text="Hauptreinigung Hauptreinigung entsprechend der Bedienungsanleitung durchführen."; |
467 | break; |
468 | case("522"): $alarm_text="Reinigung Aschebox entleeren; Brennraum und Brennertopf reinigen."; |
469 | break; |
470 | case("523"): $alarm_text="Hauptreinigung Hauptreinigung entsprechend der Bedienungsanleitung durchführen."; |
471 | break; |
472 | case("524"): $alarm_text="Wartung Die Wartung ist Voraussetzung für die Gerätegarantie."; |
473 | break; |
474 | case("581"): $alarm_text="Vorratsbehälter ist fast leer. Pellets nachfüllen."; |
475 | break; |
476 | case("582"): $alarm_text="Vorratsbehälter ist leer. Pellets nachfüllen. Brenner wird gesperrt."; |
477 | break; |
478 | case("590"): $alarm_text="Kessel und Brenner reinigen. Reinigung bestätigen."; |
479 | break; |
480 | case("591"): $alarm_text="Vorsicht beim Öffnen der Fülltür Fülltür mind. 15 sek. lang anlüften."; |
481 | break; |
482 | case("595"): $alarm_text="Tür offen"; |
483 | break; |
484 | }
|
485 | |
486 | logic_setOutput($id, 1, $result); |
487 | logic_setOutput($id, 2, $Aussentemperatur); |
488 | logic_setOutput($id, 3, $Warmwassertemperatur_IST); |
489 | logic_setOutput($id, 4, $Warmwassertemperatur_SOLL); |
490 | logic_setOutput($id, 5, $Kesseltemp_IST); |
491 | logic_setOutput($id, 6, $Kesseltemp_SOLL); |
492 | logic_setOutput($id, 7, $VORLAUF_HK1_IST); |
493 | logic_setOutput($id, 8, $VORLAUF_HK1_SOLL); |
494 | logic_setOutput($id, 9, $VORLAUF_HK2_IST); |
495 | logic_setOutput($id, 10, $VORLAUF_HK2_SOLL); |
496 | logic_setOutput($id, 11, $RAUMT_HK1_IST); |
497 | logic_setOutput($id, 12, $RAUMT_HK1_SOLL); |
498 | logic_setOutput($id, 13, $RAUMT_HK2_IST); |
499 | logic_setOutput($id, 14, $RAUMT_HK2_SOLL); |
500 | logic_setOutput($id, 15, $KESSELLEISTUNG); |
501 | logic_setOutput($id, 16, $ABGASTEMPERATUR); |
502 | logic_setOutput($id, 17, $HKP_HK1); |
503 | logic_setOutput($id, 18, $HKP_HK2); |
504 | logic_setOutput($id, 19, $WW_Ladepumpe); |
505 | logic_setOutput($id, 20, $MISCHER_HK1); |
506 | logic_setOutput($id, 21, $MISCHER_HK1); |
507 | logic_setOutput($id, 22, $PHASE); |
508 | logic_setOutput($id, 23, $MODUS); |
509 | logic_setOutput($id, 24, $VERBRAUCH_GES); |
510 | logic_setOutput($id, 25, $VERBRAUCH_FUELLUNG); |
511 | logic_setOutput($id, 26, $T_REINIGUNG); |
512 | logic_setOutput($id, 27, $T_HAUPTREINIGUNG); |
513 | logic_setOutput($id, 28, $T_WARTUNG); |
514 | logic_setOutput($id, 29, $BRENNERSTARTS); |
515 | logic_setOutput($id, 30, $BETRIEBSSTUNDEN); |
516 | logic_setOutput($id, 31, $BETRIEBSWAHL_HK1); |
517 | logic_setOutput($id, 32, $BETRIEBSWAHL_HK2); |
518 | logic_setOutput($id, 33, $alarm_text); |
519 | //print_r($Aussentemperatur);
|
Hallo Peter Sehr interessant! How do you connect to the LON bus, physically? Thanks, Thomas
Hi Tonight I hooked my oscilloscope up with my Biowin. I've read the LonTalk Protocol Specification (see link below), and section 35.7.3.2 of the processor SAM3X datasheet (see link below), the processor of the Arduino Due that I intend to use as it has a Manchester UART natively. Based on info from these, and the oscilloscop measurements. I can conclude that the Biowin only uses the LON-bus in the mode that LonTalk calls "Special Purpose Mode". Because the BitSync is always a ZERO-ONE preamble, and the ByteSync varies between 0 and 1. While the "normal" usage of the LON bus specifies a number of 1's as the BitSync and always only a 0 as ByteSync. Which did not happen at all when I was logging the bus. Well, that was the very first thing I noticed. I'll decode the data retreived on the bus, to see how it matches the LonTalk specification. It would be really exciting if it will be possible to hook an Arduino up directly to the LON-bus :) http://www.enerlon.com/JobAids/Lontalk%20Protocol%20Spec.pdf http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-11057-32-bit-Cortex-M3-Microcontroller-SAM3X-SAM3A_Datasheet.pdf
Thomas schrieb: > Hallo Peter > > Sehr interessant! > > How do you connect to the LON bus, physically? > > Thanks, Thomas Garnicht, ich baue die Verbindung übers LAN zum Webserver (RC 7030) direkt auf, und lese von dort die Daten ein! Funktioniert nun schon seit einem halben Jahr einfach perfekt! PETER
Habe den PHP Code nun ein wenig modifiziert und verbesser: <?php $url = 'http://IP-ADRESSE';; // URL für Abfrage $login = 'Service'; // User vom LBS-Eingang $password = 'PASSWORT'; // Password vom LBS-Eingang //OID Nummer den jeweiligen Werten zuweisen, als Variable festlegen! $liste = array( array("Aussentemperatur", "/1/15/0/0/0/0"), array("Warmwassertemperatur_IST", "/1/15/0/0/4/0"), array("Warmwassertemperatur_SOLL", "/1/15/0/1/4/0"), array("Kesseltemp_IST", "/1/15/0/0/7/0"), array("Kesseltemp_SOLL", "/1/15/0/1/7/0"), array("VORLAUF_HK1_IST", "/1/15/0/0/2/0"), array("VORLAUF_HK1_SOLL", "/1/15/0/1/2/0"), array("VORLAUF_HK2_IST", "/1/15/1/0/2/0"), array("VORLAUF_HK2_SOLL", "/1/15/0/0/0/0"), array("RAUMT_HK1_IST", "/1/15/0/0/1/0"), array("RAUMT_HK2_IST", "/1/15/1/0/1/0"), array("RAUMT_HK1_SOLL", "/1/15/0/3/51/0"), array("RAUMT_HK2_SOLL", "/1/15/1/3/51/0"), array("KESSELLEISTUNG", "/1/60/0/0/9/0"), array("ABGASTEMPERATUR", "/1/60/0/0/11/0"), array("HKP_HK1", "/1/15/0/1/20/0"), array("HKP_HK2", "/1/15/1/1/20/0"), array("WW_Ladepumpe", "/1/15/0/1/66/0"), array("MISCHER_HK1", "/1/15/0/1/21/0"), array("MISCHER_HK2", "/1/15/1/1/21/0"), array("MODUS", "/1/15/0/3/50/0"), array("PHASE", "/1/60/0/2/1/0"), array("VERBRAUCH_GES", "/1/60/0/23/103/0"), array("VERBRAUCH_FUELLUNG", "/1/60/0/23/100/0"), array("T_REINIGUNG", "/1/60/0/20/61/0"), array("T_HAUPTREINIGUNG", "/1/60/0/20/62/0"), array("T_WARTUNG", "/1/60/0/20/63/0"), array("BRENNERSTARTS", "/1/60/0/2/80/0"), array("BETRIEBSSTUNDEN", "/1/60/0/2/81/0"), array("KESSEL_SOLL_TEMP", "/1/60/0/1/7/0"), array("BETRIEBSWAHL_HK1", "/1/15/0/3/50/0"), array("BETRIEBSWAHL_HK2", "/1/15/1/3/50/0"), array("ALARM", "/1/60/0/2/0/0") ); $rows=(count($liste)-1); $ch = curl_init(); //Login-Daten $url = $url . '/api/1.0/datapoint'; // URL für Abfrage $login = $login; // User $password = $password; // Password for($i=0; $i <= $rows; $i++) { $oid_url= ($liste[$i][1]); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url . $oid_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); curl_setopt($ch, CURLOPT_USERPWD, "$login:$password"); curl_setopt($ch, CURLOPT_ENCODING, ''); curl_exec($ch); $result=curl_exec($ch); $json_raw=('{"entries":' . $result) . '}'; //echo($result); $json=json_decode($json_raw,true); //print_r($json); foreach ($json as $element) { echo $liste[$i][0] .": " . $element["value"].'<br>'; } curl_close($ch); } ?>
Hi pkuli6kg_KNXUF Super script. Ich bin gerade dabei meinen PuroWin auch mit PHP auszulesen. Ich finde nur keine vollständige Liste meiner datapoints. Wie und wo hast du diese bekommen? Eine vielleicht nützliche Info für die API: Bei der Mycomfort App unter Einstellungen/Geschütze Einstellungen findet man eine DNS-Url wo man dann vom Internet aus auf den Ofen zugreifen kann. Ist nur die Frage ob das von Windhager mitgetrackt wird... Grüße
Hallo, Ich habe keine vollständige Liste gefunden (Habe auch mit WH gesprochen, die konnten mir so eine Liste auch nicht geben, obwohl sie sehr hilfreich sind) - habe mir die Daten die ich auslesen wollte "einzeln" rausgesucht aus dem Web-Frontend. Am besten den Wert suchen, und dann mit Firefox "F12" Entwicklerkonsole die URL suchen (das ist dann ja gleichzeitig der OID) Die kannst du in meinem Script ja dann adaptieren, aber ich denke das diese ähnlich sind, oder? Ich habe gerade gesehen, dass mein Skript nicht vollständig hochgeladen wurde, wenn du Hilfe brauchst kannst du mich gerne kontaktieren, und das Skript schicken, habe die Tage gerade eben wieder etwas verbessert. Wo verwendest du dein System? Hast du KNX Bus mit Visualisierung, oder nur so? peter.kulig(at)gmailDOTcom LG PETER
Achja, ganz vergessen: Ja die URL ist so wie du sagtest, bzw. ganz einfach: https://MAC-ADRESSE.windhager-dns.com/api/1.0/datapoint Zur Info, unter http://IP/api-docs/ gibt es eine Dokumentation, habe ich gefunden, stehen einige Daten drinnen Hier noch ein Code wie du Werte (zB. Raumtemperatur) ändern kannst:
1 | $url = $E[2]['value'] . '/api/1.0/datapoint'; // URL für Abfrage |
2 | $login = $E[3]['value']; // User vom LBS-Eingang |
3 | $password = $E[4]['value']; // Password vom LBS-Eingang |
4 | $oid = $E[5]['value']; // User vom LBS-Eingang |
5 | $value = $E[6]['value']; // Password vom LBS-Eingang |
6 | $ch = curl_init(); |
7 | logic_setOutput($id, 2, $oid); |
8 | //Daten in Array schreiben
|
9 | //$array_json = array("OID","value");
|
10 | $array_json->OID =$oid; |
11 | $array_json->value =$value; |
12 | |
13 | //Aus dem Array JSON-Format machen
|
14 | $data_json = json_encode($array_json); |
15 | //logic_setOutput($id, 2, $url);
|
16 | //Abfrage ausführen
|
17 | |
18 | $ch = curl_init(); |
19 | curl_setopt($ch, CURLOPT_URL, $url); |
20 | curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); |
21 | curl_setopt($ch, CURLOPT_USERPWD, "$login:$password"); |
22 | curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data_json))); |
23 | curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); |
24 | curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json); |
25 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); |
26 | $response = curl_exec($ch); |
27 | curl_close($ch); |
28 | logic_setOutput($id, 1, $response); |
29 | logic_setOutput($id, 3, $value); |
30 | |
31 | //EINLESEN DER NEUEN WERTE UND AKTUALISIEREN
|
32 | $ch = curl_init(); |
33 | //Login Daten
|
34 | curl_setopt($ch, CURLOPT_URL,$url . $oid); |
35 | curl_setopt($ch, CURLOPT_VERBOSE, 1); |
36 | curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); |
37 | curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); |
38 | curl_setopt($ch, CURLOPT_USERPWD, "$login:$password"); |
39 | curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); |
40 | curl_exec($ch); |
41 | $result = curl_exec($ch); |
42 | //echo($result);
|
43 | $json=json_decode($result); |
44 | $wert_rm = $json->value; |
45 | $enum = $json->enum; |
46 | logic_setOutput($id,5, $enum); |
47 | |
48 | // Abfrage wenn der abgefragte Datenpunkt die Betriebsmodi darstellt, ansonsten wird der value Wert direkt übernommen!
|
49 | if ($enum =="[0,1,2,3,4,5,7]") { |
50 | switch($wert_rm) //Zuordnung aktueller Betriebsmodus Allgemein |
51 | {
|
52 | case("0"): |
53 | $wert_rm=('Standby'); |
54 | break; |
55 | default:
|
56 | $wert_rm=('Kein Modus erkannt'); |
57 | break; |
58 | case("1"): |
59 | $wert_rm=('Heizprogramm 1'); |
60 | break; |
61 | case("2"): |
62 | $wert_rm=('Heizprogramm 2'); |
63 | break; |
64 | case("3"): |
65 | $wert_rm=('Heizprogramm 3'); |
66 | break; |
67 | case("4"): |
68 | $wert_rm=('Heizbetrieb'); |
69 | break; |
70 | case("5"): |
71 | $wert_rm=('Absenkbetrieb'); |
72 | break; |
73 | case("6"): |
74 | $wert_rm=('Warmwasserprogramm'); |
75 | break; |
76 | case("7"): |
77 | $wert_rm=('LEER'); |
78 | break; |
79 | }
|
80 | }
|
81 | |
82 | logic_setOutput($id, 4, $wert_rm); |
Hi, ich hab einen Windhager Kessel und ein MES modul. Gibts irgentwo noch die Service software?
Hallo Daniel, hast du denn einen XLON-USB Adapter? Denn nur mit dem funktioniert die Service SW. Und selbst dann kannst du nur FW Updates bei den Modulen machen, und nichts auslesen.
Hi, nein ich hab das MES Modul mit ner Seriellen Schnittstelle an der Front. Das ist ein original Windhager Teil, dass man vorne in einen Einschub schieben kann. Damit kann man Daten auslesen mitloggen usw. Mein Heizungsbauer hatte da ne Service Software die das alles angezeigt hatte. Der hat die aber auch nicht mehr.
Ich kenne dieses Teil, das war bei mir auch schon mal im Einsatz. Die in diesem Beitrag oben erwähnte Service Software hat aber nichts mit dem MES Modul zu tun. Die dient, mit dem XLON-USB zusammen, "nur" zum updaten der Modul FW und zum tauschen der Hauptplatine des Kessels (sichert ein paar Parameter, und restauriert diese auf der neuen Baugruppe). Für das MES Modul muss es eine extra Software geben, die aber nicht auf den Seiten von Windhager zu finden ist (und ich auch nicht habe).
Ah ok. Das dumme ist, dass ich die Software schon mal hatte. Leider aber nicht mehr finde. Vor 8 Jahren, als die Anlage eingebaut wurde hat mein Heizungsbauer mir die gegeben. Ich denke der Einschub ist nicht viel mehr als ein LON-UART adapter (obwohl da ganz schön viel Bauteile drauf sind). Ich frag nochmal meinen Heizi...
Hallo zusammen, ich hatte den thread vor einigen Jahren mal gelesen und damals erschien mir das alles noch recht aussichtslos. Ihr seid mittlerweile ja wirklich erfolgreich. Ich habe auch seid einigen Jahren einen Windhager Biowin 2 im Einsatz, der direkt an den Heizkreis angeschlossen ist. Um die Brenndauer zu verlängern, würde ich gerne die Warmwasserladung nicht mehr mit dem Wochenprogramm durchführen. Sobald es zu wenig Abnahme durch den Heizkreis gibt und die Kesseltemperatur richtung Maximalwert steigt, sollte die Warmwasserladung starten, bevor der Kessel in Ausbrand geht. Dazu müsste ich die aktuelle Kesseltemperatur auslesen (ich konnte auch einen Temperaturfühler am Vorlauf des Kessels montiren) und das wichtigste, ich müsste die manuelle Warmwasser Ladefreigabe emitieren. Gibt es dazu einen API Befehl? Hardwareseitig habe ich einen Loxone Smart home Server, der über einen virtuellen Ausgang den API Befehl senden könnte. Zur Verbindung mit dem Lon Bus müsste ich dann noch einen Windhager Webserver kaufen!? Den Webserver (RC 7030) scheint es wohl nicht mehr zu geben, sondern nur noch den Webserver Touch um gut 400Euro. Auf der Platine des Pelletkessel selbst wird es vermutlich keinen "Eingang" geben um eine Warmwasserladefreigabe von extern auszulösen!?
Hallo Martin, mit "meiner" Konfiguration (siehe Bild), mit dem XLON-USB Adapter, kann ich inzwischen nicht nur alle Werte aus dem Kessel und UML+ auslesen, sondern auch verändern. Das beinhaltet auch zB. die Warmwasserfreigabe, und auch das ändern der Heiz-/WW-Programme. Aber alles nur über den XLON-USB mit den im Bild zu sehenden DLL auf Windows Basis. Wenn eine andere Möglichkeit der LON Kopplung/Steuerung vorhanden ist, kann ich die LON "Befehle" liefern, die bei meinem VarioWin mit UML+ verwendet werden. lg. Peter
Hallo Zusammen, da ich an dieser Steuerung schon eine Weile interessiert bin, habe ich eine Frage an die Gruppe. Bei mir läuft ein WH Genio 210 Gasbrennwertgerät mit MES Steuerung, gibt es da eine Möglichkeit die fernzusteuern? Über Antworten würde ich mich freuen. LG aus Österreich Rudolf
Hallo Rudolf, wenn du in deiner MES Steuerung ein UML+ Modul hast (da sind keine Poti zum einstellen drauf im Unterschied zu einem alten UML), dann sollte es möglich sein. Dann brauchst du eine LON Schnittstelle (zB. den oben genannten XLON-USB Adapter, aber teuer), und eine passende SW dazu. Die Befehle und Steuermöglichkeiten für Pellets Kessel sind mir schon bekannt, für Gasgeräte nicht. Da müsste dann noch einiges an „Forschung“ gemacht werden. Peter
Hallo Peter, danke für Deine schnelle Rückmeldung. Es dürfte eine UML+ Steuerung sein, aber die Preise für die Schnittstelle sind ziemlich heftig. Da werde ich wohl passen, der Kessel ist auch schon 15 Jahre alt und eigentlich sehr zuverlässig. Für die Bastelei mit einer Steuerung fehlt mir dann auch die Geduld. Vielen Dank auf alle Fälle. LG Rudi
Hallo Forum, ich habe den Thread gefunden, da ich auch auf der Suche bin, Daten aus den Modulen/dem Bus auszulesen zu können und idealerweise in meinen ioBroker oder sonstiges einzubinden. Zur Zeit laufen bei mir eine ioBroker Instanz und 2 Homebridge Instanzen. Hintergrund ist, dass die Heizung PMX150 seit einiger Zeit verrückt spielt, mir aber niemand wirklich weiterhelfen kann. Vielleicht kann ich ja auf diese Art und Weise herausfinden, ob bzw. welches Teil der Anlage nicht richtig arbeitet oder nicht richtig eingestellt ist. Meine Heizung besitzt 2 UML-C1 Module (1xHeizkörper, 1xFubo) mit jeweils einem FB5210 Bedienteil, daneben befindet sich ein leerer Einschub. Wäre für weiterführende links zu benötigter Hardware/Software sehr sehr dankbar... Danke schon mal im voraus Gerald
Hallo Daniel Hast du diese Schnittstelle noch? Kann ich sie dir abkaufen? Bitte um Antwort. Lg
Roman B. schrieb: > Hallo Zusammen, > > leider habe ich mit dem Adapter noch nicht geschafft... Mein Urlaub war > zu kurz. > [...] > Viel Spaß, > Roman Hi Roman, ich habe Deinen ioBroker Adapter für meinen BioWin2 Kessel installiert. Die Verbindung der Instanz zum Kessel klappte sofort und alle Datenobjekte wurden angelegt. Super! Ich habe aber den Effekt, dass die Werte vom Kessel in ioBroker nur aktualisiert werden, wenn ich vorher einmal die myComfort App öffne oder vorher den Wert direkt auf der Webpage des Kessels vorab einmal aufrufe. Wie ist dieser Effekt zu erklären? Für die VIS sollte ioBroker selbst regelmäßig die Werte in der Steuerung aktualisieren und abrufen. Habe ich einen Schritt in der Einrichtung vergessen? Danke für die tolle Arbeit, hoffe auf einen Tipp 🙂 Viele Grüße Felix
Ich würde die Spezialisten aus dem Mail-Betrag bitten, mir alle Unterlagen zum LONBUS, openLDV etc. zu senden, mir fehlen noch ein paar Puzzlesteine im CNIP-Protokoll bzw. Layer 2, gern auch per p.M. Danke
Hab folgendes bei meiner Bedienungsanleitung gefunden. Wers braucht... Parameter & Werte LG Helmut
Windhager PMX Probleme mit der Hauptplatine. Hallo, ich bin bei der Internetrecherche hier auf diese Seite gestoßen. Nun zu dem Problem, ich habe mir eine 2 Platine auf Reserve gekauft welche auch funktioniert hat. Da ich halt ein neugieriger Menschen bin habe ich den Flashspeicher Mal rausgebaut. Jetzt geht die Platine leider nicht mehr, sie zeigt bei P 1 "0" anstatt der "75" Grad an. Auch die Anzeigephasen usw. sind weg. Funktionieren tut sie allerdings im Handbetrieb. Frage, habe ich durch den Ausbau des Flashspeichers da was gelöscht und kann man das wieder neu programmieren? Wäre schön wenn mir da vielleicht jemand weiter helfen könnte. Grüße Michael
Hallo Peter, ich hoffe dass Sie mir vielleicht irgendwie weiter helfen können. Ich habe eine Windhager PMX 150 Pelletheizung. Ich habe mir eine 2 Platine auf Reserve gekauft welche auch funktioniert hat. Jetzt habe ich da den Flashspeicher Mal raus/ getauscht und nun sind da denke ich teilweise Daten weg (meine laienhafte Meinung) Frage an Sie, kann man die irgendwie neu programmieren oder kennen Sie jemanden der das kann, ich möchte halt die Platine nicht schon wieder entsorgen müssen.😕 Wäre schön wenn Sie mir vielleicht weiter helfen könnten. Ansonsten Grüße Michael
Hallo, ich habe 2 x PMX welche über 20 Jahre alt sind. Da die Kessel leider doch öfters auf Störung gehen wäre mein größter Wunsch eine Web App zu haben wo ich die jeweiligen Status des Kessel sehen kann. Da Windhager für diesen alten Kessel selber keine Möglichkeit einer Anbindung bietet muss selber etwas gebaut werden. In Bezug auf Mikroelektronik bin ich zwar sehr interessiert aber leider unerfahren, meine Vorstellung wäre gewesen beim Steuerungsdisplay (Raumthermostat) dort die Daten abzufangen. Könnt Ihr mir ein Tool bauen (bzw. habt ihr das ja schon?) was ich einfach nur irgendwo anhängen muss um damit die Daten auszulesen? Aufbauend auf dieses Tool einen Webserver wo man eben die Stats dann sehen kann?! Zahle gerne für eure Hilfe! LG
Hallo an alle. Ich habe einen DuoWin180 und würde den überhaupt erst mal gerne Netzwerkfähig machen. Dazu wollte ich mir eigentlich den Webserver RC7030 organisieren. Doch den gibt es von Windhager nicht mehr. Dafür gibt es jetzt einen Webserver touch. Doch damit tut sich mein Installateur irgendwie schwer und Windhager selber will für die Hardware und die Installation knapp 1000€ (wovon 420€ schon alleine der neue Webserver kostet). Das ist mir aber etwas zu happig. Und an Privatleute verkaufen die das Teil ohnehin nicht. Also falls hier irgendjemand zufällig den RC7030 noch rumliegen hat und diesen für einen fairen Kurs abgeben möchte wäre ich da sehr interessiert daran. Gruß René
Michael S. schrieb: > Hallo Peter, > ich hoffe dass Sie mir vielleicht irgendwie weiter helfen können. > Ich habe eine Windhager PMX 150 Pelletheizung. > Ich habe mir eine 2 Platine auf Reserve gekauft welche auch funktioniert > hat. > Jetzt habe ich da den Flashspeicher Mal raus/ getauscht und nun sind da > denke ich teilweise Daten weg (meine laienhafte Meinung) > Frage an Sie, kann man die irgendwie neu programmieren oder kennen Sie > jemanden der das kann, ich möchte halt die Platine nicht schon wieder > entsorgen müssen.😕 > Wäre schön wenn Sie mir vielleicht weiter helfen könnten. > Ansonsten Grüße > Michael Hallo Michael, du musst die Platine nach einem firmware update/ flashtausch erneut an den LON-Bus binden. Links auf der Platine ist ein Taster, gedrückt halten zum Entbinden, erneut drücken zum Binden (genau wie bei den anderen Modulen). Achtung: Wenn Du den Kessel ohne Bindung im Handbetrieb benutzt hängt die Kesselpumpe aber immer noch auf dem BUL Modul! Das schaltet die Pumpe einfach ab wenn der Speichesollwert (+6K) erreicht ist. Dann brennt dein Kessel ohne Kesselpumpe ... Fukushima....
Hallo auch von mir zu dem scheinbar einzigen Thread im WWW, der sich mit dem Abgreifen von Daten eines Windhager PMX150 befasst (ja, alte Technik, läuft aber). Da hier mittlerweile nach meinem Verständnis alte (PMX150 mit UML C1), neuere (mit UML+) und ganze neue Systeme (BioWin mit Webserver) vermischt sind, würde ich gerne :-) nochmal speziell auf die Thematik - PMX 150 mit UML-C1 über LON auslesen - kommen. Ich verstehe, für den PMX150 mit UML-C1 benötigt man - den XLON-USB Adapter, um physisch überhaupt zugreifen zu können - nicht die Windhager Service Software, da nur zum Eeprom auslesen etc - mit dem richtigen Programmcode kann man aber die Daten über den LON lesen und schreiben Jetzt hänge ich nur an dem Thema Programmcode?! Geht dies bereits mit den vom XLON-USB Adapter mitgelieferten Windows dll? Linux wäre mir auch lieber (falls da jemand etwas gemacht hat), dann könnte man das über einen Raspi zur Weiterverarbeitung zur Verfügung stellen. Kann mic da jemand auf die richtige Spur bringen? Grüße Marc
Hallo Marc, ja, neben dem XLON-USB Adapter und der mitgelieferten Windows DLL brauchst du noch eine weitere DLL (zB. aus der Service SW). Und noch ein Programm, dass dann die Daten ausliest/ändert (von mir, als VB.NET zu haben). Leider gibt es die beiden DLLs halt nur für Windows. Da wird die ganze Steuerung des XLON-USB darin abgehandelt. Da ich keine Source für die XLON-USB DLL habe, wäre es schwierig das Ganze auf Linux nachzubauen. Peter
Hi Peter, danke für die schnelle Rückmeldung. Okay, da ich die "weitere DLL" nicht habe und, was im Moment schwerer wiegt, keinen WinPC im Ferienhaus laufen lassen möchte nur um die Heizung zu schalten, schiebe ich das Thema erstmal für unbestimmte Zeit nach Hinten. Habe aktuell die Betriebsartweiterschalttasten unserer 2 Bedienterminals angezapft, so dass ich darüber mit einem Relais einen Tastendruck auslöse. Die Relais steuere ich über eine ioBroker Installation auf einem Raspi an, die Kamera des Raspis zeigt dabei die Anzeige des Bedienterminals. Dann greife ich von Extern über VPN zu. Ein klassisches "Durch die Brust ins Auge" Setup aber funktioniert zumindest, um die Betriebsarten der Heizung durchzuschalten :-) Und: lieben Dank für dein Angebot der VB.NET Ergänzung! Grüße Marc
Hallo zusammen, vor geraumer Zeit habe ich eine eigene Platine dafür gebastelt. Ich hab den Artikel dazu hier veröffentlicht: https://www.g3gg0.de/wordpress/esp32/mes-wifi-bringing-a-windhager-pellet-heater-online/ Natürlich mit ESP32, MQTT, Grafana etc. und mittlerweile auch zusätzlichen Relais um Magnetventile zu schalten. Gruß, g3gg0
@g3gg0 Hammer! Habe es gerade angeschaut, Wahnsinn! Du hast ein fertiges Modul entwickelt, an dem Windhager weder Zeit noch Lust hat etwas zumachen. Klasse! Werde mir das in einer ruhigen Minute nochmal durchlesen - und sicher mit Fragen kommen :-) Verstehe ich es richtig, dass ich einen freien Steckplatz im PMX brauche? Bei mir sind alle drei Felder belegt... Marc
Servus, Danke für das feedback :) Ja, du brauchst einen freien Steckplatz. Aber du kannst das auch sicher fliegend verdrahten. Schnapp dir einen ESP32, RS485 transceiver und einen step-down auf 5V. Dann die LON-Leitungen anzapfen und das sollte auch reichen. Eigentlich sogar in der "dead-bug"-Methode auf einem ESP32 Devboard machbar. Im Grunde ist das ein einfacher Aufbau. Ich wollte es nur "solide" und hab das deshalb als MES-Modul aufgebaut. Gruß, g3gg0
Ja, am Ende vom LON Bus einfach dranhängen, das dachte ich auch. Deinen Schaltplan hatte ich auch schon gesehen, danke! Muss wirklich mal in Ruhe das anschauen, ob meine Basisfähigkeiten in Elektrotechnik ausreichen ;-) Ja, sicher ein Zeit Thema, aber mal schauen. Und dann benötige ich bestimmt noch ein Stück Software, um das ganze in MQTT geliefert zu bekommen. Ich kenne zwar den ESP32 prinzipiell, aber nicht in der eigenen Anwendung. Übrigens: Wenn in deinem Block irgendwo der Tag PMX150 oder Windhager gesetzt wäre, vielleicht wäre ich früher darauf gestoßen? Weiß nicht, warum Tante Google das nicht ausgespuckt hat?! Marc
Okay ich hab mal PMX150 reingepackt, sollte dann irgendwann besser gefunden werden. Danke :) Die Software dafür ist auf github. Einfach WiFi-Daten angeben und MQTT-Server aktualisieren. Eigentlich(TM) musst sonst nichts mehr ändern. Gruß, Georg
Klasse, danke! Werde mich damit befassen, wird aber wohl noch ein paar Wochen dauern :-( Marc
Georg H. schrieb: > Hallo zusammen, > > vor geraumer Zeit habe ich eine eigene Platine dafür gebastelt. Hallo Georg, da hast Du ja ein Super-Projekt gebaut. Ich hatte auch schon länger mal überlegt, die Steuerung der Heizung von außen zugreifbar zu machen. Aber mir war bisher der Aufwand, den LON-Bus "zu Fuß" zu beackern dann doch immer zu hoch. War ein Mix aus knapper Zeit und Bequemlichkeit. Daher Hut ab für die Arbeit. Dein Artikel über den Bau des Moduls ist schon klasse. Auch die Elektronik sieht professionell aus. Da juckt es direkt in den Fingern, sich da mal ranzusetzen und das nachzubauen. Ich muss dann nur noch den Wlan-Teil auf Kabel umbauen, da am Standort der Heizung (Keller) kein Wlan mehr ankommt. Aber das sollte dann auch machbar sein. Grüße Horst
Hallo Horst, danke für das Kompliment. Ich finde der Platinenteil hat auch sehr viel Spaß gemacht. Bei den Steckkarten hat man auch gefühlt unendlich viel Platz :) Wenn du einen Ethernet PHY an den ESP32 hängen willst, sind glaub die LON-Leitungen (GPIOs 25, 26, 27) im Weg. Die müsstest dann umlegen auf z.B. 12, 13, 14. Falls du an einen anderen µC gedacht hast - mit der aufwändigste Part war glaub das Bit-Timing. Die Daten sind Manchester-kodiert und beim Sync-Pattern am Anfang kommen manchmal mehr oder weniger Transitionen. Wäre eigentlich auch gut mit nem kleinen FPGA lösbar - dann wäre auch das Empfangen langer Nachrichten fehlerfrei machbar. Der Arrow MAX1000 ist ein top Teil, sehr empfehlenswert. Das wäre dann ein ideales USB<->LON Board mit vielen extra IOs :) Gruß, Georg
Absolutely fabulous @g3gg0 ! I have been working on the same thing as you, but you are way ahead of me. I had begun to setup an ESP32 based M5stack with an old MAX1480 RS485 driver I had laying around, to start decoding the LON-bus. But now that you have already decoded it, I downloaded your code and made some small changes since I have very little knowledge about MQTT, Grafana and Pushingbox. And now it is up and running, I use the LCD of the M5 and also setup a small Web-server on the M5 instead, so I can easily access the information from the web just for trying out now. I guess I need to learn about MQTT, Grafana and Pushingbox :) I have a Windhager Biowin Exklusiv, that I would like to monitor and control. So I am very interested in further exploring the LON-bus protocol and all the messages, also how to send messages. I noticed however I got some strange value on abgastemperatur with your code, the result was 1365, when the actual temp was 74, and then the same 1365 when the actual temp was 104. Here is a document I found that lists nv-variables. I have no idea if Windhager complies with these, but I guess the do. https://www.exhausto.com/~/media/Global/Technical%20Documents/Manuals/3005290.pdf Ciao, Thomas
Horst V. schrieb: >> Hallo zusammen, >> >> vor geraumer Zeit habe ich eine eigene Platine dafür gebastelt. > > Hallo Georg, > > da hast Du ja ein Super-Projekt gebaut. Also dem kann ich mich nur anschließen - ein tolles Projekt! Ich möchte meine Windhager MultiWin 100 Gastherme darüber auslesen, habe genau wie du noch einen Steckplatz in der Regelung frei. Nachdem ich eher der "Softwerker" bin, wollte ich die Platine schon bestückt bei JLCPCB bestellen, leider scheitert es daran, dass manche Bauteile wie z.B. der TPS2113APWR im Moment nicht verfügbar sind.
TPS2113APWR is available here ;) But only 67 left, you better hurry up ;) https://www.arrow.com/en/products/tps2113apwr/texas-instruments
BTW, I hooked my MAX1480 up on a plain breadboard, attached it to the M5Stack and to LON-bus "Phoenix"-type connectors inside the burner. Very simple and works like a charm. I power the M5Stack from a normal USB-charger/adapter.
Servus, freut mich dass es euch hilft. Stell aber bitte sicher, dass das pinout zu deiner Anlage passt :) Ich habe keine Ahnung ob es hier relevante Unterschiede gibt und etwas abrauchen kann. Ich glaub zwar nicht, aber im Zweifel dann doch lieber erst mal von Hand aufbauen und nur LON anzapfen. Der genannte TPS2113 ist mit das Unwichtigeste auf dem Board, kannst also getrost weglassen und pins 6-8 Brücken. Ich hab ihn als Sicherheit mit drauf, dass der onboard 5V step down nicht meinen Laptop mit Strom speist, falls hier mal paar hundert mV unterschied wären. @Thomas: I assume you can read german, being on the forum here? If not, just tell. Super, dass das bei dir geklappt hat. Bin mir aber nicht sicher ob die NV Variablen deckungsgleich sind. Ich empfehle dir, mit Wireshark und dem dissector, den ich auch in meinem blog habe, die ganzen Nachrichten mitzulesen und den dissector etwas zu erweitern. Per default werden alle LON-Botschaften auf port 3333 an die broadcast-Adresse 192.168.1.255 geschickt. LON.ino:8 const char * udpAddress = "192.168.1.255"; Ich glaub ich stelle den auch in ein repository, dann kannst du deine Änderungen auch mit einpflegen. (wenn du möchtest) Gruß, Georg
:
Bearbeitet durch User
Hi Georg Great thanks! I had to swap all IO's to fit the M5stack, but that was the easy bit ;) One quick question finally for tonight. Does your software broadcast all LON-messages to wifi 192.168.1.255 as it is setup now? So I can just setup your wireshark LUA and go? That is, again, fantastic if so! Oh yes, I read german, sehr slecht, aber mit Google translate alles get :) Bis morgens :)
Yes, it's automatically broadcasting all received packets. If you send a LON frame in an UDP packet to <esp-address>:3334 (or even broadcast), then the firmware will send that frame raw on the LON bus. Using that in a C# software to poll all NVs of a given address (10, 11 or 60 in my case)
Für die C# hacker. Das ist der EXPERIMENTELLE C# code, mit dem ich die NVs testweise visualisiert hab. Sehr hässlich, dessen bin ich mir bewusst :) Nächster Schritt - sauber in Klassen kapseln: - network layer - device instance - visualization Noch ein quick'n'dirty Form1.cs code
Anderes Thema: Ich parse aktuell die NV-IDs, deren Name und den Datentyp aus der PMX_A3_V270.XIF, die ich mal gefunden hab. (Firmware version v2.70 mit den notwendigen Extradaten) Weiss jemand, ob diese Datei auch irgendwo für ein UML C1 verfügbar ist? Oder hat jemand Firwmare für andere für Modelle? Gruß, Georg
Herzlichen Dank Georg und Thomas! Ich werde wie vorgeschlagen "klein" anfangen - nun warte ich auf den RS485 Chip. Ich habe selbst auch ein UML C1 und ein WVF wie Peter viel weiter oben im Thread. Mit dem hattest du wahrscheinlich schon Kontakt Georg? LG Michael
Hi Great little LUA-script :) I ran Wireshark and got the attached log. I have sources 2, 10, 60 and 90 in my system. I am getting quite a lot of messages with Error code: 2 (Bit time too short) Messages with source 90 always have destination 60. There are some few source 60 with destination 90 and some with destination 127 that reports a RESPONSE, network variable fetch and a value, but most messages with source 60 has no destination. Those reports the Kessel temperature. Src 10 sends four different messages Date/time, (no destination) Aussen temp, (no destination) Vorlauff soll HK temp, (no destination) RESPONSE, Network variable fetch, (destination 127) None of the messages between 60 and 90 decodes the TPDU (not implemented). Messages with Src: 2 reports as UNKNOWN, but there are only three different messages that re-occur: Selector: 24, 96 or 128, Value: 00, 7fff or 01 respectively So I assume the Src address matches the following Main PCB, Src: 60 Display, Src: 90 (?) UML C1 module, Src: 10 WVF module Src: 2 (?) I guess it should be possible to get quite some further info by analyzing the traffic while operating the display to read out different info and to set various stuff to send messages from the display to request certain info. But I am not at the burner right now so this is what I could get remotely.
Hello again I could see from the system report I have around 40% CRC Errors. I might need to check up my physical connection to the LON-bus, or investigate if I have something else causing poor signal integrity. I got some help scrolling through the information on the boiler display while I was logging with wireshark, it definitely generated a lot of unknown requests and failed responses, so I guess that should be able to generate som good info to add going forward. But more on that tomorrow. I guess ID 127 is the ESP-module, and the responses I see without requests sent to 127 are responses to requests from the ESP32? And this is where the ID is set in the ESP32 code? RMT.conf_ch[channel].conf0.val = 0x01271050;
Thomas schrieb: > I could see from the system report I have around 40% CRC Errors. I might > need to check up my physical connection to the LON-bus, or investigate > if I have something else causing poor signal integrity. Uh thats bad,
1 | Message type: 1 (System report) |
2 | Bit length 0 min: 62(3,10us) |
3 | Bit length 0 avg: 252(12,60us) |
4 | Bit length 0 max: 360(18,00us) |
5 | Bit length 1 min: 361(18,05us) |
6 | Bit length 1 avg: 511(25,55us) |
7 | Bit length 1 max: 799(39,95us) |
8 | Packets received: 13778181 |
9 | Packets CRC Errors: 7834 (0,06%) |
10 | Free heap: 231576 |
11 | Max heap: 321324 |
12 | Free PSRAM: 0 |
13 | Max PSRAM: 0 |
14 | Startup time: 25.11.2021 12:17:42 |
15 | Statistics start: 25.11.2021 12:21:09 |
16 | Ignites/24h: 11 |
17 | Time: 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
18 | Ignites: 00 00 00 00 00 01 00 01 00 01 00 00 01 01 01 00 01 01 01 00 00 01 00 01 |
19 | Temperature: 41,00 |
So there is really something odd > I guess ID 127 is the ESP-module, and the responses I see without > requests sent to 127 are responses to requests from the ESP32? > > And this is where the ID is set in the ESP32 code? > > RMT.conf_ch[channel].conf0.val = 0x01271050; LON.ino:627 uint8_t nvVarCommand[] = "\x01\x19\x01\xFF\x01\x80\x54\x0D\x73\x00"; that \xff is a \x80 OR \x7F, where \x7F is the source address. I think in the receiving code I do not check the destination address, so you should be able to change it if you need to.
Hmmm this is very strange, it looks like I have a much narrower variation in bit length than you do. My variation is 0,6 us and 0,8us While yours is about 15 us and 12 us. Which is a full bit length at 78kbaud, which is also a bit strange I think. Still 100% of my errors are "Bit time too short" With a min bit length of 12,55us there should be no "Bit time too short", right? Bit length 0 min: 251(12,55us) Bit length 0 avg: 251(12,55us) Bit length 0 max: 263(13,15us) Bit length 1 min: 508(25,40us) Bit length 1 avg: 509(25,45us) Bit length 1 max: 524(26,20us) Packets received: 117 Packets CRC Errors: 53 (45,30%) Message type: 2 (LON Frame) Error code: 2 (Bit time too short) Bits sampled: 20 Bit duration: 511(63,88us)
Yeah your values look okay. Maybe some other disturbances? Would be interesting to see with a scope. I posted the statistics for more than two months of packets. And as there are known "bugs" like long packets being troublesome, these statistics may come from these.
There is something strange going on. Everytime this error is reported, the duration is 1 tick (0,05 us), while LON_0_MIN require minimum 60 (3 us).
Well, sometimes sloppiness causes extra unnecessary work. If you look closely at the photo of my breadboard above, you will notice I forgot to add power line capacitors. Now it works fine :)
Yeah one tick is a bit low. Thats the reason why it signals a corrupted packet. Ich hab mittlerweile die C# sourcen überarbeitet und eine GUI gebastelt. Leider erst mal hardcoded auf 192.168.1.255 als Adresse. (bis ich einen Optionsdialog einbaue) Zwei Features: - Passiver Device Scan (die Lupe), dann rechtsklick auf ein device zum aktiven scannen - Aktiver NV Scan (das Plus), ein Gerät (hardcoded 10, 11 und 60) aktiv scannen https://g3gg0.magiclantern.fm/LON/
:
Bearbeitet durch User
Ok, now I am getting somewhere. Attached is a request from the display for operating hours and the response from the main board. Reported operating hours on the display is 38426 hours. And the response has the payload 0x961a which equals 38426 :) Now all I need to do is go through all the rest, and learn how to get everything into the sw :)
ok update the dissector, it will show the payload now (hopefully)
It says now "Generic application message #11" And then shows 010B961A Where I believe the 010B is a message info rather than the parameter requested. I noticed the request is 020B, and then the response is 010B. I have seen several requests where the request "payload" is 02nn and the response is always 01nn. Where nn is the same in both, so I guess nn is what specifies which parameter is requested, and responded.
Hallo Georg nochmals - herzlichen Dank für deine unglaubliche Arbeit, sowohl für den ESP-Code als auch den Dissector. Ich konnte nun erste Werte vom LON-Bus abgreifen. Spannend sind für mich auch die NVs von Source 2 - ich nehme auch an, dass das das WVF ist. Georg H. schrieb: > Ich hab mittlerweile die C# sourcen überarbeitet und eine GUI gebastelt. > Leider erst mal hardcoded auf 192.168.1.255 als Adresse. (bis ich einen > Optionsdialog einbaue) > > Zwei Features: > - Passiver Device Scan (die Lupe), dann rechtsklick auf ein device zum > aktiven scannen > - Aktiver NV Scan (das Plus), ein Gerät (hardcoded 10, 11 und 60) aktiv > scannen Könntest du bitte gelegentlich die IP-Broadcast-Adresse änderbar machen und das Device 2 ergänzen? Dankeschön! lg Michael
Hab das Tool aktualisiert. Beim Start erstellt er jetzt ein config file. Bitte das editieren. Hier kannst du die broadcast (*) IP ändern und auch die NVs des WFV anpassen, sollte ich da ein Feld oder einen Typ falsch definiert haben. Hab von dem die Infos zugeschickt bekommen: (danke!)
1 | SW Name = WVF |
2 | SW Version = V 3.51 |
3 | SW Date = 20.01.03 |
(*) Kommunikation scheint wirklich nur per broadcast zu klappen. Muss ich mir mal genauer ankucken, dachte eigentlich das geht auch wenn man die IP direkt nutzt. EDIT: Wie sehen deine Statistiken so aus?
:
Bearbeitet durch User
Guten Abend, Georg H. schrieb: > Wie sehen deine Statistiken so aus?
1 | Frame Info |
2 | Message type: 1 (System report) |
3 | Bit length 0 min: 60(3,00us) |
4 | Bit length 0 avg: 251(12,55us) |
5 | Bit length 0 max: 358(17,90us) |
6 | Bit length 1 min: 362(18,10us) |
7 | Bit length 1 avg: 511(25,55us) |
8 | Bit length 1 max: 798(39,90us) |
9 | Packets received: 5569 |
10 | Packets CRC Errors: 248 (4,45%) |
11 | Free heap: 249632 |
12 | Max heap: 336792 |
13 | Free PSRAM: 0 |
14 | Max PSRAM: 0 |
15 | Startup time: 15.01.2022 21:47:11 |
16 | Statistics start: 15.01.2022 21:47:14 |
Was aber merkwürdig ist: Ich sehe im Wireshark die REQUESTs für NVs - aber es kommt nie ein RESPONSE? Danke und lg Michael
Hallo zusammen, ich hab die sourcen mal aufgeräumt und hochgeladen: https://github.com/g3gg0/LonScan/ Hier das aktuelle test binary: https://github.com/g3gg0/LonScan/releases/tag/v0.1.0 Inhaltich nichts neues glaub ich. Der Netzwerk-Code ist aber deutlich sauberer geschrieben.
Hallo! I have been working intensely on my system, when I have time to spare. I am now analyzing the bus on my Biowin, and it seems the data transferred on it does not follow any of the data in anything reported so far, except for the LON-protocol of course. But none of the data I have extracted matches the addressing and NV's I've seen. I have extracted most of the information that is available in the Info section of the Biowin control display, and some of the stuff in the Operator and System menu. I am working on setting up a web-server on the ESP32 that will report the data, and will also offer to adjust some settings. I will use a setup that doesn't require any specially made electronics. Just two parts that can be bought for a low cost online and connects directly to the LON-bus in the burner. I'll keep you updated on my progress.
Thank you Georg for the update LONScanner and the source. I see that the scanner reports one value for, for instance, NV 23. But when I filter on NV23 in messages from Src 60 to Dest 90 in Wireshark on my system, I get at least 6 messages with different types of payload. One of those is the current "Leistung", another one is the Burner model, in my case 150, and it is reported in ASCII charactares so can actually be read in the ASCII column. It is the only data so far I have found being reported in the ASCII format. Then there are some that I have not decoded yet, but I am pretty sure two of them are the auger feed, actual and range. I just need to figure out how the data in them are coded. But nevertheless, it seems like there are several different types of data reported under the same NV number. I'll attach a wireshark file to this message so you can have a look. Third packet is Leistung, reporting 100% Forth packet is Model, reportin 150
BTW, one of the most interesting things to find out, is of course information about the different alarms in the system. Does anyone have any information on those?
And now I noticed it looks like I get the same parameter reported under different NV's as well. Like the Leistung 100% is reported both on NV 22 and on NV 23 I made a quickie and included the two hex-dumps for those two packets. 0000 ff ff ff ff ff ff 24 6f 28 8f cf 50 08 00 45 00 0010 00 30 02 54 00 00 ff 11 34 f5 c0 a8 01 24 c0 a8 0020 01 ff ea 42 0d 05 00 1c 10 15|02 00 70 00 00 02 0030 00 19 01 bc 01 da 54 22 0b 01 0a c8 94 48 ^ ^ nv 100% 0000 ff ff ff ff ff ff 24 6f 28 8f cf 50 08 00 45 00 0010 00 30 02 5a 00 00 ff 11 34 ef c0 a8 01 24 c0 a8 0020 01 ff ea 42 0d 05 00 1c 66 43|02 00 70 00 00 02 0030 00 19 01 bc 01 da 54 23 0b 01 0a c8 3e 19 ^ ^ nv 100% As you can see above the whole LON packet (starting at |02 looks the same, except for the NV nr and the CRC. I am under the impression that it is the 0b 01 0A sequence that relates to what parameter is in a packet.
Sorry, what I noted as NV above is not NV, it is the TPDU Type and Format. and the 2 and 3 and 22/33 is the Trans_no. It is not any NV at all that is being sent in those messages. It is just a TPDU including and APDU only as far as I have understoond, up to now.
https://pdf4pro.com/view/lontalk-protocol-specification-enerlon-56e8cc.html There you can find the protocol specification. See the last page, it shows all the PDU formats. Also see a screenshot of a NV publish message parsed with my C# code.
The thing is, the LONScanner only shows NV's, so that's what I used as a base. But I have now realized all this information seems to be incorrect, at least in my system. Nothing what is reported in the LONScanner actually matches those parameters in my system. My system seems to be using only the SPDU/APDU generic application messages, Request/Response where all information is in the APDU, including the type of parameter, and perhaps also the length of the packet, but that may also be implied by the parameter type. I have not yet analyzed all the parts of those packages as I realized this just yesterday. But I have been able to decode a lot of parameter data from those packages now, which is always the last parts of the message. So next step will be to try to penetrate the header info of the APDU, which then is Windhager, and maybe even Biowin specific. I will see if I can get some time tonight to look into that. Attached is a screenshot of a LONScan of my system.
Here is a direct download link of the protocol specification, without hassle ;) https://web.archive.org/web/20210724071017/http://www.enerlon.com/JobAids/Lontalk%20Protocol%20Spec.pdf
Thanks for the link. Could not remember where I got my PDF from ;) Yeah that point was clear. Just wanted to give hints as you went through manually dissecting the payload. The APDU really just starts with 1 or 2 bytes (depending on the first bits, see Figure 10.2) followed by the payload of that specific NV. I have a list of NVs for: WVF V 3.51 InfoWIN FW V 2.60 FireWin V 3.10 PMX v2.7 UML C1 V 3.51 VarioWin (?)
Ok, so I looked a bit more into the NV's trying to understand them Attached are two screenshots, one from the LONScanner showing NV 0x0D and one from the Wireshark showing the corresponding LON packet, with a selector of 272. A couple of questions 1. How do we know that selector 272 corresponds to Kessel temperature, or has that been "reversed engineered from an actual system"? 2. How do we know that selector 272 corresponds to NV 0x0D? There are some Parameter/NV-lists around for some Windhager burners and "nodes" like firewin, variowin and UML C1 or WVF, as above in the thread as well, and as I understand the lists differ from product to product. Where do these lists come from or how are they extracted? Can I find or generate one for my Biowin? In the analysis of my system I have noticed Requests from the Infowin are sent as SPDU/APDU Requests and responded in the same way, not using the NV index or selector. There are also some less frequent TPDU messages with specified destinations.
Thanks Georg for the help and support. I have now looked more deeply into the ESP32 code and started adding code for sending and receiving generic application messages, as I have found how to retreive many of the parameters I am looking for that way. Right now things are presented via a webserver on the ESP, so it's easy to add stuff and get some debug info remotely as well.
> How do we know that selector 272 corresponds to Kessel temperature, > or has that been "reversed engineered from an actual system"? Got a lot of information from another user, that helped in understanding how that stuff generally works. As it is already a few years back, I fear that I mix up a bit. (especially the terms) But basically what I remember was: I got information for an other windhager device (VarioWin) which NV selector for these broadcasts have which meaning. Also got text files that explained the NV ID (for the request via SPDU) have what meaning. (e.g. a PMX_A3_V270.XIF file) And matching the exact NV Selectors against the NV ID I did via comparing values. Not sure how much (if any) was already matching and how much I had to find on my own. As I usually do things from scratch, It was still quite a lot.
Thomas schrieb: > There are some Parameter/NV-lists around for some Windhager burners and > "nodes" like firewin, variowin and UML C1 or WVF, as above in the thread > as well, and as I understand the lists differ from product to product. > Where do these lists come from or how are they extracted? Can I find or > generate one for my Biowin? These are the ones I also got. Wonder if someone has some more .XIF files. > In the analysis of my system I have noticed Requests from the Infowin > are sent as SPDU/APDU Requests and responded in the same way, not using > the NV index or selector. There are also some less frequent TPDU > messages with specified destinations. Yeah, you can "wait" for a broadcasted APDU or query it via SPDU. I just remembered that you also can read the NV config from the device. The "ID" I mentioned before is just an "entry number 0 to n" and the device has a table that contains various information. Here is the result that I got right now for this test on a PMX150:
1 | 0# nviRequest | Prio: 0, Dir: Incoming Selector: 0 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
2 | 1# nvoStatus | Prio: 0, Dir: Outgoing Selector: 1 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
3 | 2# nviTimeSet | Prio: 0, Dir: Incoming Selector: 256 (Bound ) Turn: 0 Service: 2 Auth: 0 AddrTbl: 15 |
4 | 3# nvoFileDirectory | Prio: 0, Dir: Outgoing Selector: 3 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
5 | 4# nvoTime | Prio: 0, Dir: Outgoing Selector: 4 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
6 | 5# nviObjEvent | Prio: 0, Dir: Incoming Selector: 5 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
7 | 6# nvoObjStatus | Prio: 0, Dir: Outgoing Selector: 6 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
8 | 7# nvoError | Prio: 0, Dir: Outgoing Selector: 257 (Bound ) Turn: 0 Service: 2 Auth: 0 AddrTbl: 0 |
9 | 8# nvoWvEnergyHold | Prio: 0, Dir: Outgoing Selector: 17 (Bound ) Turn: 0 Service: 2 Auth: 0 AddrTbl: 2 |
10 | 9# nvoBwEnergyHold | Prio: 0, Dir: Outgoing Selector: 19 (Bound ) Turn: 0 Service: 2 Auth: 0 AddrTbl: 2 |
11 | 10# nviWE_ModeGp1 | Prio: 0, Dir: Incoming Selector: 129 (Bound ) Turn: 0 Service: 2 Auth: 0 AddrTbl: 15 |
12 | 11# nviWE_ModeGp3 | Prio: 0, Dir: Incoming Selector: 134 (Bound ) Turn: 0 Service: 2 Auth: 0 AddrTbl: 15 |
13 | 12# EH_m | Prio: 0, Dir: Incoming Selector: 12 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
14 | 13# WET_nviTsoll[0] | Prio: 0, Dir: Incoming Selector: 16 (Bound ) Turn: 0 Service: 2 Auth: 0 AddrTbl: 15 |
15 | 14# WET_nviTsoll[1] | Prio: 0, Dir: Incoming Selector: 18 (Bound ) Turn: 0 Service: 2 Auth: 0 AddrTbl: 15 |
16 | 15# WET_nvoTist | Prio: 0, Dir: Outgoing Selector: 272 (Bound ) Turn: 0 Service: 2 Auth: 0 AddrTbl: 0 |
17 | 16# BD_nviDsp | Prio: 0, Dir: Incoming Selector: 16 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
18 | 17# GB_nviNsoll | Prio: 0, Dir: Incoming Selector: 17 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
19 | 18# GB_nvoNist | Prio: 0, Dir: Outgoing Selector: 18 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
20 | 19# GB_nvoNsoll | Prio: 0, Dir: Outgoing Selector: 19 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
21 | 20# GB_m | Prio: 0, Dir: Incoming Selector: 20 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
22 | 21# FS_nviMsoll | Prio: 0, Dir: Incoming Selector: 21 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
23 | 22# FS_nvoMotor | Prio: 0, Dir: Outgoing Selector: 22 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
24 | 23# FS_nvoTein | Prio: 0, Dir: Outgoing Selector: 23 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
25 | 24# FS_nvoTaus | Prio: 0, Dir: Outgoing Selector: 24 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
26 | 25# FS_nvoMpts | Prio: 0, Dir: Outgoing Selector: 25 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
27 | 26# FS_m | Prio: 0, Dir: Incoming Selector: 26 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
28 | 27# FS_nviMfoerder | Prio: 0, Dir: Incoming Selector: 27 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
29 | 28# FS_nvoAvgTb_Tk | Prio: 0, Dir: Outgoing Selector: 28 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
30 | 29# ZG_nviOn | Prio: 0, Dir: Incoming Selector: 29 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
31 | 30# ZG_nvoHeat | Prio: 0, Dir: Outgoing Selector: 30 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
32 | 31# ZG_nvoVent | Prio: 0, Dir: Outgoing Selector: 31 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
33 | 32# RO_nviCount | Prio: 0, Dir: Incoming Selector: 32 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
34 | 33# RO_nvoCount | Prio: 0, Dir: Outgoing Selector: 33 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
35 | 34# RO_m | Prio: 0, Dir: Incoming Selector: 34 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
36 | 35# PMX_nviLstg | Prio: 0, Dir: Incoming Selector: 35 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
37 | 36# FMF_nvoStatus | Prio: 0, Dir: Outgoing Selector: 36 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
38 | 37# PMX_nvoLstg | Prio: 0, Dir: Outgoing Selector: 37 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
39 | 38# PMX_m | Prio: 0, Dir: Incoming Selector: 38 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
40 | 39# PMX_nvoToPzs | Prio: 0, Dir: Outgoing Selector: 138 (Bound ) Turn: 0 Service: 2 Auth: 0 AddrTbl: 0 |
41 | 40# PMX_nviFromPzs | Prio: 0, Dir: Incoming Selector: 139 (Bound ) Turn: 0 Service: 2 Auth: 0 AddrTbl: 15 |
42 | 41# PMX_nviPzsStatus | Prio: 0, Dir: Incoming Selector: 140 (Bound ) Turn: 0 Service: 2 Auth: 0 AddrTbl: 15 |
43 | 42# PMX_eeBetrStd | Prio: 0, Dir: Incoming Selector: 42 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
44 | 43# PMX_eeNbrAnhz | Prio: 0, Dir: Incoming Selector: 43 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
45 | 44# EXT_m | Prio: 0, Dir: Incoming Selector: 44 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
46 | 45# EXT_nvoTacho | Prio: 0, Dir: Outgoing Selector: 45 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
47 | 46# EXT_nvoTacho1 | Prio: 0, Dir: Outgoing Selector: 46 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
48 | 47# NIC_nvoValue | Prio: 0, Dir: Outgoing Selector: 47 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
49 | 48# NIC_nvoTboard | Prio: 0, Dir: Outgoing Selector: 48 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
50 | 49# NIC_nvoAvgVal | Prio: 0, Dir: Outgoing Selector: 49 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
51 | 50# TK_nviSetP | Prio: 0, Dir: Incoming Selector: 50 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
52 | 51# TK_nvoPID | Prio: 0, Dir: Outgoing Selector: 51 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
53 | 52# TK_nvoTemp | Prio: 0, Dir: Outgoing Selector: 52 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
54 | 53# TK_nvoRist | Prio: 0, Dir: Outgoing Selector: 53 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
55 | 54# RG_nviSetP | Prio: 0, Dir: Incoming Selector: 54 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
56 | 55# RG_nvoPID | Prio: 0, Dir: Outgoing Selector: 55 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
57 | 56# RG_nvoTemp | Prio: 0, Dir: Outgoing Selector: 56 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
58 | 57# TVB_nvoValue | Prio: 0, Dir: Outgoing Selector: 57 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
59 | 58# HW_nviDigInput | Prio: 0, Dir: Incoming Selector: 58 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
60 | 59# HW_nviDigOutput | Prio: 0, Dir: Incoming Selector: 59 (UnBound) Turn: 0 Service: 0 Auth: 0 AddrTbl: 15 |
As you can see, the ID 272 matches "15# WET_nvoTist" and 257 matches "7# nvoError". Thats also a possibility to get the mapping. Will add this as a GUI in my tool the next days. First without the possibility to edit ;)
Ahhh cool. Now i know how to set the current time. Just broadcast it as network variable 0x100. So simple... Wanted to have this for years now. Good that we talked about that.
See the chapter 11.7.8. Instead of query nv by index, i query nv cfg with command 8
Ich habe die Zeit der PMX und der beiden UML gesetzt indem ich die network variable 0x100 entsprechend gesetzt hab. Die jeweiligen Geräte haben jetzt auch (laut ihrer NV) auch die Zeit übernommen. (yay!) Nur das Bedienmodul - genauen Typ weiss ich jetzt nicht, sieht aus als wärs eine Windhager MES D-Bedienmodul FB 5210 - das ja meinem Verständnis nach eigentlich die ganzen Vorgänge steuert, hat die Zeiten nicht übernommen. Jetzt hab ich noch auf haustechnikdialog was gefunden, wie das Protokoll aussieht. Weiss jemand ob diese Bedienteile per Routing am LON erreichbar sind oder ist das was freifliegendes? Ansonsten muss ich mal schauen ob die UML was in der routing table stehen haben :-/
:
Bearbeitet durch User
Ok, so when I send the command 8 I get the selector and config table index, but how/where do I get the table itself so I can map these values? I tried some memory reads to see what I could find, but nothing sensible in the first few tries.
No, there is a table in the neuron chip i posted above. It has indices 0 to e.g. 55 which are the "NV Index" value we used to fetch with the SPDU. In this table it is written if this index is published on the bus. Either if this node should send this index or if it should listen to and fill the value of this NV with that data. Also encoded there is the "NV Selector" that is being used. And that selector is the one you see in the "broadcasted" NV messages.
Okay, habs geschafft aus dem service tool alle .xif zu entpacken - sind 64 Stück. Jetzt muss ich wohl einen Parser dafür schreiben um mir daraus die config zu ziehen. Dann werden alle hoffentlich alle Modelle unterstützt.
Hi Which service tool is this? Is there an .XIF file for the Biowin? Could you please make it available to me? Thanks!
Hallo zusammen, das parsen hat ordentlich geklappt. https://github.com/g3gg0/LonScan/releases/tag/v0.2.1 Unterstützte Modelle:
1 | B-PLM + V 1.00 |
2 | B-PLM + V 2.02 |
3 | B-PLM + V 2.24 |
4 | B-PLM + V 2.40 |
5 | BioWin V 3.22 |
6 | BioWin V 3.60 |
7 | BioWin V 4.53 |
8 | BioWin V 4.54 |
9 | BioWin V 6.24 |
10 | BioWin V 6.60 |
11 | BioWin2 V 1.50 |
12 | BioWin332 V 2.50 |
13 | BioWinXL V 1.22 |
14 | BioWinXL V 5.60 |
15 | EWM-PW01_V110 |
16 | FMF_S_V500 |
17 | FMP_F1_V361 |
18 | FireWin V 3.10 |
19 | FireWin V 4.33 |
20 | FireWin V 6.61 |
21 | InfoWIN_BW_V260_HW2_20090324.XIF |
22 | InfoWIN_BW_V310_20110127.XIF |
23 | InfoWIN_BW_V400_20080519.XIF |
24 | InfoWIN_BW_V450_20110125.XIF |
25 | InfoWIN_FW2_V410_20110125.XIF |
26 | InfoWIN_FW_V260_20071022.XIF |
27 | InfoWIN_FW_V310_20110204.XIF |
28 | InfoWIN_SW_V260_20090420.XIF |
29 | JetWin V 1.01 |
30 | KAS + V 1.11 |
31 | KAS + V 1.20 |
32 | LWP V 4.20 |
33 | LogWin V 5.51 |
34 | MB6611_LOP_V104 |
35 | PMX V 2.70 |
36 | SOFU V 1.00 |
37 | SOFU V 1.10 |
38 | SOFU V 1.20 |
39 | SilvaWIN V 3.10 |
40 | UML + V 1.3a |
41 | UML + V 2.00 |
42 | UML + V 2.30 |
43 | UML + V 2.40 |
44 | UMUMLZ V 1.11 |
45 | UMUMLZ V 1.20 |
46 | VarioWin V 5.00 |
47 | VarioWin V 6.61 |
48 | WFBPK V 1.00 |
49 | WFBPK V 1.16 |
50 | WFBPK V 1.20 |
51 | WVF + V 1.00 |
52 | WVF + V 2.11 |
53 | WVF + V 2.24 |
54 | WVF + V 2.40 |
55 | ZSP_V1.02 |
56 | ZSP_V2.02 |
:
Bearbeitet durch User
Thomas schrieb: > Hi > > Which service tool is this? > Is there an .XIF file for the Biowin? Could you please make it available > to me? > Thanks! If its okay, you can read the LonScan.cfg which contains the necessary information.
:
Bearbeitet durch User
Hallo Georg, Georg H. schrieb: > Hallo zusammen, > > das parsen hat ordentlich geklappt. > https://github.com/g3gg0/LonScan/releases/tag/v0.2.1 deine Arbeit wirklich unglaublich - nun liefert mein WVF auch Werte - siehe Screenshot. Herzlichen Dank! lg Michael
Servus, freut mich dass es klappt! :) https://github.com/g3gg0/LonScan/releases/tag/v0.2.2 Noch ein Update für die etwas experimentierfreudigeren unter uns. PacketForge, um pakete selber zu bauen. Noch muss man die Hex-Daten editieren, aber ich habs vom Grundkonzept so gebaut, dass man später auch irgendwann per Dropdown und Textfelder sich die Pakete selbst konfigurieren kann. Wenn ich Zeit finde das zu implementieren ;) Gruß, Georg
:
Bearbeitet durch User
Hat jemand neuere UMLs in seinem setup und würde im PacketForge (dropdownmenu rechts neben der textbox) das EBus paket mal ausprobieren? @Michael vllt? Wäre interessant ob hier eine Antwort kommt. Die bytes sind auf "DestinationNode" 10 oder 11 hartkodiert, kann aber im Textfeld geändert werden falls notwendig. Im dump links unten sieht man was das für ein Paket ist, das man gerade zusammenschustert.
:
Bearbeitet durch User
Gerne, aber leider kommt bei mir
1 | (Response timed out) |
Blöde Frage, wie finde ich die Version meines Moduls raus? Allerdings habe ich ja ein UML C1 und kein UML + (gibt es da eigentlich ein eigenes XIF zum importieren)? lg Michael
:
Bearbeitet durch User
Hi Thanks Georg, really great work and things you are supporting us with! I am still working on understanding the protocol :) When I send a Network message request with command 8, APDU Destin&Type = 0x68, the response I get has the APDU Destin&Type = 0x28 This is then an application message, not a network message, and the thing is, the '2' in 0x28 is then part of the command. Which makes the response command = 0x28 (40), but it should be 8 See following references in the Protocol Specification.
1 | 10.4 APDU Types and Formats |
2 | 11.7.8 Query Network Variable Configuration |
Here's the Request and the Response NPDU's, excluding CRC
1 | 19 01 fe 01 bc 54 01 68 02 |
2 | 19 01 bc 01 fe 54 21 28 01 00 4f |
So, my question is, where does the 2 in 0x28 response Destin&Type come from? It seems to me the response command is 0x28, not 8. But that is not consistent with the protocol specification, as far as I can see.
First, you miss the PPDU header, which is 01. But I guess thats just a copy paste issue. Adding it, we will get this:
1 | 01 19 01 FE 01 BC 54 01 68 02 |
2 | |
3 | Prior = no |
4 | AltPath = no |
5 | DeltaBl = 1 |
6 | NPDU = LonNPdu |
7 | Version = 0 |
8 | DomainLength = Bits_8 |
9 | Domain = 84 |
10 | Address = LonAddressNode |
11 | DestinationSubnet = 1 |
12 | DestinationNode = 60 |
13 | SourceSubnet = 1 |
14 | SourceNode = 126 |
15 | PDU = LonSPdu |
16 | Auth = no |
17 | ReminderLength = 0 |
18 | ReminderMList = 0 |
19 | SPDUType = Request |
20 | APDU = LonAPduNetworkManagement |
21 | Code = QueryNetworkVariableConfig |
22 | Data = [ 02 ] |
23 | TransNo = 1 |
Response:
1 | 01 19 01 BC 01 FE 54 21 28 01 00 4F |
2 | |
3 | Prior = no |
4 | AltPath = no |
5 | DeltaBl = 1 |
6 | NPDU = LonNPdu |
7 | Version = 0 |
8 | DomainLength = Bits_8 |
9 | Domain = 84 |
10 | Address = LonAddressNode |
11 | DestinationSubnet = 1 |
12 | DestinationNode = 126 |
13 | SourceSubnet = 1 |
14 | SourceNode = 60 |
15 | PDU = LonSPdu |
16 | Auth = no |
17 | ReminderLength = 0 |
18 | ReminderMList = 0 |
19 | SPDUType = Response |
20 | APDU = LonAPduGenericApplication |
21 | Code = 40 |
22 | Data = [ 01 00 4F ] |
23 | TransNo = 1 |
Now when you check Page 84/112, it says that responses are always directed to the application and have the code 00pxxxxx where p=1 tells the operation was successful. In your case the xxxxx was 8, which was your original command.
Sorry, found the answer in another part of the specification.
1 | Responses that have been generated by the execution of these NM commands are |
2 | directed to the Application, as specified by the first byte of the APDU: |
3 | 00pxxxxx |
4 | The <p> field is set to one if the operation succeeded, or zero if it failed. |
Ah, Georg, Thanks. Yes, finally I found it too ; I posted the NPDU, not the PPDU, that's why the 01 was missing ;)
Michael L. schrieb: > Gerne, aber leider kommt bei mir >
1 | (Response timed out) |
Ich habe jetzt die Timeout-Zeit in der cfg-Datei auf 30000 ms gestellt. dennoch kommt
1 | (Response timed out) |
bei dem EBus-Befehl. Die normale NV-Query (mit Destination 10 bei mir, da ich kein 60 habe) funktioniert.
Michael L. schrieb: > Gerne, aber leider kommt bei mir >
1 | (Response timed out) |
> > Blöde Frage, wie finde ich die Version meines Moduls raus? > Allerdings habe ich ja ein UML C1 und kein UML + (gibt es da eigentlich > ein eigenes XIF zum importieren)? > > lg Michael Richtig. Hab auch ein UML C1. Ich muss nacher nochmal schauen, ich hab aus Versehen das C1 rausgeworfen. XIF hatte ich keines, ich hatte das händisch gestrickt Also die genaue version auslesen, ich hab mir da noch keine Gedanken gemacht. Aber guter Punkt. Das kuck ich nach. Du hattest ja dein C1 als node 10, so wie das kommando gestrickt war. Mist. Das heisst per 0x0e kommt man nicht auf den EBus. Vllt geht das nur mit dem UML+? Ich will die Uhrzeit der Bedienpanel setzen :( Dass jede Stunde vom ESP32 die Zeit korrigiert wird, dann hat sich das mit der Zeitumstellung erledigt.
Mit dem Kommando 01 19 01 FE 01 8A 54 0D 6D 00 40 00 10 # read version kannst die version aus dem flash lesen Aie Antwortbytes dann im hexeditor betrachten.
1 | 00 19 01 8A 01 FE 54 24 2D A3 45 4A 56 20 33 2E 35 31 20 20 00 32 30 2E 30 |
2 | Prior = no |
3 | AltPath = no |
4 | DeltaBl = 0 |
5 | NPDU = LonNPdu |
6 | Version = 0 |
7 | DomainLength = Bits_8 (1) |
8 | Domain = 84 |
9 | Address = LonAddressNode |
10 | DestinationSubnet = 1 |
11 | DestinationNode = 126 |
12 | SourceSubnet = 1 |
13 | SourceNode = 10 |
14 | PDU = LonSPdu |
15 | Auth = no |
16 | ReminderLength = 0 |
17 | ReminderMList = 0 |
18 | SPDUType = Response (2) |
19 | APDU = LonAPduGenericApplication |
20 | Code = 45 |
21 | Data = [ A3 45 4A 56 20 33 2E 35 31 20 20 00 32 30 2E 30 ] |
22 | TransNo = 4 |
:
Bearbeitet durch User
Servus, Version auslesen hinzugefügt: https://github.com/g3gg0/LonScan/releases/tag/v0.3.0 (ich hoffe das ist universell bei Windhager...) Gruß, Georg
:
Bearbeitet durch User
This is what I got when I extracted the 60 first Network Variable configurations from the configuration register.
1 | NV Selector |
2 | 0 16383 |
3 | 1 16382 |
4 | 2 256 |
5 | 3 16380 |
6 | 4 16379 |
7 | 5 257 |
8 | 6 17 |
9 | 7 19 |
10 | 8 129 |
11 | 9 134 |
12 | 10 16373 |
13 | 11 16 |
14 | 12 18 |
15 | 13 272 |
16 | 14 16369 |
17 | 15 16368 |
18 | 16 16367 |
19 | 17 16366 |
20 | 18 16365 |
21 | 19 16364 |
22 | 20 16363 |
23 | 21 16362 |
24 | 22 16361 |
25 | 23 16360 |
26 | 24 16359 |
27 | 25 16358 |
28 | 26 16357 |
29 | 27 16356 |
30 | 28 16355 |
31 | 29 16354 |
32 | 30 16353 |
33 | 31 16352 |
34 | 32 16351 |
35 | 33 16350 |
36 | 34 16349 |
37 | 35 16348 |
38 | 36 16347 |
39 | 37 16346 |
40 | 38 16345 |
41 | 39 16344 |
42 | 40 16343 |
43 | 41 16342 |
44 | 42 16341 |
45 | 43 16340 |
46 | 44 16339 |
47 | 45 16338 |
48 | 46 16337 |
49 | 47 16336 |
50 | 48 16335 |
51 | 49 16334 |
52 | 50 16333 |
53 | 51 130 |
54 | 52 0 |
55 | 53 0 |
56 | 54 0 |
57 | 55 0 |
58 | 56 0 |
59 | 57 0 |
60 | 58 0 |
61 | 59 0 |
Bugfix um bei gleichzeitiger Nutzung mehrere Fehnster einen deadlock zu verhindern: https://github.com/g3gg0/LonScan/releases/tag/v0.3.1
Hatte die vorherige Nachricht am Handy getippt. Peinlicher Tippfehler - ich weiss wie man Fenster schreibt :D Hier eine neue Version, die auch anzeigt, welche NVs input sind (grün) und welche output (rot). Die NetVar Spalte ist der "selector" der NV auf dem Bus. Im Screenshot sieht man, dass mein UML C1 die NV#04 "Lokale Zeit" aktualisiert wird, wenn eine NV mit selector 256 reinkommt. Und sie schickt die T_Aussen auf NV selector 0 raus (sobald die software den Wert zum verschicken markiert) Mit "00 35 01 FE 01 54 80 00 00 C9" kann man die Temperatur dann auch von aussen reinmelden. So könnte der ESP32 andere Sensoren an euer Busyystem reporten. Oder andere Temperaturen anfordern ("Meine Frau hat laut Google Kalender Frühschicht, für ein warmes Bad schon mal um 04.30 die Vorlauftemperatur hochfahren...") https://github.com/g3gg0/LonScan/releases/tag/v0.3.2
:
Bearbeitet durch User
Bei mir liefert die Versionsabfrage (egal ob über dein Tool oder manuell) leider immer einen Bit Phase error. lg Michael
Das heisst, bei langen Nachrichten hast ein Leseproblem :( Dann muss ich mir den ESP32 code mal wieder etwas genauer ansehen und schauen ob ich da was optimieren kann. Wie schaut dein Aufbau aktuell aus? Sind da recht lange Drähte im Spiel? Transceiver nahe am ESP32? Stichleitungen vom LON sind kurz oder terminiert? Gruß, Georg
How can I get the NV - Selector mapping read out with the tool? I have not found how to do that?
Download the latest version and select your device. See my screenshot above - it shows all the fields on the right side.
I also get the Bitphase error for the sw version request. But not always, it worked one time. It also gets the product name ok, but does not report it in the sw, perhaps because of the bitphase error. Please see the attached wireshark file. The product name response is much longer than the sw version response, and seems to work fine every time, so it seems the bitphase error is not directly related to packet length.
> Wie schaut dein Aufbau aktuell aus? Sind da recht lange Drähte im Spiel? > Transceiver nahe am ESP32? Stichleitungen vom LON sind kurz oder > terminiert? noch ist alles auf einem Breadboard - die Leitung vom LON sind ca. 50cm, vom Receiver zum ESP sind es noch mal gut 10cm. Meinst du das ist zu lange? Für die Dauerlösung hätte ich ja gerne deine Platine und dass mir JLCPCB nicht nur die Platine fertigt, sondern auch gleich fertig bestückt. Allerdings ist da ein Start aufgrund von Lieferzeiten frühestens nach dem chinesischen Neujahr möglich. Oder hättest du da andere Tipps für mich? Danke und lg Michael
The latest version just downloaded and tested. For the Biowin (90) I get bitphase error, the product name works, but nothing is reported in the tool and no data is shown. For the WVF there is no error, but nothing is reported in the tool and no data is shown. Det WVF is reported as "5.06 WVF" in the packet, and the version is reported as V3.52 in the packet. But the LONScanner tool does not report anything, the tool window is just epmty.
Michael, you can check with Aisler, for european made PCB's. I usually use them, works great.
Ran it one more time now, this time there was no bitphase error, but Lonscan still doesn't report anything.
Servus, Bei der PCB v1.3 ist mir nicht aufgefallen, dass ein IO-Pin falsch gelegt ist. Man konnte mit der LON nur LESEN, nicht aber senden, was mir bisher nicht auffiel. Darum hab ich auf EasyEDA eine v1.4 veröffentlicht mit einer Korrektur. Habe die Änderung per Kupferlackdraht auf einer v1.3 nachgebaut und das klappt. Auch hab ich in der Firmware kleine Änderungen vorgenommen. Es ist zwar nicht so, dass das Grundproblem des ESP32/RMT damit behoben ist. Allerdings habe ich etwas mit den Timings gespielt und es könnte sein, dass die Fehlerquote bei größeren Paketen geringer ist. Änderungen in der Firmware: - glitch filter für kurze spikes < 100µs - lange Pakete dürften eine höhere chance haben, geparsed zu werden - Latenz beim Empfangen vom LON verringert https://github.com/g3gg0/MESWiFi Änderungen am LonScanner: - Timeout und delays konfigurierbar https://github.com/g3gg0/LonScan/releases/tag/v0.3.3 Hier ein Video wie es bei mir läuft: https://www.youtube.com/watch?v=6MgHI1anq8U Die CRC Fehler sind wahrscheinlich u.a. auch weil ich keine Kollisionserkennung drin hab.
:
Bearbeitet durch User
> noch ist alles auf einem Breadboard - die Leitung vom LON sind ca. 50cm, > vom Receiver zum ESP sind es noch mal gut 10cm. Meinst du das ist zu > lange? Das find ich persönlich schon etwas lang aber sollte eigentlich auch ohne Terminator klappen. So hoch sind die Raten hier auch nicht. Vielleicht kommts auch von der Spannungsversorgung. Der ESP32 zieht beim WiFi Senden schon ordentlich und oft sind die falschen 5V -> 3.3V Spannungsregler verbaut. Die wären okay für den ESP8266, beim ESP32 bricht die Spannung oft etwas ein. Ich würd mal probieren ein paar kerkos zu platzieren. Beim Transceiver und am ESP.
Thanks, that made all the difference :) I am working on mapping up the same way of getting information out of my Biowin the same way as the Infowin (Display) does. The Infowin requests information from Biowin using the following format APDU Generic Application Message with code = 0x0B The next byte is 0x02 = Request And the following byte is the parameter requested, for instance 0x0A is Current Output (Power). So requesting Power, the NPDU looks like this 19 01 bc 01 ff 54 27 0b 02 0a c8 The answer follows the same format, but Response is indicated by 0x01 and then followed by the parameter index, 0x0A for Current Output (Power). Then the parameter data follows which can be "any" number of bytes. Apparently it is implied that the receiver knows the amount of data, as this is not part of the message. It is also interesting that there seems to be no connection to Network Variables (0x17 for Output Power) or the Selector. I noticed that the LON Scanner has two columns, NV# and NetVar, the name indicating that the columns shows the same thing, but as I understand the NetVar actually shows the Selector. For instance for the Time Setting, the NV is 2, The Selector is 0x100. But for Current Output the NV and the selector is the same =0X17. And here is a question. I am quite sure that the APDU Request command for the Exhaust temperature is 0b 02 09 and the response when the temperature is 90 C is 0b 01 09 0e 3f Where 0e 3f is the temperature. However, I have not figured out how 0e 3f converts to 90 C. Or what it should be otherwise. The change in this parameter also seems to follow the change in exhaust temp, but to some non linear scale (?), which is strange. Any suggestions on this. I'll put together a list of these indexes and publish here when I sorted it out.
> So requesting Power, the NPDU looks like this > > 19 01 bc 01 ff 54 27 0b 02 0a c8 (entered the byte sequence in "Packet Forge" to check its content)
1 | 01 19 01 BC 01 FF 54 27 0B 02 0A C8 |
2 | |
3 | Prior = no |
4 | AltPath = no |
5 | DeltaBl = 0x01 / 1 |
6 | NPDU = LonNPdu |
7 | Version = 0x00 / 0 |
8 | DomainLength = Bits_8 (1) |
9 | Domain = 0x54 / 84 |
10 | Address = LonAddressNode |
11 | DestinationSubnet = 0x01 / 1 |
12 | DestinationNode = 0x7F / 127 |
13 | SourceSubnet = 0x01 / 1 |
14 | SourceNode = 0x3C / 60 |
15 | PDU = LonSPdu |
16 | Auth = no |
17 | ReminderLength = 0x00 / 0 |
18 | ReminderMList = 0x00 / 0 |
19 | SPDUType = Response (2) |
20 | APDU = LonAPduGenericApplication |
21 | Code = 0x0B / 11 |
22 | Data = [ 02 0A C8 ] "..?" |
23 | TransNo = 0x07 / 7 |
Are you sure that packet was the request?
> 0b 01 09 0e 3f > > Where 0e 3f is the temperature. > > However, I have not figured out how 0e 3f converts to 90 C. Or what it > should be otherwise. Just a guess - it is SNVT_temp: 0x0E3F = 3647 = 364.7 K - 273.1 K => 91.6 °C
Sorry, copy-paste error, how did I manage that mistake) ;) Please disregard from that, it is messed up by me manually somehow. Here are the Correct packets.
1 | Request |
2 | 01 19 01 FF 01 BC 54 07 0B 02 0A |
3 | |
4 | Response |
5 | 01 19 01 BC 01 FF 54 27 0B 01 0A C8 |
Just a guess - it is SNVT_temp:
> 0x0E3F = 3647 = 364.7 K - 273.1 K => 91.6 °C
Perfect, how stupid of me :) I checked F but totally missed K ;)
Thanks!
https://github.com/g3gg0/LonScan/releases/tag/v0.3.4 Added latency infos. It will periodically try to send a packet to itself and check its latency. Please make sure the SourceNode 126 in config file is not used in your setup. If it is used, change it to a free node id.
:
Bearbeitet durch User
Thomas schrieb: > I noticed that the LON Scanner has two columns, NV# and NetVar, the name > indicating that the columns shows the same thing, but as I understand > the NetVar actually shows the Selector. yes, the left NV# is the "Network Variable's table index". The NetVar is the "selector" that is used for the Network Variable.
Thomas schrieb: > I am quite sure that the APDU Request command for the Exhaust > temperature is > > 0b 02 09 > This reminds me of the DAP requests I found when reverse engineering the MES software. 0x0B -> DAP request 0x02 -> DAP Read 0xnn -> DAP ID 0x0B -> DAP request 0x01 -> DAP read response 0xnn.. data Attached some descriptions from the Report.xml files of the MES software. It does not show all of them, just a few.
> Attached some descriptions from the Report.xml files of > the MES software. It does not show all of them, just a few. Das ist ja super-toll :) What MES software is that, and how was the Report.xml file generated? I'd very much like them all :)
Well the software is not free to get. It requires a license key etc.
I see now I was a bit unclear, I ment I want all the DAP ID's ;) So it is the Windhager Service sw then I assume. Do you have a license for this? Is it possible to get as private person? There is no longer any distributor or reseller of Windhager here in Sweden, and it's hard to get any info from anyone outside of sweden as they see me as a non-customer.
Well, i don't know how to get it :) Which device do you have exactly?
I have a Windhager Biowin Exklusiv from 2007, or if it was 2005. It consist of Firing automate, SW ver 3.22 : Lon bus ID: 60 Infowin (Display), SW ver 2.50 : Lon bus ID: 90 UML C1 (I think): Lon bus ID 10 WVF: Lon bus ID 2 I do not have the FB 5210 indoor controller, but I need to get one to get a good control of the system. But maybe now I can manage it with a couple of M5Stack instead :)
The only ones that are listed in the firmware info are:
1 | 27 Art des Pelletszuführsystem 3 Sonden |
2 | 28 Laufzeit der Saugturbine |
3 | 15 Betriebswahl Pelletszuführung |
4 | 17 Beginn Freigabezeit |
5 | 18 Ende Freigabezeit |
6 | 19 Startzeit |
7 | 20 Betriebswahl Sondenumschaltung |
Hallo Georg! > Bei der PCB v1.3 ist mir nicht aufgefallen, dass ein IO-Pin falsch > gelegt ist. > Man konnte mit der LON nur LESEN, nicht aber senden, was mir bisher > nicht auffiel. > Darum hab ich auf EasyEDA eine v1.4 veröffentlicht mit einer Korrektur. > Habe die Änderung per Kupferlackdraht auf einer v1.3 nachgebaut und das > klappt. Danke für die Überarbeitung! Wirst du dir eine neue Platine bestellen oder bleibst du beim Kupferlackdraht? lg Michael
Ich werd erst mal beim Kupferlackdraht bleiben. Hab ich mit einem Mikroskop gemacht und ist kaum von nem 0603 zu unterscheiden ;) Sind drei übereinander gekreuzte Drähte. Ich hab die bisher immer per Hand bestückt, aber vor geraumer Zeit Gefallen an einem SMT stencil und der miniware mini-hotplate gefunden. Falls ich eine Bestücke, gehts dann wahrscheinlich eher etwas schneller. Ich hab den LonScanner aktualisiert. Jetzt werden bekannte Geräte autmatisch gefunden wenn man auf den Scan-Button klickt und dann den Eintrag in der Liste doppelklickt. https://github.com/g3gg0/LonScan/releases/tag/v0.3.5
Hallo Georg, > Bei der PCB v1.3 ist mir nicht aufgefallen, dass ein IO-Pin falsch > gelegt ist. > Man konnte mit der LON nur LESEN, nicht aber senden, was mir bisher > nicht auffiel. > Darum hab ich auf EasyEDA eine v1.4 veröffentlicht mit einer Korrektur. > Habe die Änderung per Kupferlackdraht auf einer v1.3 nachgebaut und das > klappt. Beim Gerber-Export meckert das Tool wg. einer unvollständigen Verbindung (siehe Screenshot), könntest du da bitte mal einen Blick drauf werfen? Danke und lg Michael
Hi Thomas, > Michael, you can check with Aisler, for european made PCB's. I usually > use them, works great. I tried to import the Gerber files both for PCB Version 1.3 und 1.4. Unfortunately the Aisler import does not recognize the PCB - no size and no elements. Do you have some experience with that? Thank you and best regards Michael
Hi Michael Michael L. schrieb: > I tried to import the Gerber files both for PCB Version 1.3 und 1.4. > Unfortunately the Aisler import does not recognize the PCB - no size and > no elements. > > Do you have some experience with that? Nope, I never experienced that. Though I have never used EasyEDA, I generally use Altium and Circuitmaker. An alternative way you could use is an M5Stack with a Commu module to connect to the LON-bus. I am currently using an M5Stack with a separate RS485 transceiver on a breadboard, but I ordered a Commu module and it arrived yesterday so I will try that out any day. Then all you need should be two wires to connect to the LON-bus. I'll post a note when I've tried it.
Ich hab hier noch eine v1.1. Hat noch den MP1584 und kein 1-wire oder Relais. Wenn dus magst, kann ichs dir schicken, dann sparst dir den Stress.
Ja bitte, das wäre voll nett! Soll ich dir meine E-Mail-Adresse per PN senden? Danke und lg Michael
Hallo Georg, wahrscheinlich wirst Du mit Anfragen bombadiert, aber solltest du ggf. noch eine Platine (gerne eine ältere, die nur lesen kann) haben, würde ich dir die gerne abnehmen ;-) bitte kurze Rückmeldung. Danke, Gruß Johannes
Bestückte hab ich leider keine rumliegen. Nur ein paar leere PCBs. Wieviel Bedarf besteht denn?
Hallo, danke für das Angebot, aber dann werde ich das erstmal mit einem Breadboard mit einem ESP-WROOM-32 DEV Board und einem MAX487 aufbauen. Im Moment versuche ich gerade die Dateien in Arduino zusammenzukompilieren, scheitere aber im Moment an einer RMT.h Wo bekomme ich die her? Die, die ich probiert habe, bringen immer Kompilierungsfehler Sorry für die vielleicht blöden Fragen, bin elektronisch nicht ganz so bewandert... Danke! Gruß Johannes
Vielleicht sollte ich noch die Fehlermeldung posten: C:\Users\Johannes\Desktop\MESWiFi-master\MESWiFi\LON_RMT_Rx.ino: In function 'void lon_rx_setup()': LON_RMT_Rx:415:24: error: 'PERIPH_RMT_MODULE' was not declared in this scope periph_module_enable(PERIPH_RMT_MODULE); ^~~~~~~~~~~~~~~~~ LON_RMT_Rx:415:3: error: 'periph_module_enable' was not declared in this scope periph_module_enable(PERIPH_RMT_MODULE); ^~~~~~~~~~~~~~~~~~~~ C:\Users\Johannes\Desktop\MESWiFi-master\MESWiFi\LON_RMT_Rx.ino:415:3: note: suggested alternative: 'dhcps_router_enabled' periph_module_enable(PERIPH_RMT_MODULE); ^~~~~~~~~~~~~~~~~~~~ dhcps_router_enabled C:\Users\Johannes\Desktop\MESWiFi-master\MESWiFi\MQTT.ino: In function 'bool mqtt_loop()': C:\Users\Johannes\Desktop\MESWiFi-master\MESWiFi\MQTT.ino:102:89: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] mqtt_publish_int("feeds/integer/heizung/burning-minutes", lon_stat.burning_minutes); ....
Hallo, ich habe einige Libraries zusätzlich benötigt - ich denke u.a. die im Screenshot. lg Michael
Hallo Michael, danke für den Tipp, hab es ausprobiert, aber leider keine Änderung. Bekomme nach wie vor folgende Fehlermeldung (s. angehängtes Bild) Hat jemand eine Idee? Danke, Gruß Johannes
Hallo Johannes, einem Freund habe ich Folgendes zusammengeschrieben:
1 | Using library WiFi at version 1.0 in folder: C:\Users\m\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi |
2 | Using library FS at version 1.0 in folder: C:\Users\m\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\FS |
3 | Using library SPIFFS at version 1.0 in folder: C:\Users\m\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SPIFFS |
4 | Using library ESPmDNS at version 1.0 in folder: C:\Users\m\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\ESPmDNS |
5 | Using library ArduinoOTA at version 1.0 in folder: C:\Users\m\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\ArduinoOTA |
6 | Using library Update at version 1.0 in folder: C:\Users\m\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\Update |
7 | Using library PubSubClient at version 2.8 in folder: D:\OneDrive\Documents\Arduino\libraries\PubSubClient |
8 | Using library Adafruit_MQTT_Library at version 2.4.2 in folder: D:\OneDrive\Documents\Arduino\libraries\Adafruit_MQTT_Library |
9 | Using library OneWire at version 2.3.6 in folder: D:\OneDrive\Documents\Arduino\libraries\OneWire |
10 | Using library DallasTemperature at version 3.9.0 in folder: D:\OneDrive\Documents\Arduino\libraries\DallasTemperature |
Weiters habe ich die includes in der LON.ino anpassen müssen, damit es im Arduino kompiliert:
1 | #include <WiFi.h> |
2 | #include <WiFiUdp.h> |
3 | #include <FS.h> |
4 | #include <SPIFFS.h> |
lg Michael
Ich nutze Arduino v1.8.1 und hier die libs/board:
1 | Using board 'esp32' from platform [...] 1.0.6 |
2 | Using library WiFi at version 1.0 |
3 | Using library ESPmDNS at version 1.0 |
4 | Using library ArduinoOTA at version 1.0 |
5 | Using library Update at version 1.0 |
6 | Using library FS at version 1.0 |
7 | Using library SPIFFS at version 1.0 |
8 | Using library PubSubClient at version 2.7 |
9 | Using library Adafruit_MQTT_Library at version 0.20.1 |
10 | Using library OneWire at version 2.3.4 |
11 | Using library DallasTemperature at version 3.8.0 |
> Weiters habe ich die includes in der LON.ino anpassen müssen, damit es > im Arduino kompiliert: > #include <WiFi.h> > #include <WiFiUdp.h> > #include <FS.h> > #include <SPIFFS.h> Aber möglicherweise nur deswegen, weil ich zuerst alle Submodule auskommentiert hatte und nur schrittweise wieder hinzugefügt habe.
Welchen Link habt ihr in die Voreinstellungen kopiert für das ESP-Board? Manche Libraries finde ich in Arduino gar nicht, z.B. ESPmDNS. Wäre es ggf. möglich, dass ihr mir an meine Email-Adresse alle Libraries als Zip sendet?
Nur die letzten 4 sind welche aus dem library manager. Die anderen sind alle Teil des ESP32 v1.0.6 https://dl.espressif.com/dl/package_esp32_index.json
Funktioniert! Danke an alle für die Hilfe!! Ich konnte alles kompilieren und jetzt auf den Chip flashen. Das Problem war scheinbar, dass ich die Arduino Version 1.8.19 aus dem Microsoft Store verwendet habe, anstatt die Version 1.8.1. Mit der 1.8.1 funktioniert jetzt alles! Wenn ich die restliche Hardware aufgebaut habe, kann ich das dann "einfach" an die 2 Lon-Verbinder verkabeln, oder muss ich das noch wie die Windhager-Module irgendwie "binden"?
Du kannst dich einfach auf den LON hängen, binden muss man hier nichts. Stelle aber bitte vorher sicher, dass dein GND bei deinem ESP und deiner Heizung verbunden ist. Nicht dass dummerweise die GNDs 200V auseinander liegen :)
Johannes K. schrieb: > Wenn ich die restliche Hardware aufgebaut habe, kann ich das dann > "einfach" an die 2 Lon-Verbinder verkabeln, oder muss ich das noch wie > die Windhager-Module irgendwie "binden"? I am running with an M5Stack ESP32 module and only a MAXIM RS485 IC connected directly to the LON-bus. The M5Stack/ESP32 is powered from a plain USB-power adapter. In my case I have NOT connected ground between my ESp32 setup and the burner. Only the differential RS485 LON-bus. It works great. A simple RS485 adapter like the one below can easily be used. All you need is the ESP32 module and the RS485 adapter and that's it. https://www.amazon.de/-/en/DollaTek-MAX485-Module-RS-485-Development/dp/B07DK4QG6H/ref=sr_1_18?crid=2NK01FS6P0E6S&keywords=ICQUANZX+MAX485%2FRS485&qid=1643754798&sprefix=icquanzx+max485%2Frs485%2Caps%2C80&sr=8-18
Well, in theory this works well. A faulty USB power supply fried a microcontroller in an other setup, because it wasn't isolated well enough. And when connecting something to my central heater, i'd do my best that this won't happen here as well ;) So this was thought as a security measure hint except you are aware that your transceiver and your circiuit is isolated for the maximum possible voltage difference.
:
Bearbeitet durch User
Hallo, ich konnte es heute ausprobieren, leider war ich nicht so erfolgreich. In meinem PMX gibt es eine Klemme für GND, LON+ und LON-, da habe ich mich parallel zur Pellets-Saugeinheit draufgehangen. Leider kommt im Seriell-Monitor ausser den WIFI und Co. Meldungen nichts vom LON an. Die Verkabelung mit dem MAX487 habe ich gefühlt 100x kontrolliert. Anbei der Schaltplan. Ich hatte mir gedacht, ich schmeiß alles raus, was ich gerade "noch" nicht brauche. Die Pin's musste ich wie folgt ändern, da ich dieses Board hier verwende: https://www.amazon.de/gp/product/B08TBPBJGV/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1 #define LON_RX 17 #define LON_TX 16 #define LON_TX_EN 26 Oder fehlt da ich Schaltplan jetzt noch was, dass ich einen PIN auf Ground oder so ziehen muss?
Servus, schaut eigentlich sinnvoll aus. 1. die Polarität vom LON passt? 2. die gewählten Pins werden sicher nicht von etwas anderem verwendet? (1-wire?, Relais, ...) 3. Bei dem Board liegt wirklich der GPIO da an, wo du denkst? :D In dem Fall ist erst mal nur der RO-Pin notwendig. Magst da mal mit dem Oszi messen? Gruß, Georg
Hallo Georg, Polarität vom Lon hab ich gecheckt, die passt. Auf dem Modul steht hinten IO26, IO16 und IO17 drauf. Das muss ich doch dann so ins Programm eingeben, oder? Oszi messen ist schwierig, ich kann nur mit einem Multimeter dienen ;-) Ich habe jetzt mal nochmal alles von GitHub runtergeladen und neu kompiliert und hochgeladen. Auch den MAX487 habe ich schon in einen anderen getauscht. Aber keine Änderung... Welch .ino-Dateien müsste ich eigentlich kompilieren lassen? Theoretisch könnte ich ja LED, Relay usw. weglassen, oder? Ich habe bis jetzt immer die MESWIFI in Arduino geöffnet und dann die anderen INOs mit in Arduino aufgemacht, dass ich 12 Tabs hatte. Und dann alles kompiliert und auf den Chip. Gruß Johannes Ausgabe aus dem seriell-Monitor: [i] Starting [i] Setup WiFi [WiFi] Connecting... [i] Setup OTA [i] Setup Time [i] Setup SPIFFS [i] Setup LON bus [i] read status from SPIFFS [i] Setup MQTT [i] Setup Relays [REL] setting 0 to OFF [REL] setting 1 to OFF Setup done [REL] setting 0 to ON [REL] setting 1 to ON [REL] setting 0 to OFF in 2000 ms [REL] setting 1 to OFF in 5000 ms [i] cyclic status save [NTP] Sending request [REL] setting 0 to OFF [WiFi] Connected, IP address: 192.168.0.40 [NTP] The time is: 18:32:29 [REL] setting 1 to OFF
:
Bearbeitet durch User
Johannes K. schrieb: > Oder fehlt da ich Schaltplan jetzt noch was, dass ich einen PIN auf > Ground oder so ziehen muss? You have connected /RE with GND. This is incorrect. Connect /RE with DE, also replace R2 with 120ohm.
Uhm, that is possible, but not necessary.
:
Bearbeitet durch User
Mit welcher Spannung betreibst du den MAX487? Der Teiler passt zur Spannung? Ich würde langsam hergehen und die anliegenden Pegel messen bzw mal manuell setzen und im ESP32 schauen, ob der Pegel auch wirklich ankommt. (per digitalRead und Serial.printf) z.B. den MAX abklemmen und z.B. 5V an den Spannungsteiler anlegen.
Hallo, ich habe den Vorschlag von Thomas ausprobiert, leider keine Änderung. Kein Output. Die Spannung kommt im Moment direkt aus meinem Laptop vom USB-Port in das ESP-Board. Von da aus weiter zum MAX487. Gemessen habe ich gerade 4,6V am MAX. Auch mit einem USB-Netzteil keine Änderung. 4,55V Gruß Johannes
Johannes, can you copy paste the part of the code where you assign the GPIO's so we can see what it looks like. Mine currently looks like this.
1 | #define LON_RX 16 // GPIO16 is for Commu, GPIO35 is for my breadboard |
2 | #define LON_TX_EN 17 // GPIO17 is for Commu, GPIO2 is for my breadboard |
3 | #define LON_TX 5 // GPIO 5 is for both Commu and my breadboard |
This his how you should have connected it then,
1 | #define LON_RX 17 // Connects to RO on MAX487 |
2 | #define LON_TX 16 // Connects to DI on MAX487 |
3 | #define LON_TX_EN 26 // Connects to DE + /RI on MAX487 |
BUT!!!! There is no GPIO16 and 17 in the schematic above! So, it is not possible! (?) GPIO16 and 17 is also used for UART2 in some ESP-modules. Which pins on the module did you connect to, and exactly which module are you using?
Hello, this was "in between", sorry for the confusion. At the moment i have my setup like this: #define LON_RX 26 // Connects to RO on MAX487 #define LON_TX 18 // Connects to DI on MAX487 #define LON_TX_EN 19 // Connects to DE + /RI on MAX487 Modul is excactly this one: https://www.amazon.de/gp/product/B08TBPBJGV/ref=ppx_yo_dt_b_asin_title_o01_s00?ie=UTF8&psc=1 Code: #define LON_RX 26 #define LON_TX 18 #define LON_TX_EN 19 Thanks for your help! Johannes
:
Bearbeitet durch User
Also, if you are using a breadboard, make sure you have a buffer capacitor close to the MAX487, it is required for proper function! I forgot it on my first setup and I lost 50% of all packets due to that. Ok, many of the pins on the EPS32 has many different uses and can sometimes be troublesome to use. You could try the same setup as I have used that worked fine. #define LON_RX 35 // Connects to RO on MAX487 #define LON_TX 5 // Connects to DI on MAX487 #define LON_TX_EN 2 // Connects to DE + /RE on MAX487
To receive, you only need the RO line of the transceiver, so please focus on that first. - double-check LON polarity (or try reversing, to check if it changes things) - measure the RO line with your multimeter. is it static 0V or 5V? -> bad - does it toggle irregulary? -> good - or - do you see some voltage when you use AC measurement? -> good - also a good idea to use a different pin. be aware that <13 is tricky and > 33 is input only -> https://randomnerdtutorials.com/esp32-pinout-reference-gpios/ - yeah, that bypass cap is a good point, but then you still should see some packets on UDP 3333 in wireshark - what do the "System report" packets tell you?
:
Bearbeitet durch User
Magst vielleicht ein, zwei Fotos vom Breadboard reinstellen? Vielleicht hilft das. lg Michael
Hallo, anbei 2 Bilder, weiß aber nicht, ob man darauf was erkennen kann. Spannung zwischen RO und GND sind im Gleichspannungsmodus 0 - 66mV. Im Wechselstrommodus bleibt's bei 0V. Vielleicht ist auch mein Multimeter zu ungenau. Ich probiere jetzt mal noch einen anderen PIN als den 26er für RO aus. Gruß Johannes
Johannes K. schrieb: > Ich probiere jetzt mal noch einen anderen PIN als den 26er für RO aus. 23er Pin probiert --> gleiches Verhalten. bleibt bei der Zeit stehen.
> Spannung zwischen RO und GND sind im Gleichspannungsmodus 0 - 66mV. > Im Wechselstrommodus bleibt's bei 0V. Zwar ist das eher Kategorie "Spannung mit nassem Finger schätzen", aber es deutet drauf hin, dass dein Transceiver nix sieht. Was sagt dein Multimeter an den LON-Leitungen, was da anliegt?
Masse gegen LON+ --> 2,27V Masse gegen LON- --> 2,27V LON- gegen LON+ --> 0V
Wenn sich da auf den Leitungen nichts ändert, (AC mode, LON+ <-> LON-) würde ich skeptisch werden.
hab nochmal gemessen, springt rum, zwischen 0 und 0,24V im AC Mode. Was sollte es denn sein? Irgendwie muss das aber passen, sonst würde meine Pelletssaugerei nicht funktionieren...
Okay, wenn sich hier "etwas tut", dann könnte die Basis schon passen. Aber ganz ehrlich - ohne Oszi ist das hier besseres Schätzen. Wo hast du den LON abgegriffen? Wie lang sind die Leitungen?
Kabel sind ca. je 15 - 20cm lang. Der Anschluss ist für den Pelletssauger, direkt im Heizkessel an der 1. Klemme, wo das UML C1 draufsteckt. Würde sowas hier reichen, um was zu "sehen"? https://www.amazon.de/Quimat-Digital-Oszilloskop-Maschine-montiert/dp/B077CZVZTJ/ref=sr_1_7?keywords=oszilloskop&qid=1643839033&refinements=p_76%3A419122031&rnid=419121031&rps=1&sprefix=oszilo%2Caps%2C86&sr=8-7
Bin kein Messgeräte-Profi, aber ich hätte mal gesagt, dass das von der Bandbreite ausreichend ist.
You MUST add a much larger capacitor between VCC and GND close to the MAX487!!!! Before you do that, it is pointless to fault find anything else. You should preferably put 100uF.
You can easily turn the ESP32 into a simple logic analyzer, and the way things are right now, that or some LED's can get you a long way ;) But first, a buffer capacitor!
Was mir grad so kommt, beim LON sollte doch der LON+ bei 2,7V liegen? LON- liegt bei so 2.3V -> https://store.chipkin.com/articles/rs485-what-are-possible-rs485-polarity-issues
Hallo, ich Schaltplan stand was von 100nF, den hatte ich drin. Hab jetzt auf einen 100uF gewechselt, aber immer noch keine Kommunikation. Außerdem habe ich noch ein anderes Multimeter genommen, und da ist auf beiden LON-Klemmen gegen Masse 2,4V drauf. Kann ungenau sein, aber beides mal exakt das Gleiche. Gruß Johannes
Ich habe jetzt auch an meiner Anlage gemessen. Beide LON haben bei mir 2.20 V und bei starker Aktivität auf dem Bus sehe ich ~10mV als AC mit meinem Fluke. Daher besser warten bis dein Oszi da ist.
ich glaube, wir müssen wo anders suchen ;-) Die Ausgabe im Serial-Monitor bleibt immer noch an der Zeit stehen. Allerdings habe ich gerade mal den LON-Scanner angeworfen und auf einmal kommen da Daten an ?!?!? Es wird zwar immer noch nichts im SerialMOnitor oder MQTT ausgegeben, aber prinzipiell scheint das Lesen zu funktionieren... :-) Gruß Johannes
:
Bearbeitet durch User
Hallo, ich habe mal den Quellcode in GitHub angeschaut, da ist "MQTT_setup" auskommentiert? Ein einkommentieren bringt aber auch nichts, da es scheinbar nirgends einen "Connect" gibt? Gab's Probleme mit MQTT? Gruß Johannes
Nein, MQTT funktioniert perfekt, bei mir mit Mosquitto. du musst natürlich die MQTT.ino anpassen (Server etc.) als auch in der MESWiFi.ino sowohl mqtt_setup() als auch mqtt_loop() aktivieren. lg Michael
Ja, natürlich ;-) mqtt_loop() auskommentieren, den Rest hatte ich schon. Jetzt sehe ich was im Serial-Monitor und auf dem MQTT-Explorer sind auch die Werte drauf!!! :-) Vielen Dank an alle für die Mithilfe!! Das war eigentlich schon das Ganze "Problem"... Danke nochmal!! Johannes
ich hab schon länger einen Grund für den Kauf eines Oszis gesucht ;-)
heißt? auch würde mich interessieren, wie ich zusätzliche Datenfelder aus dem LON-Scanner auf mein MQTT bekomme. Steht das irgendwo?
heisst: Ich muss das fixen. da steht nicht WVF oben in den Textfeldern. Wenn du mehr ins MQTT schaufeln willst, musst den arduino source in der LON.ino anpassen. Ist aber nicht so wirklich sauber.
Ich hab das insbesondere für WVF deutlich erweitert - kann ich gerne zur Verfügung stellen. Wobei ich immer noch am Lernen bin, wie mein UML C1 und WVF mit meiner Gastherme zusammenspielen. Die sehe ich nämlich im Unterschied bei Georgs PMX nicht am LON-Bus. Ich fürchte ich muss mir den eBus auch noch ansehen. lg Michael
den PMX Kessel sehe ich auch nicht, auch nicht im LON-Scan. Könnte daran liegen, dass mein Kessel beim Start immer Version 2.60 zeigt? Wenn du mir deine LON.ino zur Verfügung stellen könntest, das wäre super! Ich habe auch UML C1 und WVF in Betrieb. Danke, Johannes
siehe Anhang. Kann es sein, dass die 70 dieses Raumbediengerät ist, das bei mir im Wohnzimmer hängt?
generell: https://github.com/g3gg0/LonScan/releases/ konkret die letzte: https://github.com/g3gg0/LonScan/releases/tag/v0.3.5
Ok ändert nix. Schad. Dann hab ich die genaue version nicht als info-file. Falls jemand alte XIF files hat, gerne melden.
Anbei mein Scan-Ergebnis. Im Regelbetrieb hab ich knapp über 0% CRC Fehler - wenn ich das Tool verwende, geht der Wert stark rauf. Ich hoffe, dass da das hoffentlich bald neue Setup Besserung bringt :)
> Wenn du mir deine LON.ino zur Verfügung stellen könntest, das wäre > super! > Ich habe auch UML C1 und WVF in Betrieb. gerne, anbei! Auch die MQTT.INO Es fehlt dort noch das ganze Handling von noch nicht abgefragten, sprich noch frisch initialisierten Variablen.
I have been using the M5Stack Core module to run this. Tonight I wanted to install on a Core2 module, and then I ended up with the
1 | error: 'PERIPH_RMT_MODULE' was not declared in this scope |
To overcome this problem, I replaced an include in LON_RMT_rx.ino
1 | //include "driver/rmt.h" |
2 | #include "driver/periph_ctrl.h" |
Perhaps the same change will fix the same issue occuring when updating IDE from 1.8.1 to 1.8.19
Johannes K. schrieb: > <screenshot> Ich habe in dem screenshot gesehen, dass der version-string falsch interpretiert wird. Könntest du mit der v0.3.7 die "Application" deiner WVF dumpen und mir zuschicken? https://github.com/g3gg0/LonScan/releases/tag/v0.3.7 So könnte ich mir genauer anschauen was an deiner version anders ist. mailadresse: mes ÄT g3gg0 PUNKT de Gruß, Georg
:
Bearbeitet durch User
Hallo zusammen, ich habe einen Solvis Lino 3. Der ist wohl baugleich mit einem Windhager BioWin BWE 150 Exklusiv. Ich würde den gerne mit Georgs Lösung auslesen. Ich versuche mir das aus dem Thread zu erschließen, leider gelingt es mir nicht vollständig. Vielleicht könnt Ihr mir helfen das zum fliegen zu bekommen: Ich habe einen ESP-WROOM-32 und ein C25B RS485 Modul. Ich habe das so auf dem Breadboard aufgebaut: RO -> G26 RE/DE -> G25 DI -> G35 VCC -> 3,3V GND -> GND Ist es richtig, den Aufbau nun wie folgt an den LON-Bus zu hängen? A -> LON+ B -> LON- Ist es egal wo ich das reinhänge? Ich verstehe das mit dem Widerstand R7 nicht. Darf der immer da sein und MUSS am Ende vorhanden ein. Oder muss der entfernt werden, wenn ich im Bus hänge. Bus-Kabel Im Installateur-Handbuch S.42 habe ich die Belegung der Klemme X17 gefunden: 1: 12V (Gelb) 2: GND (Orange) 3: LON+ (Rot) 4: LON- (Braun) Von dort läuft ein "Bus-Kabel" von der Reglerplatine zum Bedienpanel. Kenn ihr diese roten Stecker, da könnte man sich ja schön einklinken, wenn man so einen als Female-Stecker bekommt. Alternativ gibt es am Bus auch einen Diagnosestecker. Danke vorab für die Hilfe.
Ich hoffe die Gxx sind die GPIOxx. Wenn ja, dann sollte es so sein: RO (RX) -> G35 RE/DE (TX_EN) -> G26 DI (TX) -> G25 Referenz: https://github.com/g3gg0/MESWiFi/blob/master/LON.ino#L15 #define LON_RX 35 #define LON_TX 25 #define LON_TX_EN 26 Terminator: Kannst so drin lassen, sollte nicht stören.
:
Bearbeitet durch User
Hallo Georg, danke für die Antwort. Ich habe die Hardware nun entsprechend aufgebaut und den ESP32 geflasht.
1 | [i] SDK: 'v3.3.5-1-g85c43024c' |
2 | [i] CPU Speed: 240 MHz |
3 | [i] Chip Id: 9A12CFA4 |
4 | [i] Flash Mode: 00000002 |
5 | [i] Flash Size: 00400000 |
6 | [i] Flash Speed: 80 MHz |
7 | [i] Heap 312232/338720 |
8 | [i] SPIRam 0/0 |
9 | |
10 | |
11 | [i] Starting |
12 | [i] Setup WiFi |
13 | [WiFi] Connecting... |
14 | [i] Setup OTA |
15 | [i] Setup Time |
16 | [i] Setup SPIFFS |
17 | [i] Setup LON bus |
18 | [i] read status from SPIFFS |
19 | [i] Setup MQTT |
20 | [i] Setup Relays |
21 | [REL] setting 0 to OFF |
22 | [REL] setting 1 to OFF |
23 | Setup done |
24 | [REL] setting 0 to ON |
25 | [REL] setting 1 to ON |
26 | [REL] setting 0 to OFF in 2000 ms |
27 | [REL] setting 1 to OFF in 5000 ms |
28 | [i] cyclic status save |
29 | [REL] setting 0 to OFF |
30 | [NTP] Sending request |
31 | [WiFi] Connected, IP address: 192.168.0.148 |
32 | [NTP] The time is: 13:48:17 |
33 | [REL] setting 1 to OFF |
MQTT läuft auch, habe ich aber wieder ausgeschaltet, denn leider passiert weiter nichts. Ich werde auch nicht ganz schlau aus dem Code was ich nun tun könnte. Wie verbinde ich denn deinen Logger korrekt mit dem ESP32?
1 | const char * udpAddress = "192.168.1.255"; |
Diese Broadcast-Adresse muss ich sicherlich auf mein Netz anpassen, oder? Dein Logger hört auf diese Broadcasts? Es werden aber leider keine Geräte gefunden. Hast du eine Idee?
Es kommt nichts. Ich habe in der LonScan.cfg die Broadcast-Adresse und die direkt Adresse vom ESP32 probiert.
1 | "RemoteAddress": "192.168.0.255", |
In der LON.ino
1 | const char * udpAddress = "192.168.0.255"; |
Müsste man hier nicht auch auf einen Local Broadcast 255.255.255.255 stellen können? Dann muss man das nicht anpassen. Hab ich vielleicht verpolt angeschlossen? Oder ist das egal? C26B -> Pelletkessel A -> LON+ B -> LON-
:
Bearbeitet durch User
hm. Eigentlich sollte es mit den Broadcast-Adressen gehen. Was sagt das oszi am transceiver? Spannungsverlauf A, Spannungsverlauf B, RO ?
Johannes K. schrieb: > Funktioniert! > Danke an alle für die Hilfe!! > > Ich konnte alles kompilieren und jetzt auf den Chip flashen. > Das Problem war scheinbar, dass ich die Arduino Version 1.8.19 aus dem > Microsoft Store verwendet habe, anstatt die Version 1.8.1. > > Mit der 1.8.1 funktioniert jetzt alles! > > Wenn ich die restliche Hardware aufgebaut habe, kann ich das dann > "einfach" an die 2 Lon-Verbinder verkabeln, oder muss ich das noch wie > die Windhager-Module irgendwie "binden"? Hello Johannes. I am at the moment trying to compile, and I end up with the same error "error: 'PERIPH_RMT_MODULE' was not declared in this scope". I am using IDE 2,0, also installed 1,81 Also "PERIPH_RMT_MODULE' was not declared in this scope" error. What did you change ? BR Claus
Hi all there, First thanks for all your work this is awesome. I tried to use the MES Wifi firmware on a BIOWIN2 but I have trouble parsing messages and I am seeking some help. I get CRC errors from messages coming from the bus. Message sent by the esp are read back correctly on the rs485 loopback and there seems to be an answer to every esp requests. Scope signal taken on esp rx pin looks good so i don't really understand, it looks like a decoding problem. I am using a lolin32 board with a rs485 module board, I already tried to change hardware. Any ideas ? Thanks
As a follow up I checked out the previous commit on https://github.com/g3gg0/MESWiFi.git and now it is working fine. So there might be a bug in this last commit.
Found out that it works for a value of bits_overlap of 1 or 2 but not above. Last commit set it to 3.
You are right, the value 2 is a lot more stable. Thanks! No idea why it made it into the repo. I also updated the repo to be used with PlatformIO, not arduino. It also now has a) a web interface b) SoftAP if no config was found (http://192.168.4.1/) c) configurable MQTT server and wifi credentials d) versioning (see web interface) e) binary releases and update-via-http feature (https://g3gg0.magiclantern.fm/Firmware/MES-WiFi/firmware.bin will be my latest release, currently v1.3 - 1a0128a) For building from source: If you don't have WSL installed: edit platformio.ini and change > build_flags = !bash -c "echo -Isrc -DDEBUG_ESP_HTTP_UPDATE > -DDEBUG_ESP_PORT=Serial -DPIO_SRC_REVNUM=$(git rev-list --count HEAD) > -DPIO_SRC_REV=$(git rev-parse --short HEAD)" to > build_flags = -Isrc -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_PORT=Serial > -DPIO_SRC_REVNUM=0 -DPIO_SRC_REV=none
:
Bearbeitet durch User
Can it be build with arduino IDE 2.0 ? I am having problems with the error "error: 'PERIPH_RMT_MODULE' was not declared in this scope". and have tried IDE 1.8.1. but still get the same error. Best regards Claus
Claus L. schrieb: > Can it be build with arduino IDE 2.0 ? > I also updated the repo to be used with PlatformIO, not arduino. probably not :) I am working with PlatformIO only now for this project.
Did someone manage to send command ? Like changing heating mode, ordering a water heater cycle, or temperature settings. And is it the same protocol on the Ebus line ?
:
Bearbeitet durch User
Dear all, I´m deeply impressed by the work that has been done yet in this place! Respect!!! A Windhager BioWin Exclusive wants to be connected to my MQTT ecosystem. I´ve compiled the MESWifi (GIT latest), and flashed it to an ESP32, which connects via a RS485 adapter board to the LON bus. Some data was available immediately, but unfortunately I can only see some of the variables. Tried to get a deeper understanding with LonScan, but somehow it seems that there are connection issues. ESP sends it´s udp data to broadcast (x.x.x.255:3333), and Lonscan sends also to broadcast (x.x.x.255:3334). Unfortunately Lonscan tells me that all packets get lost. (Timeouts constantly increasing) Can someone help me to figure out what´s wrong with my setup? Please forgive, if I have read something wrong... ;-)
:
Bearbeitet durch User
Christian R. schrieb: > Can someone help me to figure out what´s wrong with my setup? Welcome. Send the packets to the specific IP instead of the broadcast address. Regards, Georg
Georg H. schrieb: > Send the packets to the specific IP instead of the broadcast address. I´ve already tried to send the traffic directly between my pc and the ESP32, but this didn´t work either. (Think i read somewhere that it only works with broadcast for some reason) Here´s the result with direct traffic. To debug a little further, I added a serial debug message to the function (lon_tx) which sends data onto the LON bus to see if the ESP receives udp packets. I see the debug message appear on the ESP when Lonscan sends its udp requests, and it should be transmitted to the bus. (Didn´t check yet if the data is really sent to the LON physically with an Osci) Yet I´m unsure if it´s a problem on the ESP/LON side or a plain network thing between the ESP and Lonscan. Is the lack of visible values caused by not correctly set NV´s in my software because my heating differs from yours, or should be more values visible anyway when the get polled properly?
:
Bearbeitet durch User
Christian R. schrieb: > Yet I´m unsure if it´s a problem on the ESP/LON side or a plain network > thing between the ESP and Lonscan. Is the lack of visible values caused > by not correctly set NV´s in my software because my heating differs from > yours, or should be more values visible anyway when the get polled > properly? Maybe the TX path isn't working and the LON network doesn't see the messages of the ESP32. Are you sure about the wiring being correct? i.e. the enable pin and the tx pin to the transceiver
Georg H. schrieb: > Are you sure about the wiring being correct? > i.e. the enable pin and the tx pin to the transceiver I´ll check it with an osci later, thanks so far!
This is the LON bus when the heating is shut off. So it shows only the data that is sent by the ESP. Doesn´t look too bad IMHO.
Is this A-to-B on the LON bus? Are you using the latest git revision?
Georg H. schrieb: > Is this A-to-B on the LON bus? > Are you using the latest git revision? Yes and yes. I downloaded the zip from git on 25.9. so it is the latest. Picture is not very good, sorry for that. But you can clearly see the differential voltage. I switched the heating also on and measured again to see if the signals from my rs485 adapter are at the same voltage level. (barely no difference) What puzzles me is the fact that I see some of the values, which seem to come cyclically and don´t need to be polled. Right?. That works ok, very low CRC error rate (1-2%) which lets me believe that the connection is right in this place. But on the other hand it seems that the NV´s which are requested by MESWifi never get answered by some node. Even the requests from Lonscanner aren´t gonna answered from another node. So I share your opinion that TX path must somehow be not right. But I see that it sends something which does not look that bad when viewed on the Oscilloscope.... One of these RS485 adapters is used: https://www.amazon.de/WINGONEER-MAX485-RS485-RS-485-Entwicklungsboard/dp/B06XHHWLMW It is supplied with 5V, RO pin is connected through a voltage divider to clip input voltage at 3.3V to GPIO35. RE/DE are connected to GPIO 26. DI is connected to GPIO25. A is connected to LON+ and B to LON- Did I miss anything?
:
Bearbeitet durch User
Christian R. schrieb: > Did I miss anything? cough no... fetch the latest version from git now and try again... :)
Thats weird... now it seems that Lonscanner can poll the device, I see some data now... But the last commit on the Git repo is 15days old... Did I really managed it to work with an old/wrong version??
No, I just forgot to push the last change I made :D This change was 2 weeks ago.
Georg H. schrieb: > No, I just forgot to push the last change I made :D A classic... happens to me 1-2 times per year @ work and always makes me going nuts before someone asks: did you push it?? :D :D :D Glad it´s working now and thank you for your effort. I can work from here to customize the code to my heating system. Some of the NV´s are differing against the hardcoded ones in LON.ino/MQTT.ino. Would be great to have id implemented more modular and separated, so a future code update doesn´t break customizations. Your code is great work, and I think a lot of people could/will use it!! :)
Great to hear that it works :) If you have contributions, feel free to send pull requests.
Hello Ok, so I have downloaded VSCode, installed PlatformIO and WSL, and downloaded your MES-WiFi from Github, Georg. I have opened it in VSCode/PlatformIO and can see the Project Tasks "Default", "MES-WiFi" and "MES-WiFi_ota". Compiling does not work with the "!bash" build flags, but it does work with the "-Isrc" build flags. Out of curiosity, what do I need to do to get it working with WSL and the "!bash" build flags? I am new to VSCode, PlatformIO and WSL. Will continue with trying to getting this into an M5Stack Core2 connected to my Windhager Biowin.
Thomas N. schrieb: > Compiling does not work with the "!bash" build flags, but it does work > with the "-Isrc" build flags. > > Out of curiosity, what do I need to do to get it working with WSL and > the "!bash" build flags? this is for fetching the git version number via scripts. you can set the defines manually to something you want - or - install git. regards
Wer noch Interesse an einer PCB hat, bitte melden. Hier haben sich auch ein paar gemeldet: https://github.com/g3gg0/MESWiFi/issues/1 Ich hoffe da kommen keine Doppelmeldungen :)
Hallo Georg, eine tolle Arbeit! Ich habe gerade auch im Github eine, wenn es irgendwie geht, fertig bestückte Platine angefragt. Leider kann ich mein Löten nur als Braten bezeichnen. Vielen Dank und Grüße Holger
Hallo, würde auch folgender Adapter funktionieren, dieser braucht aber keinen TX enable pin d.h. den kann ich einfach weglassen oder? Verwendet den MAX13487. https://www.amazon.de/gp/product/B07B667STP/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1 Btw - kann man die serielle konsole oder zumindest die LON werte auch ins WebIf packen, hätte es versucht bin aber kläglich gescheitert. danke!
Kleines update von meiner Seite. Ich hab mir mittlerweile einen Home Assistant eingerichtet und baue langsam meine MQTT-Geräte so um, dass sie dem HA die config-messages gleich mitschicken. So hab ich das jetzt auch bei MES-WiFi gemacht. Screenshots anbei. Gruß, Georg
Hier läuft die Heizung grad an. Dieser Wert ist geeignet, um die "Energiemenge", die verheizt wurde zu tracken. Ich berechne diese, indem ich die "Fördermenge [kg/h]" mit der Energiemenge von Pellets 4.8 [kWh/kg] multipliziere und das jede paar Sekunden integriere. Für mich schaut es so aus, als würde des passen. Am Ende kann man sich das dann auch im HA visualisieren lassen.
Hallo Georg wie hast du die ganze Programmierung auf den ESP32 geflasht bzw. Finde ich diese?
Servus. Die findest du hier: https://github.com/g3gg0/MESWiFi Ich nutze Visual Studio Code mit dem PlatformIO addon. Gruß, Georg
Hallo, nachdem ich Georg ordentlich per Nachricht genervt habe, bin ich bei meiner Suche auf diesen Thread gestoßen :-) Leider komme ich nicht weiter: Ich habe einen ESP32 mit Max485 Transceiver erfolgreich in Betrieb nehmen können. Nun unterscheidet sich meine Paradigma MES wohl in ein paar Details. Ich konnte das Wireshark LUA erweitern und so einige Daten verfügbar machen, es fehlen aber noch einige Daten, die auch nicht als UNKNOWN in Wireshark auftauchen. Es fällt zugegeben schwer, Euren ganzen Ausführungen zu folgen, daher die Bitte um Ideen, wie ich mein Ziel doch noch erreichen kann. Es sind folgende Punkte für mich noch ungelöst: 1.) Wieso sehe ich nicht alle Daten, zB.: Temperatur Solarausgang sehe ich, Eingang nicht, Drehzahl Pumpe sehe ich nicht, Brennerstatus der Gastherme kann ich nicht zuordnen, oder sehe ich nicht. Muss man auf den LON noch einen Request senden, um alles zu sehen? 2.) Kann man die Uhrzeit in den MES Geräten per ESP32 setzen? Ist das richtig? Das wäre ja unglaublich toll, nach Stromausfall ist bei mir immer alles auf 1997... Ich habe auch LON Scan probiert, da sehe ich aber nichts, irgendwann stürzt es einfach ab. Danke vorab, Ron PS: Sorry nochmal Georg, ich hatte den Thread vorher nicht gefunden.
Alles gut. Wenn ich keine Zeit habe, dauern Antworten oft etwas :D Und da ich viele Hobbies hab, gerät da auch oft was in Vergessenheit. Alles etwas lang her, daher der Versuch, das zu erklären. Also ein paar Infos werden von der Heizung zyklisch als Network Variable (NV) rausgesendet. Die Infos legen quasi als broadcast auf dem LON-Bus. Andere Variablen lese ich gezielt aus. Ich glaub die heissen auch NV, werden aber nicht aktiv gesendet. Dazu frage ich per LON-Protokoll gezielt die NVs an. Mit meinem C#-Tool LonScan kann man das für die jeweiligen Module sehen, was sie auf dem Bus als Broadcast senden. Aber davor müssen die Module erst im .cfg konfiguriert werden. Ich hab dazu alle Windhager .xif eingelesen und entsprechend im .cfg vom LonScan aufgelistet. Du kannst ja erst mal mit dem "Suchen" Button neben dem grünen Plus das Netz durchsuchen. Mal kucken, was da so gefunden wird. Wenn dann rechtsklick "Add as xxxx" machst, kommt ein Dialogfeld in dem Firmware details stehen. Am besten mal screenshots davon machen.,
Ron S. schrieb: > 2.) Kann man die Uhrzeit in den MES Geräten per ESP32 setzen? Ist das > richtig? Das wäre ja unglaublich toll, nach Stromausfall ist bei mir > immer alles auf 1997... Ja, kann man: "File -> Set system time" Aber z.B. UML C1 haben ihre eigene Zeit. Ich hab noch nicht rausgefunden, wie ich bei denen in die config komme :( Wenn hier einer nen Tip hat, gern her damit :) > Ich habe auch LON Scan probiert, da sehe ich aber nichts, irgendwann > stürzt es einfach ab. Ich hab ein paar Änderungen gemacht. Crasht das tool noch? Und wenn ja, screenshots bitte. https://github.com/g3gg0/LonScan/releases/tag/v0.4.0
Hallo Georg, vielen, vielen Dank. Das bestätigt aber im gewissen Rahmen meine Annahme, dass mir die Requests fehlen. Gibt es irgendeine Chance, den Aufbau dieser Requests zu erlernen? Es erinnert mich sehr an CAN-Bus, aber da hatte ich eine Doku und konnte die Abfragen als CAN Nachricht senden. Hier habe ich es noch nicht verstanden. Ich glaube auch, dass ich die Geräte IDs einfach noch nicht alle kenne. Die alte MES von Paradigma bei mir ist wahrscheinlich noch älter als Eure Pellet Systeme, scheint aber identisch zu funktionieren. Ich glaube, mir fehlt einfach so eine Initial-Zündung, vielleicht ein Beispiel, keine Ahnung. Das Tool teste ich gerne, es ist aber möglich, dass es bei mir nicht funktioniert, weil ich ein UniFi Netzwerk einsetze, für Wireshark musste ich auch direkt über die Konsole tracen. Was praktisch ist: ich habe vor einiger Zeit eine Platine gebaut, die als Ersatznetzteil dient, davon konnte ich eine unbestückte Platine verwenden, um an die 12V zu kommen, damit ist es per Bauer Step-Down nun einfach, das vorhandene Leergehäuse zu verwenden :-) Also wenn es noch ein Beispiel, einen Hinweis zu den Requests oder ähnliches gibt, immer her damit! Noch einmal: ich bin wirklich dankbar, so komme ich vielleicht noch ans Ziel. Gruß Ron
Komisch, bei iPhone Nutzung fehlt die Formatierung des Textes, sorry.
hab noch einen crash reporter eingebaut, der das vllt etwas einfacher macht https://github.com/g3gg0/LonScan/releases/tag/v0.4.1
> Gibt es irgendeine Chance, den Aufbau dieser Requests zu erlernen? > Es erinnert mich sehr an CAN-Bus, aber da hatte ich eine Doku und konnte > die Abfragen als CAN Nachricht senden. Ja, es gibt eine spec dazu - google mal nach "LonTalk Protocol Specification" Macht keinen Spass zu Lesen, aber es gibt sie... Ich hab auch einen "PacketForge" gebastelt, mit dem du Pakete selber bauen kannst: "File -> PacketForge" Der dekodiert dir auch die Pakete und du kannst die senden und die Antwort anschauen. Warum das mit deinem Netzwerk nicht geht, müsstest du mir noch genauer erklären.
:
Bearbeitet durch User
Ich denke, muss aber nochmal schauen, dass bestimmte Funktionen bei mir geblockt werden. Wireshark funktionierte auch nicht über das Wifi, sondern nur über tcpdump. Daher meine Annahme. PacketForge könnte ein guter Ansatz sein, ich frage mich nur, wohin ich was senden muss, aber vielleicht ist das ja Teil der erwähnten Doku. Eine Firmware zerlegen wird es bei mir wohl nicht geben. Ich kenne keine, aber auch viele Geräte aus Deiner Config sind mir unbekannt, UML etc kenne ich, aber das war es fast schon. Danke :-)
Wenn du einen Scan machst, solltest du alle Geräte auf dem Bus finden.
So wie hier im Anhang sieht es immer aus, 100% loss. Keine Ahnung, wie gesagt, vielleicht verhindert das Netzwerk etwas an der Stelle, Config ist länger her :-)
Du hst die IP-Adresse des ESP32 im .cfg angegeben? Die IP ist auch von deinem Rechner auch erreichbar? cmd.exe -> ping <IP>
Ich habe die IP eingegeben, aber leider passt was nicht. Ping funktioniert einwandfrei... Wie gesagt, Wireshark auch nicht so einfach. Über ssh dann schon, siehe Bilder...
Könntest du die firmware des ESP32 so konfigurieren, dass die broadcast-address korrekt ist? LON.ino von: const char *udpAddress = "192.168.1.255"; auf: const char *udpAddress = "192.168.15.255";
Ich denke schon, dafür muss ich nur neu compilieren, oder? Mittlerweile läuft VS Code mit PlatformIO gut. Ich habe es nur noch nie vom PC hochgeladen, bis jetzt nur Mac. Ist auf Git die aktuellste Version? Meine erste Version hat sich mit "V1." gemeldet und nach einem Update kam dann "V1.6".
Ron S. schrieb: > Ich denke schon, dafür muss ich nur neu compilieren, oder? korrekt. einfach source abändern und flashen
Jetzt geht Wireshark und Dein Tool auch ;-) Nun, da bin ich ein Stück weiter... Was mache ich jetzt damit?
Ich finde, dass sieht brauchbar aus, die Firmware ist steinalt :-) Aber wie bekomme ich diese Daten am Ende vom ESP32 in meinen MQTT Stream?
...dazu musst du hässlich geschriebenen source code selbst ändern :) Ausserdem würde ich erst mal prüfen, ob die Konfiguration überhaupt korrekt ist. Kann gut sein, dass meine Daten hier unvollständig sind.
:
Bearbeitet durch User
Ok, verstanden, da die Daten ja in Deinen Abfragen sind, sollte man das anpassen können und dann in den Abfrage Loop des ESP32 integrieren. Vielen Dank, wieder ein Stück weiter. Hoffentlich kommt der Knoten im Kopf nicht wieder und ich komme dahin, wo ich hin möchte, einfach nur einen Alarm mitbekommen :-)
> Hoffentlich kommt der Knoten im Kopf nicht wieder und ich komme dahin, > wo ich hin möchte, einfach nur einen Alarm mitbekommen :-) Wird sicher beides passieren :D
Guten Morgen, hast Du noch einen Tipp, wie man die Remote Update Funktion nutzt? Dann muss ich nicht immer zum ESP32 rennen, sondern könnte schneller meine Ideen testen. Gruß Ron
In PlatformIO kannst du unten in der Statuszeile das aktuelle Projekt auswählen und dann kann man per remote update die software updaten. In PlatformIO gibts eine section für die Projektvariante "[env:MES-WiFi_ota]" in der platformio.ini in der die IP-Adresse des µC hinterlegt ist. Hier die IP deines ESP32 eintragen und dann sollte das "Upload" diese updaten. Ich glaube ich hatte die firmware so konfiguriert, dass das remote update nur eine gewisse Zeit aktiv bleibt. Per Home Assistant bzw MQTT kann man das wieder aktivieren. Alternativ müsste auch http://<ip>/ota funktionieren.
Super, gilt das auch für das Wifi? Kann man die Parameter mit übergeben, damit man direkt wieder online ist mit dem ESP32?
Was meinst du mit wifi? Wenn einmal konfiguriert, werden die setings im SPIFFS gespeichert und bleiben über Firmware updates hinweg bestehen.
Ok, ich teste und werde berichten :-) Ich dachte, wenn man ein Update macht, muss man immer alles von vorne konfigurieren. So wie beim USB Upload halt.
Kurzer Zwischenbericht: Ich bin wahnsinnig weit gekommen. Mittlerweile schreibe ich diverse Daten in die InfluxDB und zeige sie mit Grafana an. @Georg: kannst Du mir verraten, woher die Daten für die einzelnen Geräte stammen? Es scheint mir so, dass meine Geräte andere Werte haben und deswegen die Anzeige in Deinem Tool nicht stimmt. Wie kann ich das berichtigen? Bei Dir gibt es halt keine UML C1, BBU C1, Solar... Danke, Ron
Georg H. schrieb: > Aber davor müssen die Module erst im .cfg konfiguriert werden. > Ich hab dazu alle Windhager .xif eingelesen und entsprechend im .cfg vom > LonScan aufgelistet. die .xif hab ich aus dem service tool von windhager genommen.
Noch mal: Vielen, vielen Dank für die Hilfe, ohne wäre ich jetzt nicht so weit. Ich arbeite weiter an den Auswertungen und den Daten, eine XIF gibt es von Paradigma eher nicht für meine Module. Mal sehen, welche Werte ich noch finde. Habe noch nichts für Brenner, Solarfurchfluss etc…, aber vielleicht wird das noch :-) Ich dokumentiere fleißig, welcher Wert was für Paradigma bedeutet, vielleicht hilft das später auch noch mal…
Magst du im .cfg einen eigenen Eintrag anlegen und deine Erkenntnisse dort einpflegen?
Kann ich machen, werden dann aber 3 - 4 Einträge, für jedes Device einen. Danach strukturiere ich auch gerade meine Doku. Welches Gerät, welche ID, welches Signal, welcher Wert etc.
Ich bin weiter fleissig dabei, meine Doku und die CFG zu erweitern. Noch scheitere ich an der Uhrzeit und dem Datum, aber vielleicht mache ich auch was falsch? Hast Du noch einen Tipp? Es geht bei mir ja quasi nur um 2x UML, mehr Datum gibt es bei mir nicht...
Georg H. schrieb: > Ich habe die Zeit der PMX und der beiden UML gesetzt indem ich die > network variable 0x100 entsprechend gesetzt hab. > Die jeweiligen Geräte haben jetzt auch (laut ihrer NV) auch die Zeit > übernommen. (yay!) Was genau war dann damit gemeint? Auslesen kann ich Datum und Zeit ja auch…
Alle Module haben eine Zeit-NV - aber das Bedieninterface des UML hat wohl eine eigene Uhr.
Ich habe nur die Geräte selber, kein Bedienteil. Oder verstehe ich Dich nicht? Siehe Anhang, Beispiel, dort soll die Zeit gesetzt werden.
Ich hab eine UML C1 mit dem Bedienteil rechts. So eine: https://img.kleinanzeigen.de/api/v1/prod-ads/images/de/de57a277-1310-49de-91f8-3c8a9729fef5?rule=$_57.JPG (Der Link wird sicher nicht lang verfügbar sein) Da ist es jedenfalls so, dass das Bedienteil die Uhrzeit des Moduls ignoriert. Wie man diese programmieren kann, weiss ich noch nicht.
Hallo Ron, Windhager verwendet zum "steuern" der Module sogenante "User Application Message codes", nicht NV Variablen. Auslesen kann man die zB. mit (Hex Werte am LON Bus):
1 | 0E 00 06 21 = READ_STANDARD_VARIABLE |
2 | |
3 | senden: 0E 00 06 21 04 02 C6 00 40 |
4 | Antwort: 0E 00 06 21 0A 46 01 04 28 E8 FD 00 00 05 AA -> (Datum,16.12.2077,1.1.1900,2.3.2019) |
5 | |
6 | senden: 0E 00 06 21 04 02 C8 00 40 |
7 | Antwort: 0E 00 06 21 0A 48 01 04 2A 9F 05 00 00 96 03 -> uml (zeit,23:59,0,15:18) |
8 | |
9 | senden: 0E 00 06 21 04 02 C9 00 40 |
10 | Antwort: 0E 00 06 21 0A 49 81 00 00 00 00 00 00 05 00 -> Wo-TAG (0=Mo, 5=Sa, 6=So) |
Setzen kann man Datum und Zeit zB so:
1 | 0E 00 06 23 = WRITE_PARAMETER |
2 | |
3 | senden: 0E 00 06 23 06 02 C6 00 40 13 AA -> set uml date (0xAA13 = 43539 Tage seit 1.1.1900 -> 16.3.2019) |
4 | Antwort: ACK |
5 | |
6 | senden: 0E 00 06 23 06 02 C8 00 40 95 03 -> set uml time (0x395 = 915 min seit 00:00 -> 15:17) |
7 | Antwort: ACK |
Wie du das senden kannst, kann dir sicher Georg sagen. Und ob das bei allen UML funktionier, kann ich auch nicht sagen. Bei meinem UML+ V2.0 funktioniert es so. lg. Peter
Hallo Peter, vielen Dank, in diese Richtung wollte ich, diese Basis hat mir gefehlt. Vielleicht hatte ich mich auch nur falsch ausgedrückt. Es stimmt, ich muss noch heraus finden, wie ich das auf den Bus bringe. Leider ist es wirklich schwierig, dieses Projekt umzusetzen. Allerdings macht es auch großen Spaß und ich würde mich freuen, wenn mein kleiner Anteil noch mal einem Paradigma User bei der Fehlersuche hilft. Ohne die Hilfe hier wäre das sowieso alles nicht möglich. Gruß Ron
Könnte man so auch die Betriebsart setzen? Also von Absenken auf Auto oder ähnlich? Dann könnte man über den ESP32 nach Stromausfall wieder komplett auf Normalbetrieb schalten, inkl aktuellem Datum/Zeit Faktor.
Super! Ich danke dir vielmals. Habs noch nicht überprüft, aber werd mich heut Abend dran machen. Ich hab vor geraumer Zeit schon mit den Nachrichten gespielt, wusste aber keine Addressen und hab auch nie eine Antwort bekommen. Im PacketForge sieht man schon die ein oder andere vorbereitete Nachricht. Wie gesagt, bei der "UML read time" kam aber nie eine Antwort. Wo hast du die Adressen her?
Ich konnte nicht so lange warten, auch wenn meine Frau, die gerade den Garten aufräumt mich dafür hassen wird :) Ich bekomme bei keiner 0E (LonAPduGenericApplication) mit READ_STANDARD_VARIABLE Nachricht eine Antwort.
Ah, ich erinnere mich. Das ist der EBus. Aber irgendwie krieg ich beim UML C1 keine Antwort. Hat die überhaupt einen EBus? Aus meinen Notizen, als ich vor nem Jahr die Software etwas reverse engineered hab: APDU 0x0E -> EBUS command Service 0x06 Command 0x21 "ReadEbusVariable" TT SS CC LL (ML MH SL SH) TT = transaction sequence number, incrementing SS = service (0x06) CC = command (0x21) LL = payload length (0x04) ML = MainLow -> Main ID MH = MainHigh -> (extended ? 0x80 : 0x00) | SubID SL/SH = (type<<14) | (function<<9) | (entity<<4) | blockNumber Service 0x06 Command 0x22 "ReadEbusVariableValue" see 0x21 Service 0x06 Command 0x23 "WriteEbusVariable" see 0x21, just LL and number of payload bytes incremented by the variable width
:
Bearbeitet durch User
Ich hab mir die OperationalData.xml für die "UML +" angekuckt. Dort sieht man schön die EBus IDs https://github.com/g3gg0/LonScan/releases/tag/v0.4.2 Hab mal PacketForge etwas erweitert, so dass man die EBus IDs sehen kann.
:
Bearbeitet durch User
Hallo Georg, wenn ich bei mir über das Bedienfeld (InfoWin) Datum/Zeit ändere, werden genau die Pakete am LON gesendet, die ich oben gezeigt habe. Aber ich habe ein UML+. Ob das beim UML C1 auch so geht? Wie kannst du Datum/Zeit ändern, an der Anlage? Und was sieht man da am LON Bus? Über NV Variablen ist es mir auch nie gelungen, Datum/Zeit zu stellen. Nur zu lesen.
Das hab ich nicht angeschaut. Bei mir sind die Bedienteile mit einem extra bus zu ihren jeweiligen UML verbunden. Ist kein LON, sondern irgendein serial. UART, 4.8k, 9.7V, siehe screenshot. Wenn ich an einem Bedienteil die Zeit einstelle, hat das keine Auswirkungen auf das andere oder gar die NV des UML. Daher glaub ich nicht, dass da irgendwas raus geht.
:
Bearbeitet durch User
Hi Georg, ich habe Dein Programm noch nicht ganz durch gearbeitet, deshalb auf die Schnelle hier die Frage: Meinst Du, ich kann Dein Programm mit dem Controller aus dem Anhang verwenden? Er nutzt wohl FlowControl, Du schaltest die PINs selber, oder? Hintergrund: ich baue mir gerade ein zweites Set auf und habe diesen Controller geliefert bekommen, er macht aber erstmal nur TX an und das war es dann. Danke!
:
Bearbeitet durch User
Da ich weder IC-Beschriftungen noch einen Schaltplan sehe, kann ich gar nichts dazu sagen.
Ich habe es noch mal etwas besser versucht, man kann den Chip erkennen. Bei R13 kann man wohl eine Brücke setzen, um den 120 Ohm Widerstand zu aktivieren, ich weiß nicht, ob es den braucht. Einen Schaltplan habe ich nicht. Ich denke, es ist nicht die Frage, ob der Transceiver das kann, meine Frage war, ob Dein Programm auf dem ESP32 ins Nichts läuft, wenn der Transceiver das Senden und Empfangen automatisch macht/regelt. Ich bin leider nicht so weit mit diesem Thema und manche Frage mag komisch sein, aber ich habe unglaublich Lust, dabei was zu lernen und selber weiter zu kommen. Dazu brauche ich aber oft erst mal was “zum Anpacken”, um dann weiter machen zu können. Es steckt keine Faulheit meinerseits dahinter, bevor das falsch verstanden wird.
:
Bearbeitet durch User
Ich kanns dir jetzt gar nicht sagen, was genau passiert. Probiers einfach mal und dann kann ich dir vllt tips geben wie das debuggst :)
Zusätzlich passiert das, wenn man eine EBus Anfrage an die BBU sendet.
Ich habe nun meine Platine fertig gemacht, es bleibt bei dem alten Controller. Mit dem neuen FlowControl Device wollte ich die restlichen CRC Fehler ausmerzen, aber ich denke, es ist gut genug so. Konnte eine meiner Netzteil Platinen verwenden, um so direkt die 12V abzugreifen und das Ganze in ein Leergehäuse zu bauen, läuft jetzt prima. Leider komme ich nicht weiter, was Steuerung etc. angeht. Da muss ich mal sehen, wie ich da hinter komme, was noch möglich ist. Schön wäre wirklich, die Uhrzeit setzen zu können (da probiere ich gerade die Tips oben aus) und zB die Anforderung für Warmwasser triggern zu können. Mir fehlt noch immer das Verständnis, das zu übersetzen, was ich zB in Wireshark sehen kann. Die Windhager truncated Messages tauchen aber nur auf, wenn ich einen Nachricht sende, die im Tool von Georg unter EBus gespeichert ist. Dazu muss ich Sender und Empfänger anpassen, dann kommt was zurück.
Hallo, ich habe noch eine konkrete Frage, da wir diese Funktion oft benötigen: Ist es möglich, die (oder ähnliche) Funktion: "Jetzt Wasser erwärmen" zu steuern bzw. über den Bus anzutriggern? Wenn ja: wie finde ich die Funktion bzw. kann diese so mitschneiden, dass ich sie reproduzieren kann? Ich würde gerne den Befehl über iobroker senden, um nicht in den Keller zu müssen und dies per Hand zu erledigen. Falls es Hilfe gibt: bitte eine kurze Step-by-Step Anleitung, da ich so nicht weiterkomme und irgendwie auch nicht weiß, wo ich noch suchen soll. Vielen Dank, Ron
Hi, nächste Frage: kann man die EBus Anfragen / Auswertung auch Wireshark fähig machen? Hintergrund: wenn LON nur Variablen enthält muss ich ja versuchen die EBus Befehle mitzulesen um zB. den Befehl zur Wassererwärmung reproduzieren zu können. So stehe ich immer noch am Anfang mit den Befehlen. So schön die Erweiterung von Georg um EBus in dem LON Scanner auch ist, ich weiß nicht, ob ich damit weiter komme, ich brauche ja eigentlich erstmal den Befehl, der von der Steuerung gesendet wird, wenn man die Funktion am Bedienteil einschaltet... Danke, Ron
Hallo zusammen, nachdem ich nun mein Projekt erfolgreich abschliessen konnte, wollte ich mich noch einmal bedanken: Danke an Georg, für die tolle Inspiration und die Vorgaben. Danke an Peter, für die eingebrachten Tipps. Danke an meinen Kumpel, der mich wahrlich bei der Programmierung unterstützt hat. Leider habe ich hier keine Reaktionen mehr erhalten, vielleicht war ich auch zu fordernd, keine Ahnung. Jedenfalls habe ich: 1.) Den ESP Teil von Georg nachgebaut und erstmal damit getestet. 2.) Die Firmware der Paradigma MES in allen Teilen zerlegt. 3.) Den ESP in großen Teilen umprogrammiert. 4.) Den LON Bus so weit wie möglich zerlegt und analysiert. Was habe ich erreicht: 1.) Ich kenne nun alle Variablen der Paradigma MES Module 4,8,10,11 (BBU, Solar, 2x C1 UML) 2.) Ich weiß, wie ich den LON beeinflussen kann 3.) Ich kann alle mir wichtigen Funktion steuern oder einbringen, sowohl Alarm bei zu hoher Solar Temperatur, als auch die Warmwasser Ansteuerung, kann mit Timings umgehen und auch den LON aushebeln etc. 4.) Ich habe unglaublich viel gelernt und bin froh, nicht aufgegeben zu haben. Was ich noch nicht kann: 1.) Die Uhrzeit der Module -> das Thema macht micht irre... Aber ich werde mit ein wenig Pause dort weitermachen und mich noch dran setzen, es muss auch möglich sein, das zu beeinflussen... Viele Grüße, alles Gute, Danke, Ron
Servus, gute Arbeit, dann hast du ja das Beste draus gemacht. - Was gelernt - Dein Ziel erreicht - Es selbst erreicht! Naja zu den Fragen hat wohl keiner pauschale Antworten. Ich muss sagen, ich hab die letzten auch nicht wirklich gesehen :) Ich weiss leider auch noch nicht, wie ich meine Bedienteile ansprechen kann. EBus scheint es nicht zu sein. Jedenfalls reagiert da nichts drauf. Magst vllt deine Firmware auch irgendwo online stellen? So kann der nächste Paradigma-Nutzer vllt draus was machen. Gruß, Georg
Ist schon cool, dass ich jetzt am iPad über einen Button mit iobroker das Wasser erwärmen kann :-) Die Fragen waren hauptsächlich dazu gedacht, am Ende Aufwand und Zeit zu sparen, ich habe da echt viele Stunden dran gesessen. Ich kann gerne meine Erfahrungen zusammenfassen und dann Online stellen, aber dazu muss ich alles aufräumen und noch den letzten Teil fertig bekommen. Es macht einfach Spaß gerade… :-)
Martin schrieb: > Windhager Biowin 2 Hi Martin, Liebe BioWin 2 Touch -Nutzer, Mir war folgende Info lange Zeit nicht klar und hätte beinahe dazu geführt dass ich mir ein extra RC-7030 LON-Adapter besorge. Zumindest die BioWin 2 Touch hat hinter der Display-Einheit einen LAN-Buchse (Siehe Bild). Offensichtlich ist der RC-7030 schon integriert und muss nicht extra gekauft werden. BG Wil
Georg H. schrieb: > Ich hab mir mittlerweile einen Home Assistant eingerichtet und baue > langsam meine MQTT-Geräte so um, dass sie dem HA die config-messages > gleich mitschicken. > > So hab ich das jetzt auch bei MES-WiFi gemacht. Lieber Georg, Bei meiner BioWin2-Touch habe ich schon LAN-Zugriff auf den Webserver. Damit ist für mich MESWiFi nicht notwendig (obwohl es sehr cool ist!). Ist deine Integration in Home Assistant aber in irgendeiner Art kompatibel mit dem Zugriff über LAN? Zwei Projekte die sich mit dem Zugriff von HA auf die BioWin beschäftigen sind: - https://github.com/vermi0ffh/ha-windhager / https://community.home-assistant.io/t/windhager-integration/348369/11 - https://github.com/sessl3r/windhager/tree/master braucht noch eine separate VM für die Bereitstellung der Daten als über MQTT Wobei ich noch nicht beurteilen kann ob diese Integrationen stabiler, umfangreicher sind als deine. Aus meiner Sicht wäre natürlich eine Kompatibilität hinsichtlich einer aktuellen und breite Unterstützung/Wartung, Robustheit und Einfachheit wünschenswert. Ist aus deiner Sicht so etwas denkbar? Alternativ würde ich ansonsten erstmals auf https://github.com/vermi0ffh/ha-windhager setzen. BG Wil
Wil schrieb: > https://github.com/sessl3r/windhager/tree/master braucht noch eine > separate VM für die Bereitstellung der Daten als über MQTT > Wobei ich noch nicht beurteilen kann ob diese Integrationen stabiler, > umfangreicher sind als deine. Servus Wil, da bei mir die HA-Integration eher so ein "ich schick die Daten halt auf MQTT raus" ist, mit ein bisschen Zusatzinfo bzgl der Datenformate etc, glaub ich nicht, dass es Sinn macht, bei mir da was in der Richtung zu erweitern. Ich empfehle dir das von dir genannte Projekt zu nutzen. Das scheint dann wohl Explizit dafür gemacht und dadurch die bessere Wahl.
Hallo, hat schon jemand Erfahrung mit den neuen Infinity Plus Modulen von Windhager? Die Lon Schnittstelle wurde anscheinend durch Ethernet ersetzt. Ich bekomme die Tage das Update auf den Biowin2 und möchte das ganze dann auch in den HA einbinden. Bzw. suche immer noch nach einer sauberen Lösung um die Heizkreise in den Absenkbetrieb zu versetzen, wenn alle Ventile den FBH geschlossen sind und bei Anforderung wieder sauber die Mischer und Pumpen einzuschalten. Danke und Grüße
Hallo, ich habe hier ein ESP32-WROOM-32 Board, ein MAX485/RS485 Modul und ein Step Down Modul auf 5V. Kann ich damit das MES-WiFi von Georg nutzen? Kann mir da vllt. jemand bei der korrekten Pin-Belegung zwischen Board und dem MAX485/RS485 Modul helfen? Ich war da bis jetzt leider erfolglos. Der MES-WiFi Server auf dem ESP32 läuft immerhin :)
Ok, ich habe weiter oben folgende Pin-Belegung gefunden, aber leider kommt im Home Assistant nichts an. RO (RX) -> G35 RE/DE (TX_EN) -> G26 DI (TX) -> G25 Der ESP32 connected sich mit dem MQTT-Server, das sehe ich im Home Assistant-Log. Hat der MES-WiFi Server auch ein Log?
Georg H. schrieb: > Ich hab mir die OperationalData.xml für die "UML +" angekuckt. > Dort sieht man schön die EBus IDs > > https://github.com/g3gg0/LonScan/releases/tag/v0.4.2 > Hab mal PacketForge etwas erweitert, so dass man die EBus IDs sehen > kann. Hallo Georg, ich habe ein UML+ und würde gerne mehr über EBus Ids in Erfahrung welche entsprechend angesprochen werden können. Besteht die Möglichkeit das du mir die vollständige OperationalData.xml zu bekommen? VG Stefan
Hallo Leute, ich möchte auch gerne meine Windhager Heizung etwas modernisieren und Temperaturen online auslesen. Nur bin ich jetzt etwas überfordert bei den ganzen Beiträgen und Ansätzen, sodass ich gefühlt nicht mehr weiß wo vorne und hinten ist. Bei meiner Recherche ist mir folgendes Produkt aufgefallen. Könnte das evtl. helfen? https://www.waveshare.com/usb-to-rs485.htm
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.