H&T mit Homematic keine Temperatur

  • Hallo,

    Habe nach Anleitung (v2) meinen ersten H&T in Homematic eingebunden.

    Leider wird bei der Temperatur ständig nur 0grad angezeigt, restliche Werte (Luftfeuchte, Batterie-Status und -Spannung) werden korrekt angezeigt.

    Hat jemand einen Tip wo der Fehler liegen könnte?

    Danke!

    Gruß,

    Kleppers

  • Hallo Stefan,

    Hier das Ergebnis:

    {"wifi_sta":{"connected":true,"ssid":"xyz","ip":"xyz","rssi":-54},"cloud":{"enabled":true,"connected":true},"mqtt":{"connected":false},"time":"18:46","unixtime":1678556760,"serial":1,"has_update":false,"mac":"4855190248F7","cfg_changed_cnt":0,"actions_stats":{"skipped":0},"is_valid":true,"tmp":{"value":25.62,"units":"C","tC":25.62,"tF":78.12,"is_valid":true},"hum":{"value":30.5,"is_valid":true},"bat":{"value":100,"voltage":2.96},"act_reasons":["button"],"connect_retries":0,"sensor_error":0,"update":{"status":"unknown","has_update":false,"new_version":"","old_version":"20221027-092707/v1.12.1-ga9117d3"},"ram_total":52384,"ram_free":40792,"fs_size":233681,"fs_free":155620,"uptime":4}

    25.62

    30.5

    100

    100

    2.96

    Habe auch mal einen Screenshot vom CuxD-Gerät gemacht.

    Danke!

    Gruß,

    Kleppers

  • 25.62

    Das müßte denke ich die Temperatur sein. Insofern funktioniert das parsen des Skriptes schonmal.

    Die Kopplung ist lange her.

    Poste bitte mal Dein Skript.

    Hast Du sonst noch eine Variable "Temperatur"? Der Name muß eindeutig sein !

  • Hallo Stefan,

    Das Skript ist 1zu1 das aus der Anleitung und nur das Setup angepasst.

    Eine Systemvariable mit „Temperatur“ habe ich nicht in Verwendung.

    Hier das Skript:

    !Skript V2.3.2 zur Gesamt-Datenübernahme vom Shelly H&T mit Originalfirmware (c) 2020 by 66er (alias Stefan K.)

    ! Publiziert und Updates auf https://shelly-forum.com/forum/index.ph…/145-homematic/

    !Versionsdatum 09.12.21


    !HT1 = Name des Gerätes, kann angepasst werden


    !**** SETUP ******** SETUP ******** SETUP ******** SETUP ***

    ! ACHTUNG: Beim Anpassen der Adressen keine "" löschen!

    ! Setup der CUxD-GERÄTE

    var url = "http://192.168.178.xyz/status"; ! IP-Adresse des Shelly H&T anpassen

    var execht = "CUxD.CUX2801001:4"; ! Adresse und Kanal des CUxD-Exec-Device angeben

    var shellyht = "CUxD.CUX9002001:1"; ! Adresse und Kanal des CUxD-Device für den Shelly H&T anpassen


    !Setup der SYSTEMVARIABLEN

    var htlf = "ShellyHT_WZ_LF"; ! Name der Systemvariablen anpassen

    var htbs = "ShellyHT_WZ_SBAT"; !Name der Systemvariablen anpassen

    var htv = "ShellyHT_WZ_UBAT"; !Name der Systemvariablen anpassen


    !****ENDE SETUP ********ENDE SETUP ********ENDE SETUP ******


    !Abfrage des Shelly H&T

    dom.GetObject(""#execht#".CMD_SETS").State("wget -q -O - '"#url#"'");

    dom.GetObject(""#execht#".CMD_QUERY_RET").State(1);

    string Antwort = dom.GetObject(""#execht#".CMD_RETS").State();

    string t = dom.GetObject(""#execht#".CMD_RETS").State();

    dom.GetObject(""#execht#".CMD_SETS").State("0");

    !WriteLine(Antwort);


    ! Temperatur

    string s;

    foreach (s,t.Split (",")) {

    if (s.LTrim ("{").StartsWith ('"tC"')) {

    string e = (s.StrValueByIndex (":",1).RTrim ("}"));

    ! WriteLine(e);

    }

    }


    ! Temperatur im CUxD-Gerät setzen

    dom.GetObject(""#shellyht#".SET_TEMPERATURE").State(e);


    ! Luftfeuchte

    string word = "hum";

    integer word_laenge = word.Length();

    integer word_position = Antwort.Find(word);

    string daten = Antwort.Substr((word_position + word_laenge +11), 4);

    integer word_position = daten.Find(word);

    daten = daten.Substr(0, (word_position -3));

    ! WriteLine(daten); ! = Luftfeuchte


    !Luftfeuchte in der Systemvariablen setzen

    dom.GetObject(""#htlf#"").State(daten);


    ! Batterie-Status

    string s;

    foreach (s,t.Split (",")) {

    if (s.LTrim ("{").StartsWith ('"bat"')) {

    string e = (s.StrValueByIndex (":",2).RTrim (","));

    ! WriteLine(e);

    }

    }


    ! %-Angabe in der Systemvariablen setzen

    dom.GetObject(""#htbs#"").State(e);


    ! Batteriespannung

    string s;

    foreach (s,t.Split (",")) {

    if (s.LTrim ("{").StartsWith ('"bat"')) {

    string e = (s.StrValueByIndex (":",2).RTrim (","));

    ! WriteLine(e);

    }

    }

    ! WriteLine(daten);


    string word = "voltage";

    integer word_laenge = word.Length();

    integer word_position = Antwort.Find(word);

    string daten = Antwort.Substr((word_position + word_laenge +2), 4);

    integer word_position = daten.Find(word);

    daten = daten.Substr(0, (word_position -3));

    ! WriteLine(daten); ! = Batterie-Spannung


    ! Batteriespannung in der Systemvariablen setzen

    dom.GetObject(""#htv#"").State(daten);


    daten = "0";

    !Ende Skript

  • Dieses Thema enthält 10 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.