NEWS
Parser Adapter Werte Zeilenweise auslesen (Guntamatic)
-
Hallo,
meine Finale Lösung ist jetzt doch ein Skript geworden...
createState('Guntamatic_Betrieb_0'); createState('Guntamatic_Aussentemperatur_1'); createState('Guntamatic_Kesseltemperatur_3'); createState('Guntamatic_Leistung_5'); createState('Guntamatic_CO2_Gehalt_8'); createState('Guntamatic_Puffer_oben_17'); createState('Guntamatic_Puffer_unten_19'); createState('Guntamatic_Pumpe_HP0_20'); createState('Guntamatic_Warmwasser_21'); createState('Guntamatic_Vorlauf_31'); createState('Guntamatic_Kesselfreigabe_68'); createState('Guntamatic_Programm_69'); createState('Guntamatic_Programm_HK1_71'); createState('Guntamatic_Stoer0_79'); createState('Guntamatic_Stoer1_80'); createState('Guntamatic_Asche_entleeren_85'); createState('Guntamatic_Brenstoffzähler_89'); createState('Guntamatic_Pufferladung_90'); createState('Guntamatic_CO2_Gehalt_korrigiert'); var request= require('request'); schedule("*/10 * * * * *", function() { /* für einige Werte wie Brennstoffverbrauch benötigt mein einen Key von Guntamatic url: 'http://10.10.10.7/daqdata.cgi?key=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' */ var request= require('request'); request.post({ url: 'http://10.10.10.7/daqdata.cgi' }, function(error, response, body){ if (body) { var parts_Guntamatic = body.split('\n')[0]; setState('Guntamatic_Betrieb_0', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[1]; setState('Guntamatic_Aussentemperatur_1', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[3]; setState('Guntamatic_Kesseltemperatur_3', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[5]; setState('Guntamatic_Leistung_5', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[8]; setState('Guntamatic_CO2_Gehalt_8', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[17]; setState('Guntamatic_Puffer_oben_17', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[19]; setState('Guntamatic_Puffer_unten_19', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[20]; setState('Guntamatic_Pumpe_HP0_20', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[21]; setState('Guntamatic_Warmwasser_21', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[31]; setState('Guntamatic_Vorlauf_31', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[68]; setState('Guntamatic_Kesselfreigabe_68', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[69]; setState('Guntamatic_Programm_69', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[71]; setState('Guntamatic_Programm_HK1_71', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[79]; setState('Guntamatic_Stoer0_79', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[80]; setState('Guntamatic_Stoer1_80', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[85]; setState('Guntamatic_Asche_entleeren_85', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[89]; setState('Guntamatic_Brenstoffzähler_89', parts_Guntamatic, true); var parts_Guntamatic = body.split('\n')[90]; setState('Guntamatic_Pufferladung_90', parts_Guntamatic, true); } if (getState("Guntamatic_Leistung_5").val == 0) { setState("Guntamatic_CO2_Gehalt_korrigiert" , 0, true); } else { setState("Guntamatic_CO2_Gehalt_korrigiert",getState("Guntamatic_CO2_Gehalt_8").val); } }); } )
-
@glitzi sagte in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):
body.split('\n')
Kleiner Tip: Speicher das in einer Variablen und nutze diese (anstatt die Split-Aktion 90x auszuführen)
var parts = body.split('\n'); var parts_Guntamatic = parts[0]; setState('Guntamatic_Betrieb_0', parts_Guntamatic, true); var parts_Guntamatic = parts[1]; setState('Guntamatic_Aussentemperatur_1', parts_Guntamatic, true); ...
-
@glitzi sagte in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):
meine Finale Lösung ist jetzt doch ein Skript geworden...
Das ist gut!
Aber da ich neugierig bin würde mich interessieren ob mein letztes RegEx wirklich funktioniert (hätte)?
-
@Homoran said in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):
@glitzi sagte in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):
meine Finale Lösung ist jetzt doch ein Skript geworden...
Das ist gut!
Aber da ich neugierig bin würde mich interessieren ob mein letztes RegEx wirklich funktioniert (hätte)?
Leider hat er nicht funktioniert... Trotzdem Danke für die viele Arbeit!
-
@AlCalzone said in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):
@glitzi sagte in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):
body.split('\n')
Kleiner Tip: Speicher das in einer Variablen und nutze diese (anstatt die Split-Aktion 90x auszuführen)
var parts = body.split('\n'); var parts_Guntamatic = parts[0]; setState('Guntamatic_Betrieb_0', parts_Guntamatic, true); var parts_Guntamatic = parts[1]; setState('Guntamatic_Aussentemperatur_1', parts_Guntamatic, true); ...
Super werde ich gleich mal umsetzen.
-
Einer eine Idee warum in der Objektübersicht der Korrigierte Wert meisten dem Original etwas hinterherhinkt?
... if (getState("Guntamatic_Leistung_5").val == 0) { setState("Guntamatic_CO2_Gehalt_korrigiert" , 0, true); } else { setState("Guntamatic_CO2_Gehalt_korrigiert",getState("Guntamatic_CO2_Gehalt_8").val, true); }
-
@glitzi setState ist asynchron - der Code läuft weiter, bevor der Wert in der Datenbank angekommen und per getState verfügbar ist.
Diese Korrekturen solltest du beim Auslesen auf Basis des geparsten Wertes schon machen, ohne den Umweg über die Datenbank.also z.B. so:
if (parts[5] == 0) { // setState... } else { setState("Guntamatic_CO2_Gehalt_korrigiert", parts[8], true) }
-
Perfekt !!!
-
kann mir eventuell einer von euch bei meinem nächsten Problem helfen
String seriell einlesen, Anfang finden und dann splitten und von HEX konvertieren
-
Hallo,
ich lese die Daten ja wie folgt erfolgreich ein...
function() { var request= require('request'); request.post({ url: 'http://10.10.10.7/daqdata.cgi?key=xxxxxxxxxxxxxxxxxxxxxxx' }, function(error, response, body){ if (body) { var parts = body.split('\n'); var parts_Guntamatic = parts[0]; setState('Guntamatic_Betrieb_0', parts_Guntamatic, true); .................
jetzt werde leider keine Sonderzeichen, insbesondere Umlaute dargestellt, kann man da noch den Zeichensatz beim importieren vorgeben/wandeln?
Gruß Glitzi
-
request.post({ url: 'http://10.10.10.7/daqdata.cgi?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx', encoding: 'HIER DAS KORREKTE ENCODING' }, ...
Mögliche Werte findest du in https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings
-
@AlCalzone
noch zwei sachen,da kommt leider
error javascript.0 (11434) script.js.Guntamatic_Daten_aus_Http_Seite_Parsen compile failed: at script.js.Guntamatic_Daten_aus_Http_Seite_Parsen:29
und könntest du noch den Key im vorigen Post löschen?
-
@glitzi getan. Da fehlt ein Komma am Ende der
url: ...
Zeile -
DANKE
-
Hallo zusammen,
@glitzi
woher bekommt man den Key?Ich habe Version 3.1b, woher bekommt man ein update?
Sind die Werte mit der aktuellen Software Version immer noch im Klartext aus zu lesen?
Ich habe gelesen das Guntamatic die mittlerweile Verschlüsselt hat.Kann man auch die Heizung über die Visu steuern?
Z.B. Pumpen EIN oder AUS schalten.Gruß
Alexander -
Hallo,
-
Software gibt es nur beim Heizungsbauer
-
Den Key bekommt man auch nur über Guntamatic
Siehe Formular
Kundendaten_Schnittstellen_DE.doc
Beschreibung zur Schnittstelle, geht auch über Modbus TCP (Da gibt es nur keinen Störtext und der KEY wird benötigt)
WEB_MODBUS-Schnittstelle_DE-V03-0316.pdfModbus Mapping:
http://IP.IP.IP.IP/mbmap.cgi?key=xxxxxWerte:
http://IP.IP.IP.IP/daqdata.cgiBeschreibung:
http://IP.IP.IP.IP/daqdesc.cgiDer unterschied (mit/ohne Key) ist folgender
-
-
Hallo,
bei mir sieht die Beschreibung so aus:
Betrieb;
Aussentemperatur;°C
reserved;
Kesseltemperatur;°C
reserved;
Leistung;%
reserved;
reserved;
CO2 Gehalt;%
reserved;
reserved;
reserved;
reserved;
Saugzuggebläse;%
reserved;
Austragungsgebläse;%
G1 soll;%
Puffer oben;°C
Puffer mitte;°C
Puffer unten;°C
Pumpe HP0;
Warmwasser 0;°C
P Warmwasser 0;
Warmwasser 1;°C
P Warmwasser 1;
Warmwasser 2;°C
P Warmwasser 2;
Raumtemp. HK 0;°C
Heizkreis 0;
Raumtemp. HK 1;°C
reserved;
Vorlauf Ist 1;°C
reserved;
reserved;
Raumtemp. HK 2;°C
reserved;
Vorlauf Ist 2;°C
reserved;
Heizkreis 2;
Raumtemp. HK 3;°C
Heizkreis 3;
Raumtemp. HK 4;°C
reserved;
Vorlauf Ist 4;°C
reserved;
Heizkreis 4;
Raumtemp. HK 5;°C
reserved;
Vorlauf Ist 5;°C
reserved;
Heizkreis 5;
Raumtemp. HK 6;°C
Heizkreis 6;
Raumtemp. HK 7;°C
reserved;
Vorlauf Ist 7;°C
reserved;
Heizkreis 7;
Raumtemp. HK 8;°C
reserved;
Vorlauf Ist 8;°C
reserved;
Heizkreis 8;
reserved;
reserved;
reserved;
reserved;
reserved;
reserved;
Programm;
Progamm HK0;
Progamm HK1;
Progamm HK2;
Progamm HK3;
Progamm HK4;
Progamm HK5;
Progamm HK6;
Progamm HK7;
Progamm HK8;
Störung 0;
Störung 1;
Serial;
Version;
Betriebszeit;h
Servicezeit;d
Asche leeren in;h
Vorlauf Ist 0;°C
Vorlauf Ist 3;°C
Vorlauf Ist 6;°CDas heißt über daqdata kann man nur die Werte für die Visu auslesen, um die Heizung zu steuern muss man über Modbus gehen.
Welchen Unterschied gibt es vom Software Stand von 3.1b zu dem Aktuellen?
Macht es sinn ein Update zu machen?Woher weis Du die ganzen Sachen?
Vielen Dank für die Infos.
Gruß
Alexander -
servus,
ich hab die sw 32c
mit key, sehe aber keinen unterschied bei der ausgabe?
xxx.xxx.2.15/daqdata.cgi?key=xxxxxxxxxxxxxxxxxxwas mache ich falsch?
mfg
orfix
-
@orfix sagte in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):
servus,
ich hab die sw 32c
mit key, sehe aber keinen unterschied bei der ausgabe?
xxx.xxx.2.15/daqdata.cgi?key=xxxxxxxxxxxxxxxxxxwas mache ich falsch?
mfg
orfix
Hast Du abhängig von deinem Kessel einen Code bei Guntamatic angefordert?
Ohne oder mit falschen Code kommen keine anderen Daten.
-
@alex303 sagte in Parser Adapter Werte Zeilenweise auslesen (Guntamatic):
Hallo,
bei mir sieht die Beschreibung so aus:
Die Beschreibung kann natürlich von Kessel zu Kessel unterschiedlich sein, ich habe einen BIOSTAR 17
Betrieb;
Aussentemperatur;°C
...Das heißt über daqdata kann man nur die Werte für die Visu auslesen, um die Heizung zu steuern muss man über Modbus gehen.
Ja über die Seite bekommt man nur die Werte.
Über diese Funktion sollte man auch steuern können, habe ich aber noch nicht probiert. (Steht auch im oben verlinktem Dokument / Seite 3-5)
Welchen Unterschied gibt es vom Software Stand von 3.1b zu dem Aktuellen?
Macht es sinn ein Update zu machen?Das Kann Dir nur Dein Heizungsbauer oder Guntamtic sagen
Woher weis Du die ganzen Sachen?
Die Dokumente habe ich ja oben verlinkt, wenn man etwas sucht findet man diese im Netz oder bekommt sie mit etwas glück von Guntamtic.
Vielen Dank für die Infos.
Gruß
Alexander