myGEKKO - Das Forum
Abruf von Luftfeuchtigkeitswerten für die Zimmer - Druckversion

+- myGEKKO - Das Forum (https://forum.my-gekko.com)
+-- Forum: Software (https://forum.my-gekko.com/forumdisplay.php?fid=26)
+--- Forum: Query API (https://forum.my-gekko.com/forumdisplay.php?fid=46)
+--- Thema: Abruf von Luftfeuchtigkeitswerten für die Zimmer (/showthread.php?tid=1910)



Abruf von Luftfeuchtigkeitswerten für die Zimmer - Maniac2002 - 08.10.2020

Hallo,

ich habe den Http-Link für den Abruf der Temperaturen gefunden, der auch gut funktioniert.

http://192.168.1.x/api/v1/var/roomtemps/status?username=XXX&password=YYY

Kann mir vielleicht jemand sagen, wie ich die Luftfeuchtigkeitswerte der einzelnen Zimmer abrufen kann?

Danke & Gruß
Maniac2002


RE: Abruf von Luftfeuchtigkeitswerten für die Zimmer - pinpong - 09.10.2020

Hi, also mit der Frage kann ich leider nichts genaues anfangen. Der Aufruf liefert dir doch die Werte. Wie willst du das verarbeiten? Es gibt keine einzelnen http Aufruf der dir nur die Luftfeuchtigkeit zurückgibt.


RE: Abruf von Luftfeuchtigkeitswerten für die Zimmer - Maniac2002 - 09.10.2020

Hallo,


zur Erklärung, ich versuche gerade alle Werte des MY-Gekko auszulesen und in den IO-Broker zu integrieren.
Erst einmal geht es nur um den Abruf und danach mache ich mich ans Steuern ran.
Sobald ich fertig bin stelle ich das hier zur Verfügung.



als Antwort auf den Aufruf bekomme ich folgende Werte:

{
"item0": {
"sumstate": {
"value": "21.5;21.12;0.00;8;1;0.12;0;"
}
},
"item1": {
"sumstate": {
"value": "21.20000076293945;21.04;0.00;8;1;0.04;0;"
}
},
"item2": {
"sumstate": {
"value": "21.39999961853027;21.41;2.22;8;1;0.41;0;"
}
},
"item3": {
"sumstate": {
"value": "19.70000076293945;20.07;24.27;8;1;-0.93;0;"
}
},
"item4": {
"sumstate": {
"value": "20.29999923706055;19.98;0.00;8;1;-1.02;0;"
}
},
"item5": {
"sumstate": {
"value": "19.79999923706055;19.98;20.46;8;1;-1.02;0;"
}
},
"item6": {
"sumstate": {
"value": "21;22.02;100.00;8;1;1.02;0;"
}
},
"item7": {
"sumstate": {
"value": "20.39999961853027;19.94;0.00;8;1;-1.06;0;"
}
}
}

welcher Wert ist denn die Luftfeuchtigkeit?
Die müßte so um 55% liegen.

Danke & Gruß
Maniac2002


RE: Abruf von Luftfeuchtigkeitswerten für die Zimmer - Strabbit - 09.10.2020

Je nachdem wie aktuell deine Firmware ist kannst du den Wert entweder über die Roomtemps oder halt als Umweg über eine Analyse abgreifen.
Ich empfehle natürlich die aktuelle Firmeware zu installieren und den Wert via Roomtemps abzugreifen :-)

wenn du folgenden HTML aufrufst ...


Zitat:Lokaler Aufruf:
https://GEKKO-IP/api/v1/var/roomtemps/item0/value?username=BENUTZER&password=PASSWORT

Plus-Query:
https://live.my-gekko.com/api/v1/var/roomtemps/item0/value?username=eMail-Benutzer&key=GEKKO-QueryAPI-Key&gekkoid=GEKKO-ID


... und folgendes wiederbekommst...

Zitat:"Act.Temp[°C];SetpointTemp[°C];Valve[%];Mode[1=Off|8=Comfort|16=Reduced|64=Manual|256=Standby];Reserved;TempAdjustment[°C];Cooling[0=Off|1=On];SumState[0=Ok|1=ManualOff|2=ManualOn|3=Locked|4=Alarm];Humidity[%rF];AirQuality[ppm|%];FloorTemp[°C]"

ist deine Firmware aktuell. Ansonsten mal updaten und erneut schauen.



Den Wert bekommst du dann wie folgt: 

Zitat:Lokaler Aufruf:
https://GEKKO-IP/api/v1/var/roomtemps/item0/sumstate/status?username=BENUTZER&password=PASSWORT

Plus-Query:
https://live.my-gekko.com/api/v1/var/roomtemps/item0/sumstate/status?username=eMail-Benutzer&key=GEKKO-QueryAPI-Key&gekkoid=GEKKO-ID

Als Ausgabe erhälst du dann eine JSON
Zitat:{
"value": "20.70;21.00;33.94;8;;0.00;0;0;55.32;;"
}

Feuchtigkeit wäre hier der 9 Wert, also 8 da 0-basierend.


Anzumerken wäre hier noch die Begrenzung der Abfragen welche lokal gemacht werden. Diese ist limitiert. Würde hier wenn vorhanden auf den Plusdienst setzen.


Gruß Thomas


RE: Abruf von Luftfeuchtigkeitswerten für die Zimmer - pinpong - 11.10.2020

Hi, hier Mal ein Code Schnipsel aus der Gekko Control App:


Code:
for (RoomTemp roomTemp in roomTemps) {
     var states = roomTemp.sumstate.value.split(";").toList();
     var i = shared.roomTemps
         .firstWhere((i) => i.itemId == roomTemp.itemId, orElse: () => null);
     if (i != null) {
       i.actTemp = double.tryParse(states[0]);
       i.setPoint = double.tryParse(states[1]);
       i.valve = double.tryParse(states[2]);
       i.mode = roomTempModeEnum(int.tryParse(states[3]) ?? 0);
       i.reserved = int.tryParse(states[4]);
       i.tempAdjust = double.tryParse(states[5]);
       i.coolingState = roomTempCoolingStateEnum(int.tryParse(states[6]));
       i.sumStateStatus = sumStateStatus(int.tryParse(states[7]) ?? 0);
       i.humidity = double.tryParse(states[8]);
       i.airQuality = double.tryParse(states[9]);
       i.floorTemp = double.tryParse(states[10]);
     }
   }