NEWS
Mygekko in ioBroker einbinden mit Parser
-
ich glaube nicht, dass 20.7 ein json ist
Gruß
Rainer
-
-
Zieh mal den Quelltext der Website
Wenn der nicht zu groß ist bitte in Code und SPoiler Tags posten
Irgendwelche persönliche Daten unsichtbar machen
Gruß
Rainer
-
anbei der komplette Quelltext der URL .. eigentl. nicht viel - ich denke hier liegt das problem nicht selbst, vermutlich irgendeine andere falsche Einstellung .. danke schonmal für deine Unterstützung
}
{ "sumstate": { "value": "20.89999961853027;20.98;41.81;8;1;-0.02;0;" } -
Probier mal:
:\s+"([^\;]+) -
Die Werte die du bei allen Regex haben willst bei default (in Millisekunden) bei einzelnen, die andere Intervalle haben sollen dann in die Zeile.
Daran liegt es aber nicht.
Stell mal die Instanz auf loglevel debug und sie dann nach was im log steht
-
ohh man … hätte ich auch mal selbst drauf kommen können ... sorry blutiger Anfänger :-)
aber wenn ich den Link genau so kopiere und im Browser eingebe bekomme ich den eben mitgeteilten Code ausgegeben.
Error: self signed certificate
2019-01-15 21:01:17.282 - [33mwarn[39m: parser.0 Cannot read link "https://192.168.178.~~[color=#FF0000]~~XX/api/v1/var/roomtemps/item0/status/?username=XXXXX&password=XXX": Error: self signed certificate
-
Genau!
du solltest ihn mir nur geben, damit ich ein RegEx basteln konnte
-
wenn der parser Adapter nicht auf die Website kommt weil der Schlüssel fehlt, kann er auch nichts auslesen
-
Eine Frage hätte ich doch noch …. beim abfragen der Werte habe ich komischerweise 2 Ausgabevarianten
einmal
` > "sumstate": {
"value": "21.29999923706055;18.00;0.00;16;1;-0.02;0;" `
und einmal
` > "sumstate": {
"value": "21;18.00;0.00;16;1;-0.02;0;" `
und ich will jeweils die ersten beiden Zahlen + die zwei Zahlen hinter dem Komma, also beim erste Beispiel 21,29
beim zweiten Beispiel wenn der Wert glatt ist in dem Fall 21 werden mir irgendwie nicht die Stellen hinter dem Komma angezeigt, eigentl. müsste es ja heißen 21,0000000.
@Homoran du hast mir ja :\s+"([^;]+) empfohlen, das funktioniert ja eigentl. nur gibt er mir ja dann den kompletten Wert bis zum ; aus.
Im zweiten Fall super, aber im ersten Fall wäre cool wenn er nach 2 Kommastellen abbrechen wird.
Eine Idee ? ich kenn mich leider nicht mir Regexe aus :-( … habe aber auch schon anhand einer Liste versucht aber das wird nix ;-)
Danke
-
Hallo,
ich bin auch gerade dabei mein Gekko mit dem IoBroker zu verbinden…Begonnen habe ich gerade mit dem auslesen der Raumtemperaturen.
Zuerst hab ich das auch über den parser und den reghex probiert aber fand, dass dann ja auch eine Krücke ist... da du ja alle Räume auch einzeln und dann wahrscheinlich noch doppelt wegen Soll und Ist werten abfragen willst.
Ich hab das jetzt so gelöst, dass ich alle Temperaturen einmal pro Minute mit dem JavaScript abfrage ('http://myGekkoIP/api/v1/var/roomtemps/s ... ssword=xxx')
und dann die Werte auf meine angelegten Objekte verteile. Über JS bekommst du die Werte dann mit "getAttr" und "split" sehr gut aufgeteilt.
Meine nächsten Punkte sind dann
-
werte setzen
-
Lüftungsanlage lesen und setzen
-
PV auslesen
anbei mal der beispielhafte code. Falls jemand ein paar verbesserungen hat gerne! (Bin leider kein Programmierer; gerade der replaceTeil is nur ne krücke und sorgt dafür dass unter homekit die Schaltzustände der Heizung zu sehen sind)
function holedaten () { var url = 'http://MyGekkoIP/api/v1/var/roomtemps/status?username=xxx&password=xxx' request(url, function (err, state, body){ if (body) { log (body) var rt0 = getAttr(body, 'item0.sumstate.value'); var rt0 = rt0.split(';'); setState("MyGekko.0.Temp_Kueche_Ist", rt0[0], true); setState('MyGekko.0.Temp_Kueche_Soll', rt0[1], true); setState('MyGekko.0.Temp_Kueche_HK', rt0[2], true); var input = rt0[3] var in1 = input.replace('16', '2') var in2 = in1.replace('8', '1') var output = in2.replace('1', '0') setState('MyGekko.0.Temp_Kueche_Stat', output, true); } else { log('Request meldet Fehler:' + err, 'error'); } }); } schedule('* * * * *' , function(){ holedaten(); }); -
-
Ich habe noch eine besser Lösung gefunden… ich dachte dass dies mit Blockly nicht lösbar ist... aber doch es geht:
Anbei das Beispiel: Hier wird die Aussentemperatur / Humidty sowie die Werte der einzelnen Zimmer ausgelesen und auf meine angelegten Objekte geschrieben.

-
Ahoi!
Ich wollte das Thema gerne aufgreifen.
Habt ihr das bereits weiter vertieft bzw. gibt es mittlerweile auch AdapterLösungen?
Würde unheimlich gerne meinen Gekko mit Broker verheiraten, damit ich einiges an zusätzlichen Möglichkeiten ausschöpfen kann.
Warum auch immer, aber am Gekko selber bastel ich so gut wie gar nicht mehr. Irgendwas scheint mir da nicht zu passen, hab es nur noch nicht direkt rausbekommen.Viele Grüße!
Micha