NEWS
[gelöst] Hargassner HV40 Daten über telnet abgreifen
-
@Hogy Sieht so aus
Wirst aber "enttäuscht" sein wenn du siehst wie wenig Programmcode das tatsächlich ist.
Zuerst ioBroker:
- Simple-RESTful-Adapter installieren (keine Einstellungen notwendig)
- neues Javascript "Typ Javascript" anlegen, Name und Ordner beliebig
Dort mittels C&P einfügen:
//Datenobjekte Hargassner anlegen let DP="javascript.0.HV40.value" let ANZ=228 for(let i=0; i<ANZ; i++) { createState(DP+("00" + i).slice(-3),"",{name: "Value "+("00" + i).slice(-3), type: "number", role: "state"}); }
GGf. #2 anpassen, "javascript.x" muss, HV40 wäre der Ordner, value dann der Datenpunkt (siehe meine Hardcopy oben)
Speichern und starten (dauert bei mir 2-3 Sekunden; auf dem PI ev. länger). Wenn dann in den Objekten unter "HV40" der letzte Eintrag "value227" ist, kannst du das Script wieder stoppen.PI:
Ich gehe mal von /home/pi aus.
Per Terminal auf den PI, dann- cd /home/pi
- nano hv40.sh (oder wie du es nennen magst)
- per C&P einfügen
#!/bin/bash DP=javascript.0.HV40.value IPP=192.168.1.3:8087 declare -a MESSWERTE DATA=$(timeout 3 bash -c "nc -v xxx.xxx.xxx.xxx yy") MESSWERTE=($(echo $DATA|cut -d"p" -f2|cut -c2-)) ANZAHL=${#MESSWERTE[@]} #echo Anzahl Datensätze: ${ANZAHL} #echo ${MESSWERTE[*]} for ((i=0; i<${ANZAHL}-1; i++)) do NUM=$(printf "%03d" $i) IOB="${IOB}${DP}${NUM}=${MESSWERTE[$i]}&" done IOB="${IOB}prettyPrint" #echo $IOB curl --data "$IOB" http://${IPP}/setBulk
#3 ggf. anpassen, identisch mit Einstellungen im Javascript
#4 IP und Port des ioBroker (8087 ist der Standard-Port des RESTful-Adapters)
#8 xxx=IP der Heizung / yy=Port der HeizungSpeichern und mittels
sudo chmod +x hv40.sh
ausführbar machen.
Dann mal testen:./hv40.sh
ca. 3 Sekunden später sollten die Messwerte im ioB verfügbar sein...Wenn alles geklappt hat noch einen cronjob anlegen:
sudo crontab -e
z.B. für ein 5-Minutenintervall:*/5 * * * * /home/pi/hv40.sh
Letzte Zeile muss immer eine Leerzeile sein!
-
@SBorg
Um so kürzer, um so begeisteter bin ichAllerdings hab ich scheinbar beim Simpel RESTful API Adapter (V. 2.3.2) schon Probleme.
-
Bzw. Installiert und aktiv ist er.
-
Script ist 1:1 so übernommen
-
Nach Ausführen bekomme ich im LOG diesen Fehler
Ergebnis ist, dass keine Datenpunkte erstellt wurden.
Kann es sein, dass ich hier (Simpel RESTful API Adapter) noch was einstellen muss?
Ansonsten... vielen Dank für die super konkrete und ausführliche Anleitung! Keine Wünsche offen.
-
-
@Hogy Ich vermute zwei Dinge:
- zum einen hast du im ioBroker keinen Längen- und Breitengrad eingetragen ("Schraubenschlüssel" links oben)
- tritt das auch nur deswegen auf, weil du das JS in "global" hast. Es müsste eigentlich unter "common" (dort kannst du dann Ordner anlegen wie du willst + da dürfte ihm dein Wohnort egal sein, zumindest braucht das JS es nicht)
-
@SBorg
DANKE! Der zweite Punkt wars. Jetzt läuft/lief es und die Datenpunkte sind erstellt.Mein Fall ist somit gelöst.
Daten sind da und der schedule läuft.
SUPER schnelle Sache!Ich poste das Ergebnis, sobald ich die notwendigen Werte im Vis dargestellt habe.
-
@All
so schaut bei mir das Ergebnis auf meinem S8 Handy aus. Rot umrahmt die Daten, die von der Heizung geliefert werden.
Die Werte sind zudem bewertet. Heißt...
Weiße Schrift: Aktueller Wert und sinnig
Graue Schrift: Aktueller Wert nicht sinnig (Weil z.B. der Brenn gerade nicht arbeitet)
Grüne Schrift: Aktueller Wert, alles in Ordnung
Gelbe Schrift: Aktueller Wert, hier könnte/sollte was unternommen werden
Rote Schrift: Aktueller Wert, hier muss eine Aktion erfolgen (Z.B. Holz nachlegen weil Brauchwassertemp. unter definierter Grenze)
Evtl. kann/möchte das jemand adaptieren.
-
Sehr geil, werde ich mal im Auge behalten. Wenn mein Heizungsbauer aus dem Urlaub zurück und wieder einsatzfähig ist werde ich auch mein Wlan Modul für meine Harrgassner Heizung bestellen. Mal sehen ob da auch sowas in der Richtung geht...
-
Bei unserem HV40 ist ein LAN Anschluss mit dabei.
Die Daten für die Anzeige saug ich mir alle 20 Sekunden.
Alle Minute schreibe ich einen Datensatz in die Historie und lass mir diese über VIS darstellen.
-
Hi, da bin ich interessiert. Wie habt Ihr die Zuordnung der Werte aus demDatenstrom zu echten Werten gemacht? Also woher wisst Ihr welches Byte was bedeuted? Gibt es da eine Übersicht?
Grüße
jpgorganizer -
@jpgorganizer Ich weiß nicht ob @Hogy hier noch mit liest, aber er wird wohl die Werte verglichen haben lt. Anzeige der Heizung. Von mir stammt nur das reine Skript ohne jegliche Zuordnung.
-
@SBorg hast Recht. Ich habe die Werte, mit den Werten auf der Heizung verglichen.
@jpgorganizer Solltest eine Liste brauchen, das was ich ermittelt habe, stell ich gerne zur Verfügung. -
@Hogy
au das wär toll.@SBorg
du hast das script gemacht. Warum als script und keinen Adapter dafür? gab es Gründe?Ich würde mir beides Liste + Script in den nächsten Tagen mal anschauen und wenn ich damit zurecht komme und es mit meiner Heizung grundsätzlich mal funktioniert, dann würde ich mich ggfs. hinsetzen und einen Adapter schreiben.
Darf ich dann eure Grundlage verwenden?Mal sehen ... vmtl. bekomme ich dann zwar Ärger mit meiner Frau, weil ich nicht mehr vom PC wegkomme. Aber irgendwas muss man ja gerade tun.
VG jpgorganizer
-
@jpgorganizer sagte in Hargassner HV40 Daten über telnet abgreifen:
du hast das script gemacht. Warum als script und keinen Adapter dafür? gab es Gründe?
Ja
Man braucht nicht immer für alles und jedes einen Adapter. Mein Motto: Keep it lean, clean and simple
Als Adapter schleppt man gleich einen irrsinnigen Overhead mit sich rum. Als Skript benötigt es kaum Speicher und CPU-Ressourcen und überlebt so ziemlich jedwedes Update. Inkompatibilitäten wegen eines JS-, Node...-Updates gibt es da nicht.Da es keine Atomwissenschaft ist, kannst du daraus auch selbstverständlich einen Adapter basteln. Schließlich grenze ich damit die Windows-User aus, auch wenn sich noch keiner beschwert hat
-
@jpgorganizer
hier die Objekte mit der Beschreibung, wofür ich sie halte."name": "HV40 Wassertemperatur", "name": "Value 000", "name": "Abgase Ist", "name": "Value 001", "name": "O² Ist", "name": "Value 002", "name": "Puffer Oben", "name": "Value 003", "name": "Puffer Mitte", "name": "Value 004", "name": "Puffer Unten", "name": "Value 005", "name": "Außentemperatur", "name": "Value 006", "name": "Heizung Vorlauf Ist", "name": "Value 007", "name": "Value 008", "name": "Value 008", "name": "Value 009", "name": "Value 009", "name": "Value 010", "name": "Value 010", "name": "Brauchwasser", "name": "Value 011", "name": "Heizung Vorlauf Soll", "name": "Value 012", "name": "Value 013", "name": "Value 013", "name": "Value 014 ?", "name": "Value 014", "name": "Value 015", "name": "Value 015", "name": "Primärluft Soll", "name": "Value 016", "name": "Primärluft Ist", "name": "Value 017", "name": "Sekundärluft Soll", "name": "Value 018", "name": "Sekundärluft Ist", "name": "Value 019", "name": "Saugzug Ist", "name": "Value 020", "name": "Value 021", "name": "Value 021", "name": "Status", "name": "Value 022", "name": "O² Soll", "name": "Value 023", "name": "Lambdasonde ?", "name": "Value 024", "name": "Value 025", "name": "Value 025", "name": "Saugzug Soll", "name": "Value 026", "name": "Value 027", "name": "Value 027", "name": "Value 028", "name": "Value 028", "name": "Value 029", "name": "Value 029", "name": "Value 030", "name": "Value 030", "name": "Value 031", "name": "Value 031", "name": "Value 032", "name": "Value 032", "name": "Value 033", "name": "Value 033", "name": "Value 034", "name": "Value 034", "name": "Value 035", "name": "Value 035", "name": "Value 036", "name": "Value 036", "name": "Value 037", "name": "Value 037", "name": "Value 038", "name": "Value 038", "name": "Value 039", "name": "Value 039", "name": "Value 040", "name": "Value 040", "name": "Value 041", "name": "Value 041", "name": "Value 042", "name": "Value 042", "name": "Value 043", "name": "Value 043", "name": "Value 044", "name": "Value 044", "name": "Value 045", "name": "Value 045", "name": "Leistung", "name": "Value 046", "name": "Heizungselektronik", "name": "Value 047", "name": "Boiler Vorlauf Ist", "name": "Value 048", "name": "Puffer Füllgrad", "name": "Value 049", "name": "Value 050", "name": "Value 050", "name": "Value 051", "name": "Value 051", "name": "Value 052", "name": "Value 052", "name": "Value 053", "name": "Value 053", "name": "Value 054", "name": "Value 054", "name": "Value 055", "name": "Value 055", "name": "Value 056", "name": "Value 056", "name": "Ölheizung", "name": "Value 057", "name": "Boiler Vorlauf Soll", "name": "Value 058", "name": "Außentemperatur gemittelt", "name": "Value 059", "name": "Value 060", "name": "Value 060", "name": "Value 061", "name": "Value 061", "name": "Value 062", "name": "Value 062", "name": "Value 063", "name": "Value 063", "name": "Value 064", "name": "Value 064", "name": "Value 065", "name": "Value 065", "name": "Value 066", "name": "Value 066", "name": "Value 067", "name": "Value 067", "name": "Value 068", "name": "Value 068", "name": "Value 069", "name": "Value 069", "name": "Value 070", "name": "Value 070", "name": "Value 071", "name": "Value 071", "name": "Value 072", "name": "Value 072", "name": "Value 073", "name": "Value 073", "name": "Value 074", "name": "Value 074", "name": "Value 075", "name": "Value 075", "name": "Value 076", "name": "Value 076", "name": "Value 077", "name": "Value 077", "name": "Value 078", "name": "Value 078", "name": "Value 079", "name": "Value 079", "name": "Value 080", "name": "Value 080", "name": "Value 081", "name": "Value 081", "name": "Value 082", "name": "Value 082", "name": "Value 083", "name": "Value 083", "name": "Value 084", "name": "Value 084", "name": "Value 085", "name": "Value 085", "name": "Value 086", "name": "Value 086", "name": "Value 087 ?", "name": "Value 087", "name": "Value 088 ?", "name": "Value 088", "name": "Value 089", "name": "Value 089", "name": "Value 090", "name": "Value 090", "name": "Value 091", "name": "Value 091", "name": "Value 092 ?", "name": "Value 092", "name": "Value 093", "name": "Value 093", "name": "Value 094 ?", "name": "Value 094", "name": "Value 095", "name": "Value 095", "name": "Value 096", "name": "Value 096", "name": "Value 097", "name": "Value 097", "name": "Value 098", "name": "Value 098", "name": "Value 099", "name": "Value 099", "name": "Value 100", "name": "Value 100", "name": "Value 101", "name": "Value 101", "name": "Value 102", "name": "Value 102", "name": "Value 103", "name": "Value 103", "name": "Value 104", "name": "Value 104", "name": "Value 105", "name": "Value 105", "name": "Value 106", "name": "Value 106", "name": "Value 107", "name": "Value 107", "name": "Value 108", "name": "Value 108", "name": "Value 109", "name": "Value 109", "name": "Value 110", "name": "Value 110", "name": "Value 111", "name": "Value 111", "name": "Value 112", "name": "Value 112", "name": "Value 113", "name": "Value 113", "name": "Value114 ?", "name": "Value 114", "name": "Value115 ?", "name": "Value 115", "name": "Value 116", "name": "Value 116", "name": "Value 117", "name": "Value 117", "name": "Value 118", "name": "Value 118", "name": "Value 119", "name": "Value 119", "name": "Value 120", "name": "Value 120", "name": "Value 121", "name": "Value 121", "name": "Value 122", "name": "Value 122", "name": "Value 123", "name": "Value 123", "name": "Value 124", "name": "Value 124", "name": "Value 125", "name": "Value 125", "name": "Value 126", "name": "Value 126", "name": "Value 127", "name": "Value 127", "name": "Value 128", "name": "Value 128", "name": "Value 129", "name": "Value 129", "name": "Value 130", "name": "Value 130", "name": "Betriebsstunden Steuerung", "name": "Value 131", "name": "Betriebsstunden Heizung", "name": "Value 132", "name": "Betriebsstunden Leistungsbrand", "name": "Value 133", "name": "Value 134 ?", "name": "Value 134", "name": "Betriebsstunden Zündung", "name": "Value 135", "name": "Betriebsstunden Saugzug", "name": "Value 136", "name": "Value 137", "name": "Value 137", "name": "Value 138", "name": "Value 138", "name": "Value139 ?", "name": "Value 139", "name": "Value 140", "name": "Value 140", "name": "Value 141", "name": "Value 141", "name": "Value 142 ?", "name": "Value 142", "name": "Value 143", "name": "Value 143", "name": "Value 144", "name": "Value 144", "name": "Value 145", "name": "Value 145", "name": "Value 146", "name": "Value 146", "name": "Value 147", "name": "Value 147", "name": "Value 148", "name": "Value 148", "name": "Value 149", "name": "Value 149", "name": "Value 150", "name": "Value 150", "name": "Value 151", "name": "Value 151", "name": "Value 152", "name": "Value 152", "name": "Value 153", "name": "Value 153", "name": "Value 154", "name": "Value 154", "name": "Value 155", "name": "Value 155", "name": "Value 156", "name": "Value 156", "name": "Value 157", "name": "Value 157", "name": "Value 158", "name": "Value 158", "name": "Value 159", "name": "Value 159", "name": "Value 160", "name": "Value 160", "name": "Value 161", "name": "Value 161", "name": "Value 162", "name": "Value 162", "name": "Value 163", "name": "Value 163", "name": "Value 164", "name": "Value 164", "name": "Value165 ?", "name": "Value 165", "name": "Value 166", "name": "Value 166", "name": "Value 167", "name": "Value 167", "name": "Value 168", "name": "Value 168", "name": "Value 169", "name": "Value 169", "name": "Value 170", "name": "Value 170", "name": "Value 171", "name": "Value 171", "name": "Lambdasonde Spannung", "name": "Value 172", "name": "Value173 ?", "name": "Value 173", "name": "Value 174", "name": "Value 174", "name": "Value 175", "name": "Value 175", "name": "Value 176", "name": "Value 176", "name": "Value 177", "name": "Value 177", "name": "Value 178", "name": "Value 178", "name": "Value 179", "name": "Value 179", "name": "Value 180", "name": "Value 180", "name": "Value 181", "name": "Value 181", "name": "Value 182", "name": "Value 182", "name": "Value 183", "name": "Value 183", "name": "Value 184", "name": "Value 184", "name": "Value 185", "name": "Value 185", "name": "Value 186", "name": "Value 186", "name": "Value 187", "name": "Value 187", "name": "Value 188", "name": "Value 188", "name": "Value 189", "name": "Value 189", "name": "Value 190", "name": "Value 190", "name": "Value 191", "name": "Value 191", "name": "Value 192", "name": "Value 192", "name": "Value 193", "name": "Value 193", "name": "Value 194", "name": "Value 194", "name": "Value 195", "name": "Value 195", "name": "Value 196", "name": "Value 196", "name": "Value 197", "name": "Value 197", "name": "Value 198", "name": "Value 198", "name": "Value 199", "name": "Value 199", "name": "Value 200", "name": "Value 200", "name": "Value 201", "name": "Value 201", "name": "Value 202", "name": "Value 202", "name": "Value 203", "name": "Value 203", "name": "Value 204", "name": "Value 204", "name": "Value 205", "name": "Value 205", "name": "Value 206", "name": "Value 206", "name": "Value 207", "name": "Value 207", "name": "Value 208", "name": "Value 208", "name": "Value 209", "name": "Value 209", "name": "Value 210", "name": "Value 210", "name": "Value 211", "name": "Value 211", "name": "Value 212", "name": "Value 212", "name": "Value 213", "name": "Value 213", "name": "Value 214", "name": "Value 214", "name": "Value 215", "name": "Value 215", "name": "Value 216", "name": "Value 216", "name": "Value 217", "name": "Value 217", "name": "Value 218", "name": "Value 218", "name": "Value 219", "name": "Value 219", "name": "Value 220 ?", "name": "Value 220", "name": "Türe", "name": "Value 221", "name": "Value 222", "name": "Value 222", "name": "Value 223", "name": "Value 223", "name": "Value 224", "name": "Value 224", "name": "Value 225", "name": "Value 225", "name": "Value 226", "name": "Value 226", "name": "Value 227", "name": "Value 227",
Der erste "name" ist die Beschreibung was der Wert darstellen sollte. Der zweite "name" ist das Objekt.
Beispiele:
"Value 000" ist "HV40 Wassertemperatur"
...
"Value 007" ist "Heizung Vorlauf Ist"
...
"Value 012" ist "Heizung Vorlauf Soll"
... -
@Hogy Danke, ich werde das mal vergleichen mit meinen Daten.
Da die Heizung aber aktuell nicht mehr läuft - es ist Sommer - muss ich mal schauen wie ich das macheGrüße
jpgorganizer -
@jpgorganizer
würde mich sehr freuen, wenn du deine Erkenntnisse teilen würdest. Solltest du weitere Wertzuordnungen finden, dann lass es mich bitte wissen.
Hast du auch eine HV40 oder ist das eine Andere? Wenn eine Andere... welche?Grüße, Hogy
-
@Hogy sagte in Hargassner HV40 Daten über telnet abgreifen:
Hast du auch eine HV40 oder ist das eine Andere? Wenn eine Andere... welche?
Ich habe eine Pelletheizung Nano
Und sei unbesorgt, ich teile meine Erkenntnisse
VG
jpgorganizer -
@jpgorganizer ich habe auch einen Nano.
@SBorg ich gebe dir Recht, je einfacher deste besser.
aber ein Adapter wäre echt hilfreich, weil ich nach lannger zeit aus dem TelNET net schlau geworden bin, Stundenlange beobachtung meines Kessels.
Wenn jemand den Hargassner Gateway hat, ist es einfacher. Da man direkt auf das WEBIF von Hargassner die Werte verändern könnte, ohne TelNet Rätseln.hier meine Erkenntnisse:
0 "pm" 1 "1" Kessel 1=AUS, 7=Leistungsbrand, 5=Brauchwasser WW ? 2 "21.0" O² IST 3 "7.5" O² SOLL 4 "65" Kessel IST Temperatur 5 "0" Kessel SOLL Temperatur 6 "77" Kessel Abgastemperatur 7 "0" 8 "0.0" Saugzug IST 9 "0" 10 "0.0" Fördermenge 11 "0" 12 "0" 13 "0" 14 "0" 15 "0" 16 "2" Außentemperatur 17 "1" Außentemperatur GEMITTELT 18 "60" 19 "-20.0" 20 "-20" 21 "-20.0" 22 "37" Puffer/Boiler Temperatur UNTEN 23 "60" Puffer/Boiler Temperatur MITTE 24 "63" Rücklaufanhebung SOLL 25 "35" Rücklaufanhebung IST 26 "34" 27 "118.6" 28 "84.3" 29 "78" 30 "73" 31 "0" 32 "0" 33 "55136" 34 "0" Laufzeit Einschub seit Entaschung 35 "1" 36 "1246" Selbst Reinigung Anzahl der Bewegungen 37 "7.98" 38 "13.13" 39 "609" 40 "-7" 41 "2" 42 "0" 43 "92" Befüllgrad Puffer 44 "100.0" 45 "13.0" 46 "0.0" 47 "0" 48 "4058" Pelletverbrauch 49 "1" 50 "0" 51 "-20" 52 "0" 53 "20.0" 54 "20" 55 "0" 56 "1" 57 "45" HK1 Vorlauf IST 58 "34" HK1 Vorlauf SOLL 59 "20.0" 60 "22" 61 "1" HK1 1 AN, 4 Nachtabsenkung oder Aus ? 62 "1" 63 "24" HK2 Vorlauf IST 64 "0" HK2 Vorlauf SOLL 65 "20.0" 66 "22" 67 "4" HK2 1 AN, 4 Nachtabsenkung oder Aus ? 68 "1" 69 "-20" 70 "0" 71 "20.0" 72 "20" 73 "0" 74 "1" 75 "-20" 76 "0" 77 "20.0" 78 "20" 79 "0" 80 "1" 81 "-20" 82 "0" 83 "20.0" 84 "20" 85 "0" 86 "1" 87 "-20" 88 "0" 89 "20.0" 90 "20" 91 "0" 92 "1" 93 "-20" 94 "0" 95 "0" 96 "66" Puffer/Boiler Temperatur OBEN 97 "0" Geforderte Temperatur Puffer WW 98 "0" BW Anforderung 1= AN,0= AUS 99 "-20" 100 "0" 101 "0" 102 "-20" 103 "0" 104 "0" 105 "0" 106 "0" 107 "0" 108 "34" 109 "0" 110 "0" 111 "0" 112 "0" 113 "0" 114 "0" 115 "0" 116 "0" 117 "0" 118 "0" 119 "0" 120 "0" 121 "0" 122 "0" 123 "0" 124 "0" 125 "0" 126 "0" 127 "0" 128 "0" 129 "0" 130 "0" 131 "0" 132 "0" 133 "-20.0" 134 "-20.0" 135 "-20.0" 136 "-20.0" 137 "-1.0" 138 "-1.0" 139 "-1.0" 140 "-1.0" 141 "-1.0" 142 "-1.0" 143 "-1.0" 144 "-1.0" 145 "-1.0" 146 "-1.0" 147 "-1.0" 148 "-1.0" 149 "-1.0" 150 "-1.0" 151 "-1.0" 152 "-1.0" 153 "-1.0" 154 "-1.0" 155 "-1.0" 156 "-1.0" 157 "-1.0" 158 "-1.0" 159 "-1.0" 160 "-1.0" 161 "028B" 162 "0001" 163 "0000" 164 "0000" 165 "4000" 166 "0160" 167 "0000" 168 "0000" 169 "\r\n"
-
@Hogy
Hallo, Ich habe einen HV20. Ich nehme an, das die daten ähnlich sind. Welches Modul bzw. welche Erweiterugn wird für die Steuerung des HV benötigt oder geht das direkt über den RJ45 Stecker? Danke mal. -
@göschi
Ich nehme an, dass es beim HV20 die gleiche Steuerung ist, wie beim HV40.
Meine Steuerung hat an dem Display innenliegend noch einen eigenen RJ45 Anschluss. Den habe ich verwendet.
Dann noch die IP fest definieren und fertig sind die Vorbereitungen von Seitens Heizung.Bezüglich der Kanalbelegung... Ich konnte diese an der Heizung auf eine SD-Karte schreiben. Hier die Datei wie sie 1:1 von der Heizung kommt.
DAQ00140.txtGrüße, Hogy
-
Hallo zusammen,
ich hab das ganze schon mal gemacht, erstellt aber nur ne Datei zum Logging im csv Format die dann mit gnuplot zur pdf gemacht wird. die Zuordnung der einzelnen Werte stammt aus dem Microkontroller Net.
https://www.mikrocontroller.net/topic/134331?page=single
mein Eintag ist vom 16.12.2017 10:11
da hängt auch mein script als Datei dran allerdings ohne GnupotGruß Karsten