Hallo Zusammen,
ich bin neu hier im Forum und Anfänger im Bereich Homematic, Shelly und null Ahnung wie man Scripte erstellt und bearbeitet.
Ich habe mir eine Shelly HT zugelegt. Leider bekomme ich keine Verbindung zur Homematic CCU3 hin. Es werden keine Daten angezeigt.
Die Anleitung für das Einbinden der Shelly in die Homematic habe ich so gut wie ich es verstanden habe, umgesetzt. Alle Einstellungen habe ich kontrolliert, aber es klappt nicht.
Meine Einstellungen habe ich mal angehangen. Das Script habe ich als txt-Datei angehangen, da ich leider nicht weiß wie man das Script in einem Code-Tag umwandelt.
Ich hoffe Ihr könnt mir helfen.
Gruß Tom
Code
!Skript V2.3.1 zur Gesamt-Datenübernahme vom Shelly H&T mit Originalfirmware (c) 2020 by 66er (alias Stefan K.)
!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.1.130/status"; ! IP-Adresse des Shelly H&T anpassen
var execht = "CUxD.CUX2801001:4"; ! Adresse und Kanal des CUxD-Exec-Device angeben
var shellyht = "CUxD.CUX9002002:1"; ! Adresse und Kanal des CUxD-Device für den Shelly H&T anpassen
!Setup der SYSTEMVARIABLEN
var htlf = "Shelly_HT1_Luftfeuchte"; ! Name der Systemvariablen anpassen
var htbs = "Shelly_HT1_Batt-Status"; !Name der Systemvariablen anpassen
var htv = "Shelly_HT1_Batt-Spannung"; !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
Alles anzeigen