Forum: PC-Programmierung LON Bus Windhager mitlesen/steuern


von Peter M. (peter2003)


Lesenswert?

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

von Rainer (Gast)


Lesenswert?

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?

von Rainer (Gast)


Lesenswert?

email ist:

rainer<punkt>mueller@gmx<punkt>at

von Peter M. (peter2003)


Lesenswert?

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.

von Peter M. (peter2003)


Angehängte Dateien:

Lesenswert?

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.

von Christian (Gast)


Lesenswert?

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.

von Peter M. (peter2003)


Lesenswert?

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.

von Jürgen R. (juergenle)


Lesenswert?

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.

von David M. (amd6409)


Lesenswert?

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!

von Peter M. (peter2003)


Lesenswert?

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

von Martin Rechberger (Gast)


Lesenswert?

Hallo Peter,

darf ich fragen wie du zu dem "Technikermodul" gekommen bist? Mir wurde 
gesagt, dass das nicht verkauft wird.

lg
Martin

von Peter M. (peter2003)


Lesenswert?

An Privatpersonen wird leider nicht geliefert.
Ich habe den Adapter über die Firma eines Bekannten bestellt.

von Jürgen V. (jrgen_v)


Lesenswert?

Woher kann ich die Service SW bekommen?
Modul mit rs232 Schnittstelle ist schon da :)

: Bearbeitet durch User
von Peter M. (peter2003)


Lesenswert?

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

von Dominic M. (Gast)


Lesenswert?

Hallo Peter,
könntest du mir eine Mail zukommen lassen, wo ich die Software finde.

Danke und Gruss Dominic

sgtdodo81@gmail.com

von Angel C. (Gast)


Lesenswert?

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!

von Gerhard E (Gast)


Angehängte Dateien:

Lesenswert?

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

von Peter M. (peter2003)


Lesenswert?

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

von Gerhard E (Gast)


Lesenswert?

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

von Horst V. (Gast)


Lesenswert?

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

von Peter M. (peter2003)


Lesenswert?

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

von Horst V. (hoschti)


Lesenswert?

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

von Peter M. (peter2003)


Lesenswert?

Sende mir deine Email per privater Nachricht, dann sende ich dir diverse 
PDF die ich über LON habe.

Peter

von Jochen S. (Gast)


Lesenswert?

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

von Peter M. (peter2003)


Lesenswert?

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
von Jochen S. (Gast)


Lesenswert?

Vielen Dank für die Infos.
Meine E-Mail Adresse lautet sierck@gmx.de (Sierck at gmx Punkt de)
Mit freundlichen Grüßen Jochen

von Stephan M. (thesimpsons)


Lesenswert?

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

von Stephan K. (stephan_kw)


Lesenswert?

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

von Peter M. (peter2003)


Lesenswert?

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
von Thomas (Gast)


Lesenswert?

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

von Peter M. (peter2003)


Lesenswert?

Hello Thomas, more details via direct email.

Peter

von MrMint (Gast)


Lesenswert?

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!

von Roman B. (rbrunka)


Lesenswert?

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

von Thomas Nilsson (Gast)


Lesenswert?

Aha, that was really interesting information. There is a LON to LAN 
converter, the RC3070. That needs to be further investigated!

Thanks!

von Karl Z. (griffin27)


Lesenswert?

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

von Roman B. (rbrunka)


Lesenswert?

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

von Karl Z. (griffin27)


Lesenswert?

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

von Christian (Gast)


Lesenswert?

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

von Roman B. (rbrunka)


Lesenswert?

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

von Roman B. (rbrunka)


Lesenswert?

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

von Karl (Gast)


Lesenswert?

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...

von Christian (Gast)


Lesenswert?

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

von Rainer Müller (Gast)


Lesenswert?

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.

von Karl Z. (griffin27)


Lesenswert?

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.

von pkuli6kg (Gast)


Lesenswert?

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);

von Thomas (Gast)


Lesenswert?

Hallo Peter

Sehr interessant!

How do you connect to the LON bus, physically?

Thanks, Thomas

von Thomas (Gast)


Lesenswert?

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

von Karl (Gast)


Lesenswert?

Great, Thomas. Please keep us up to date!

von Peter (Gast)


Lesenswert?

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

von pkuli6kg_KNXUF (Gast)


Lesenswert?

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);
}

?>

von zuhu (Gast)


Lesenswert?

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

von pkuli6g (Gast)


Lesenswert?

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

von pkuli6g (Gast)


Lesenswert?

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);

von Daniel_s (Gast)


Lesenswert?

Hi,

ich hab einen Windhager Kessel und ein MES modul. Gibts irgentwo noch 
die Service software?

von Peter M. (peter2003)


Lesenswert?

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.

von Daniel_S (Gast)


Lesenswert?

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.

von Peter M. (peter2003)


Lesenswert?

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).

von Daniel_S (Gast)


Lesenswert?

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...

von Martin (Gast)


Lesenswert?

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!?

von Peter M. (peter2003)


Angehängte Dateien:

Lesenswert?

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

von Rudolf S. (rudolf_s766)


Lesenswert?

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

von Peter M. (peter2003)


Lesenswert?

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

von Rudolf S. (rudolf_s766)


Lesenswert?

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

von Gerald (Gast)


Lesenswert?

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

von Georg (Gast)


Lesenswert?

Hallo Daniel
Hast du diese Schnittstelle noch? Kann ich sie dir abkaufen? Bitte um 
Antwort.
Lg

von Felix (Gast)


Lesenswert?

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

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

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

von Helmut (Gast)


Angehängte Dateien:

Lesenswert?

Hab folgendes bei meiner Bedienungsanleitung gefunden. Wers braucht... 
Parameter & Werte
LG Helmut

von Michael (Gast)


Lesenswert?

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

von Michael S. (michael_68)


Lesenswert?

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

von Robert (Gast)


Lesenswert?

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

von Rene S. (Gast)


Lesenswert?

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é

von Fritz R. (friro_63)


Lesenswert?

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....

von Marc (Gast)


Lesenswert?

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

von Peter M. (peter2003)


Lesenswert?

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

von Marc (Gast)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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

von Marc (Gast)


Lesenswert?

@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

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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

von Marc (Gast)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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

von Marc (Gast)


Lesenswert?

Klasse, danke!
Werde mich damit befassen, wird aber wohl noch ein paar Wochen dauern 
:-(

Marc

von Horst V. (hoschti)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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

von Michael L. (michaelleitner)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

TPS2113APWR is available here ;)

But only 67 left, you better hurry up ;)

https://www.arrow.com/en/products/tps2113apwr/texas-instruments

von Thomas (Gast)


Lesenswert?

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.

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Here's my very simple setup, see attached photo.

von Georg H. (g3gg0)


Lesenswert?

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
von Georg H. (g3gg0)


Lesenswert?

> https://github.com/g3gg0/LonDissector

I added the wireshark dissector here.

von Thomas (Gast)


Lesenswert?

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 :)

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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)

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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

von Michael L. (michaelleitner)


Lesenswert?

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

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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;

von Georg H. (g3gg0)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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)

von Georg H. (g3gg0)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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).

von Thomas (Gast)


Lesenswert?

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 :)

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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
von Thomas (Gast)



Lesenswert?

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 :)

von Georg H. (g3gg0)


Lesenswert?

ok update the dissector, it will show the payload now (hopefully)

von Thomas (Gast)


Lesenswert?

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.

von Michael L. (michaelleitner)


Angehängte Dateien:

Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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
von Michael L. (michaelleitner)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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.

von Thomas (Gast)



Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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?

von Thomas (Gast)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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.

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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.

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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 (?)

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

> 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.

von Georg H. (g3gg0)


Lesenswert?

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 ;)

von Georg H. (g3gg0)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

Great, thanks!

But how did you read this list?

von Georg H. (g3gg0)


Lesenswert?

See the chapter 11.7.8.
Instead of query nv by index, i query nv cfg with command 8

von Georg H. (g3gg0)


Lesenswert?

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
von Thomas (Gast)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

Or do they refer to the SNVT Master list?

von Georg H. (g3gg0)


Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

Hi

Which service tool is this?
Is there an .XIF file for the Biowin? Could you please make it available 
to me?
Thanks!

von Georg H. (g3gg0)


Lesenswert?

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
von Georg H. (g3gg0)


Lesenswert?

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
von Michael L. (michaelleitner)


Angehängte Dateien:

Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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
von Georg H. (g3gg0)


Lesenswert?

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
von Michael L. (michaelleitner)


Lesenswert?

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
von Thomas (Gast)


Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

Ah, Georg, Thanks. Yes, finally I found it too ;

I posted the NPDU, not the PPDU, that's why the 01 was missing ;)

von Georg H. (g3gg0)


Lesenswert?

Ah right, you wrote NPDU. Did oversee that.

von Michael L. (michaelleitner)


Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

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
von Georg H. (g3gg0)


Lesenswert?

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
von Thomas (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

The selector values from the extraction, that is.

von Georg H. (g3gg0)


Lesenswert?

You can read that with the tool, too.

von Georg H. (g3gg0)


Lesenswert?

Bugfix um bei gleichzeitiger Nutzung mehrere Fehnster einen deadlock zu 
verhindern:
https://github.com/g3gg0/LonScan/releases/tag/v0.3.1

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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
von Michael L. (michaelleitner)


Angehängte Dateien:

Lesenswert?

Bei mir liefert die Versionsabfrage (egal ob über dein Tool oder 
manuell) leider immer einen Bit Phase error.

lg Michael

von Georg H. (g3gg0)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

How can I get the NV - Selector mapping read out with the tool? I have 
not found how to do that?

von Georg H. (g3gg0)


Lesenswert?

Download the latest version and select your device.
See my screenshot above - it shows all the fields on the right side.

von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Michael L. (michaelleitner)


Lesenswert?

> 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

von Thomas (Gast)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

Michael, you can check with Aisler, for european made PCB's. I usually 
use them, works great.

von Michael L. (michaelleitner)


Lesenswert?

Thank you Thomas,

I'll check that!

BR Michael

von Thomas (Gast)


Lesenswert?

Ran it one more time now, this time there was no bitphase error, but 
Lonscan still doesn't report anything.

von Georg H. (g3gg0)


Lesenswert?

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
von Georg H. (g3gg0)


Lesenswert?

> 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.

von Thomas (Gast)


Lesenswert?

Here's what happens when I try to use it, 0.3.3

https://youtu.be/gq__Ym3DAQA

von Georg H. (g3gg0)


Lesenswert?

Can you set the timeout to 3000?

von Thomas (Gast)


Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

> 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?

von Georg H. (g3gg0)


Lesenswert?

> 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

von Thomas (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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!

von Georg H. (g3gg0)


Lesenswert?

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
von Georg H. (g3gg0)


Lesenswert?

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.

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

> 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 :)

von Georg H. (g3gg0)


Lesenswert?

Well the software is not free to get. It requires a license key etc.

von Thomas (Gast)


Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

Well, i don't know how to get it :)
Which device do you have exactly?

von Thomas (Gast)


Lesenswert?

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 :)

von Georg H. (g3gg0)


Lesenswert?

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

von Michael L. (michaelleitner)


Lesenswert?

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

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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

von Michael L. (michaelleitner)


Angehängte Dateien:

Lesenswert?

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

von Michael L. (michaelleitner)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

Danke dir!

habs behoben :)

von Michael L. (michaelleitner)


Lesenswert?

Na das war prompt :)
Ich danke dir!

lg Michael

von Thomas (Gast)


Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

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.

von Michael L. (michaelleitner)


Lesenswert?

Ja bitte, das wäre voll nett! Soll ich dir meine E-Mail-Adresse per PN 
senden?

Danke und lg
Michael

von nilpferdJK (Gast)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

Bestückte hab ich leider keine rumliegen.
Nur ein paar leere PCBs.

Wieviel Bedarf besteht denn?

von nilpferdJK (Gast)


Lesenswert?

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

von nilpferdJK (Gast)


Lesenswert?

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);

....

von Michael L. (michaelleitner)



Lesenswert?

Hallo,

ich habe einige Libraries zusätzlich benötigt - ich denke u.a. die im 
Screenshot.

lg Michael

von Johannes K. (nilpferdjk)


Angehängte Dateien:

Lesenswert?

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

von Michael L. (michaelleitner)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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

von Michael L. (michaelleitner)


Lesenswert?

> 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.

von Johannes K. (nilpferdjk)


Lesenswert?

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?

von Georg H. (g3gg0)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

I seem to recall you need to install the FastLED library.

von Johannes K. (nilpferdjk)


Lesenswert?

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"?

von Georg H. (g3gg0)


Lesenswert?

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 :)

von Thomas (Gast)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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
von Johannes K. (nilpferdjk)


Angehängte Dateien:

Lesenswert?

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?

von Georg H. (g3gg0)


Lesenswert?

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

von Johannes K. (nilpferdjk)


Lesenswert?

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
von Thomas (Gast)


Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

Uhm, that is possible, but not necessary.

: Bearbeitet durch User
von Georg H. (g3gg0)


Lesenswert?

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.

von Johannes K. (nilpferdjk)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

Ah, I see now the info I asked for is already there ;)

von Thomas (Gast)


Lesenswert?

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?

von Johannes K. (nilpferdjk)


Lesenswert?

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
von Thomas (Gast)


Lesenswert?

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

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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
von Michael L. (michaelleitner)


Lesenswert?

Magst vielleicht ein, zwei Fotos vom Breadboard reinstellen? Vielleicht 
hilft das.

lg Michael

von Johannes K. (nilpferdjk)


Angehängte Dateien:

Lesenswert?

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

von Johannes K. (nilpferdjk)


Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

> 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?

von Johannes K. (nilpferdjk)


Lesenswert?

Masse gegen LON+
Masse gegen LON-

Oder
LON- gegen LON+ ??

von Georg H. (g3gg0)


Lesenswert?

Johannes K. schrieb:
> Masse gegen LON+
Ja

> Masse gegen LON-
Ja

> LON- gegen LON+ ??
Ja

 ;)

von Johannes K. (nilpferdjk)


Lesenswert?

Masse gegen LON+  --> 2,27V
Masse gegen LON-  --> 2,27V
LON- gegen LON+   --> 0V

von Georg H. (g3gg0)


Lesenswert?

Wenn sich da auf den Leitungen nichts ändert, (AC mode, LON+ <-> LON-) 
würde ich skeptisch werden.

von Johannes K. (nilpferdjk)


Lesenswert?

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...

von Georg H. (g3gg0)


Lesenswert?

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?

von Johannes K. (nilpferdjk)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

Bin kein Messgeräte-Profi, aber ich hätte mal gesagt, dass das von der 
Bandbreite ausreichend ist.

von Thomas (Gast)


Lesenswert?

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.

von Thomas (Gast)


Lesenswert?

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!

von Georg H. (g3gg0)


Lesenswert?

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

von Johannes K. (nilpferdjk)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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.

von Johannes K. (nilpferdjk)


Angehängte Dateien:

Lesenswert?

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
von Johannes K. (nilpferdjk)


Lesenswert?

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

von Michael L. (michaelleitner)


Lesenswert?

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

von Johannes K. (nilpferdjk)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

Aber dafür hast du jetzt ein Oszi ;D

von Johannes K. (nilpferdjk)


Lesenswert?

ich hab schon länger einen Grund für den Kauf eines Oszis gesucht ;-)

von Georg H. (g3gg0)


Lesenswert?

Ah ich sehe WVF hat fehlerhafte Header-Daten...

von Johannes K. (nilpferdjk)


Lesenswert?

heißt?

auch würde mich interessieren, wie ich zusätzliche Datenfelder aus dem 
LON-Scanner auf mein MQTT bekomme. Steht das irgendwo?

von Georg H. (g3gg0)


Lesenswert?

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.

von Michael L. (michaelleitner)


Lesenswert?

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

von Johannes K. (nilpferdjk)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

Wie sieht euer "Scan" aus? Der zweite Button.

von Johannes K. (nilpferdjk)


Angehängte Dateien:

Lesenswert?

siehe Anhang.
Kann es sein, dass die 70 dieses Raumbediengerät ist, das bei mir im 
Wohnzimmer hängt?

von Georg H. (g3gg0)


Lesenswert?

nutz bitte mal die aktuelle software ;)

von Johannes K. (nilpferdjk)


Lesenswert?

aktuelle Software? Link?

von Georg H. (g3gg0)


Lesenswert?


von Johannes K. (nilpferdjk)


Angehängte Dateien:

Lesenswert?

dann siehts so aus ;-)

von Georg H. (g3gg0)


Lesenswert?

Ok ändert nix. Schad.
Dann hab ich die genaue version nicht als info-file.

Falls jemand alte XIF files hat, gerne melden.

von Michael L. (michaelleitner)


Angehängte Dateien:

Lesenswert?

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 :)

von Michael L. (michaelleitner)


Angehängte Dateien:

Lesenswert?

> 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.

von Thomas (Gast)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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
von Lucas (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

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
von Lucas F. (lucas_f)



Lesenswert?

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?

von Georg H. (g3gg0)


Lesenswert?

Ja, musst auf 192.168.0.255 anpassen.
kommt dann was?

von Lucas F. (lucas_f)


Lesenswert?

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
von Georg H. (g3gg0)


Lesenswert?

hm.
Eigentlich sollte es mit den Broadcast-Adressen gehen.

Was sagt das oszi am transceiver?
Spannungsverlauf A, Spannungsverlauf B, RO ?

von Claus L. (claus_l)


Lesenswert?

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

von Dauriata (zoulou)


Angehängte Dateien:

Lesenswert?

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

von Dauriata (zoulou)


Lesenswert?

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.

von Dauriata (zoulou)


Lesenswert?

Found out that it works for a value of bits_overlap of 1 or 2 but not 
above. Last commit set it to 3.

von Georg H. (g3gg0)


Lesenswert?

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
von Claus L. (claus_l)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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.

von Dauriata (zoulou)


Lesenswert?

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
von Christian R. (leram)



Lesenswert?

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
von Georg H. (g3gg0)


Lesenswert?

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

von Christian R. (leram)



Lesenswert?

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
von Georg H. (g3gg0)


Lesenswert?

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

von Christian R. (leram)


Lesenswert?

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!

von Christian R. (leram)


Angehängte Dateien:

Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

Is this A-to-B on the LON bus?
Are you using the latest git revision?

von Christian R. (leram)


Lesenswert?

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
von Georg H. (g3gg0)


Lesenswert?

Christian R. schrieb:
> Did I miss anything?

cough no...

fetch the latest version from git now and try again... :)

von Christian R. (leram)


Lesenswert?

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??

von Georg H. (g3gg0)


Lesenswert?

No, I just forgot to push the last change I made :D
This change was 2 weeks ago.

von Christian R. (leram)


Lesenswert?

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!! 
:)

von Georg H. (g3gg0)


Lesenswert?

Great to hear that it works :)
If you have contributions, feel free to send pull requests.

von Thomas N. (thomasx)


Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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 :)

von Holger (Gast)


Lesenswert?

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

von Sheldon C. (081569)


Lesenswert?

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!

von Georg H. (g3gg0)



Lesenswert?

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

von Georg H. (g3gg0)



Lesenswert?

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.

von Markus (amonmax)


Lesenswert?

Hallo Georg wie hast du die ganze Programmierung auf den ESP32 geflasht 
bzw. Finde ich diese?

von Georg H. (g3gg0)


Lesenswert?

Servus.

Die findest du hier:
  https://github.com/g3gg0/MESWiFi
Ich nutze Visual Studio Code mit dem PlatformIO addon.

Gruß,
Georg

von Ron S. (ron2875)


Lesenswert?

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.

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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.,

von Georg H. (g3gg0)


Lesenswert?

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

von Ron S. (ron2875)


Lesenswert?

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

von Ron S. (ron2875)


Lesenswert?

Komisch, bei iPhone Nutzung fehlt die Formatierung des Textes, sorry.

von Georg H. (g3gg0)


Lesenswert?

hab noch einen crash reporter eingebaut, der das vllt etwas einfacher 
macht
https://github.com/g3gg0/LonScan/releases/tag/v0.4.1

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

> 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
von Ron S. (ron2875)


Lesenswert?

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 :-)

von Georg H. (g3gg0)


Lesenswert?

Wenn du einen Scan machst, solltest du alle Geräte auf dem Bus finden.

von Ron S. (ron2875)


Angehängte Dateien:

Lesenswert?

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 :-)

von Georg H. (g3gg0)


Lesenswert?

Du hst die IP-Adresse des ESP32 im .cfg angegeben?
Die IP ist auch von deinem Rechner auch erreichbar?
cmd.exe -> ping <IP>

von Ron S. (ron2875)



Lesenswert?

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...

von Georg H. (g3gg0)


Lesenswert?

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";

von Ron S. (ron2875)


Lesenswert?

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".

von Georg H. (g3gg0)


Lesenswert?

Ron S. schrieb:
> Ich denke schon, dafür muss ich nur neu compilieren, oder?

korrekt.
einfach source abändern und flashen

von Ron S. (ron2875)


Lesenswert?

Bin dran...

von Ron S. (ron2875)


Angehängte Dateien:

Lesenswert?

Jetzt geht Wireshark und Dein Tool auch ;-)

Nun, da bin ich ein Stück weiter...

Was mache ich jetzt damit?

von Georg H. (g3gg0)


Lesenswert?

Kucken ob der Rest des Tools geht ;)

von Ron S. (ron2875)


Angehängte Dateien:

Lesenswert?

Ich finde, dass sieht brauchbar aus, die Firmware ist steinalt :-)

Aber wie bekomme ich diese Daten am Ende vom ESP32 in meinen MQTT 
Stream?

von Georg H. (g3gg0)


Lesenswert?

...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
von Ron S. (ron2875)


Lesenswert?

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 :-)

von Georg H. (g3gg0)


Lesenswert?

> 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

von Ron S. (ron2875)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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.

von Ron S. (ron2875)


Lesenswert?

Super,
gilt das auch für das Wifi?
Kann man die Parameter mit übergeben, damit man direkt wieder online ist 
mit dem ESP32?

von Georg H. (g3gg0)


Lesenswert?

Was meinst du mit wifi?
Wenn einmal konfiguriert, werden die setings im SPIFFS gespeichert und 
bleiben über Firmware updates hinweg bestehen.

von Ron S. (ron2875)


Lesenswert?

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.

von Ron S. (ron2875)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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.

von Ron S. (ron2875)


Angehängte Dateien:

Lesenswert?

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…

von Georg H. (g3gg0)


Lesenswert?

Magst du im .cfg einen eigenen Eintrag anlegen und deine Erkenntnisse 
dort einpflegen?

von Ron S. (ron2875)


Lesenswert?

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.

von Ron S. (ron2875)


Lesenswert?

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...

von Georg H. (g3gg0)


Lesenswert?

bei dem UML stehen datum/uhrzeit nicht in den NVs :(

von Ron S. (ron2875)


Lesenswert?

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…

von Georg H. (g3gg0)


Lesenswert?

Alle Module haben eine Zeit-NV - aber das Bedieninterface des UML hat 
wohl eine eigene Uhr.

von Ron S. (ron2875)


Angehängte Dateien:

Lesenswert?

Ich habe nur die Geräte selber, kein Bedienteil.
Oder verstehe ich Dich nicht?
Siehe Anhang, Beispiel, dort soll die Zeit gesetzt werden.

von Georg H. (g3gg0)


Lesenswert?

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.

von Ron S. (ron2875)


Lesenswert?

Und in meinem Fall sollte das aber gehen?

von Georg H. (g3gg0)


Lesenswert?

Das weiss ich nicht. Probieren :)

von Peter M. (peter2003)


Lesenswert?

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

von Ron S. (ron2875)


Lesenswert?

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

von Ron S. (ron2875)


Lesenswert?

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.

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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?

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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.

von Georg H. (g3gg0)


Lesenswert?

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
von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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
von Peter M. (peter2003)


Lesenswert?

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.

von Georg H. (g3gg0)


Angehängte Dateien:

Lesenswert?

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
von Ron S. (ron2875)


Angehängte Dateien:

Lesenswert?

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
von Georg H. (g3gg0)


Lesenswert?

Da ich weder IC-Beschriftungen noch einen Schaltplan sehe, kann ich gar 
nichts dazu sagen.

von Ron S. (ron2875)


Angehängte Dateien:

Lesenswert?

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
von Georg H. (g3gg0)


Lesenswert?

Ich kanns dir jetzt gar nicht sagen, was genau passiert.
Probiers einfach mal und dann kann ich dir vllt tips geben wie das 
debuggst :)

von Ron S. (ron2875)


Angehängte Dateien:

Lesenswert?

Ist das im Anhang eine Antwort auf die EBus Abfrage?

von Ron S. (ron2875)


Angehängte Dateien:

Lesenswert?

Zusätzlich passiert das, wenn man eine EBus Anfrage an die BBU sendet.

von Ron S. (ron2875)


Angehängte Dateien:

Lesenswert?

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.

von Ron S. (ron2875)


Lesenswert?

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

von Ron S. (ron2875)


Lesenswert?

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

von Ron S. (ron2875)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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

von Ron S. (ron2875)


Lesenswert?

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… :-)

von Wil (howil)


Angehängte Dateien:

Lesenswert?

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

von Wil (howil)


Lesenswert?

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

von Georg H. (g3gg0)


Lesenswert?

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.

von Simon N. (jahusi)


Lesenswert?

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

von Jens S. (jks1981)


Angehängte Dateien:

Lesenswert?

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 :)

von Jens S. (jks1981)


Lesenswert?

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?

von Stefan M. (gremlin2000)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.