NEWS
Mygekko in ioBroker einbinden mit Parser
-
Probier mal:
:\s+"([^\;]+)
-
leider nein …welche werte kommen denn so standardmäßig bei Default Poll-Intervall und Intervall hin?
-
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
-
ahhhh hab jetzt auch verstanden das der Quelltext automatisch kommen muss und ich den nicht einmalig reinkopieren muss.
aber das Feld ist bei der URL auch leer
-
Genau!
du solltest ihn mir nur geben, damit ich ein RegEx basteln konnte
-
aber wenn die URL im browser genau zu dem Code führt .. wieso nicht im Parser Adapter ..wie kann das möglich sein?
-
wenn der parser Adapter nicht auf die Website kommt weil der Schlüssel fehlt, kann er auch nichts auslesen
-
was meinst du mit Schlüssel?
der Adapter muss doch mit User und Passwort genauso auf die Seite kommen wie ein browser oder versteh ich was falsch?
-
ich habs geschafft …. frag mich nicht was ich verändert habe, aber jetzt klappts
@Homoran: ich danke dir für deine Hilfe .. hast mir auf jeden Fall geholfen!!
-
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