Problem mit "Shelly Flood in Homematic einbinden"

  • Hallo Stefan,

    vielen Dank für Ihre tolle Arbeit!

    Zwei Fragen habe ich trotzdem:

    Erste Frage: Zu Bild 3, wofür steht im Shelly-Eintrag bei Report Sensor Values:

    nach der IP, nach dem Port 8181 und nach dem Slash der Ausdruck "x.exe" ???

    Was muss da eingetragen werden? Oder einfach "x.exe"? Was bewirkt es dann?

    Zweite Frage:

    Bei Bild 9 kann man die Zeile "Aktivität" nicht lesen, da der Eintrag mit dem Uploadhinweis verdeckt ist.

    Ich bin technisch nicht in der Lage, das selber herauszufinden.

    Vielen Dank für Deine Mühe.

    Boschenka

    Edited once, last by 66er: als eigenes Thema abgetrennt aus der Kopplungsbeschreibung. ().

  • Hallo Boschenka,


    zu Frage 1:

    x.exe einfach übernehmen, gehört zur Gesamtsyntax.


    zu Frage 2:

    Systemzustand | Shelly-Flood_Ausfall_KG | verzögert um 10 Sekunden | in Ordnung

  • Hallo Stefan,

    hab es wieder probiert, funktioniert leider immer noch nicht.

    Bitte noch einmal, zu meiner ersten Frage:

    Zu Bild 3, wofür steht im Shelly-Eintrag bei Report Sensor Values:

    nach der IP, nach dem Port 8181 und nach dem Slash der Ausdruck "x.exe" ???

    Was muss da eingetragen werden? Oder einfach "x.exe"? Was bewirkt es dann?

    Bei Dir steht im Shelly x.exe laut Bild 3 und im Code unter dem Bild steht:

    http://192.168.1.93:8181/66er.exe?Antwort=dom.GetObject("Shelly-Flood_Ausfall_KG").State(1)

    Die IP und den Namen der Systemvariablen habe ich angepasst.

    Sorry, aber wenn ich es nicht verstehe, dann muss ich Buchstabe für Buchstabe abtippen...

    Durch diesen Widerspruch komme ich schon nicht weiter und hab ggf. noch andere Fehler?

    Danke noch einmal für Deine Hilfe und Geduld mit Anfängern wie mir.

    MfG

    Boschenka

  • Ob x.exe oder 66er.exe ist ganz egal, kannst auch boschenka.exe daraus machen. ;)


    Um Dir effektiv helfen zu können, lies bitte das hier mal. Insbesondere beachte Beiträge # 3 und # 4. ;)


    Ich trenne Dein Thema mal in ein eigenes Thema ab, wo wir dann weitermachen.


    Edit:

    Hier geht es weiter. :D

  • Hallo Stefan,

    vielen Dank für Deine super schnellen Antworten.

    Okay, dann habe ich vermutlich an der falschen Stelle gesucht. Mein Problem ist,

    ich bekomme keine Daten des Flood angezeigt und bin mir nicht einmal sicher, ob alles andere funktioniert. Werde am WE noch einmal alles durch sehen, ob ich einen Fehler finde.


    pasted-from-clipboard.png

    Hier schon mal ein Ausdruck wie der Flood dargestellt wird.

    Danke für Deine Hilfe und Grüße

    Boschenka

  • Na, das sieht doch schonmal gut aus. :thumbup:


    Poste mal den Setup-Teil Deines Skriptes und einen Screenshot des Aktualisierungsprogramms bitte.

  • Sorry, bitte das Setup per C&P hier im Code-Tag posten. (Im Screenshot hat man schnell mal ein Leerzeichen o.ä. übersehen) Das steht aber auch im bereits verlinkten Hilfethema drin.

  • Hallo Stefan,

    Ich versuche es nochmal:


    Hoffe so geht es!

    Kann die Zeilennummern nicht mit kopieren.

    Edited once, last by 66er: Code in Code Tag gesetzt ().

  • ...

    Hoffe so geht es!

    Kann die Zeilennummern nicht mit kopieren.

    Schau mal in die Einsteigertipps --> A7 ;)


    Deine CUxD-Exec Adresse im Setup ist fehlerhaft und/oder Dein CUxD-Exec ist falsch angelegt.


    CUxD-Exec hat immer CUX2801....


    Schau mal in die unter "Homematic" angepinnten Themen bitte. Da ist auch das Anlegen erklärt.

  • Hallo Stefan,

    wie immer Danke!!

    Habe erst jetzt realisiert, dass ich 3 CUxD Geräte brauche.

    Im Teil 1: CUxD Exec 2801001

    Im Teil 2: CUxD Timer 2800001

    Im Teil 3: CUxD Flood 4000005

    Ebenso habe ich übersehen, dass im Script Zeile 49 und 67 die Variablennamen anzupassen sind. Der Hinweis in Zeile 22

    !*****Ab hier NICHTS MEHR ÄNDERN *****

    hat mich das glauben lassen.

    Es ist mittlerweile auch nachgetragen.

    Jetzt hab ich ein neues Problem. Scheinbar hat Alterco heute eine neue Firmware veröffentlicht. Jetzt habe ich 39 Actions aber "Report Sensor Values" fehlt.

    Bin langsam am Verzweifeln.

    Poste nochmal das geänderte Script:

    !Skript V2.0 zum Werte auslesen Shelly-Flood mit Originalfirmware (c) 2020 by 66er (Stefan K.)

    ! Shellyflood1-HWR-Keller (Standort 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.42/status"; ! IP-Adresse des Shelly Flood anpassen

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

    var shellyf = "CUxD.CUX4000005:1" ; ! Adresse und Kanal des CUxD-Device für den Shelly Flood anpassen



    !Setup der SYSTEMVARIABLEN

    var floodbat = "Shellyflood1-HWR-Keller-Batterie"; ! Name der Systemvariablen anpassen

    var floodtemp = "Shellyflood1-HWR-Keller-Temperatur"; !Name der Systemvariablen anpassen


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



    !*****Ab hier NICHTS MEHR ÄNDERN *****



    !Abfrage

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

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

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

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

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

    !WriteLine(Antwort);

    !WriteLine(t);




    !****Auswertung des Antwortstrings für Temp ****


    string s;

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

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

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

    ! WriteLine(temp);

    }

    }




    !**** Variable setzen****

    !Variablennamen anpassen (hier: Shellyflood1-HWR-Keller-Temperatur)

    dom.GetObject(""#floodtemp#"").State(temp);




    !****Auswertung des Antwortstrings für Batt ****


    string s;

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

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

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

    ! WriteLine(bat);

    }

    }




    !**** Variable setzen****

    !Variablennamen anpassen (hier: Shellyflood1-HWR-Keller-Batterie)

    dom.GetObject(""#floodbat#"").State(bat);




    !Abfrage Alarm

    string word = "flood";

    integer word_laenge = word.Length();

    integer word_position = Antwort.Find(word);

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

    integer word_position = daten.Find(word);

    daten = daten.Substr(0, (word_position +6));

    Antwort = "true";

    !WriteLine(daten);




    !**** Zustand aktualisieren ****


    var zustand = dom.GetObject(""#shellyf#".STATE").State();

    !WriteLine(zustand);

    if ((daten == "true,") && (zustand != true) )

    {dom.GetObject(""#shellyf#".SET_STATE").State(1);

    !WriteLine("if ON");

    }

    if ((daten == "false") && (zustand != false)) {

    dom.GetObject(""#shellyf#".SET_STATE").State(0);

    !WriteLine("if off");

    }



    !Skript Ende



    Vielleicht magst Du noch einmal draufschauen und ggf. welche der 39 Actions ich im Shelly per WEB-UI eintragen soll.


    Vielen Dank für Deine Geduld

    MfG

    Boschenka

  • Bitte poste weitere Codes im Code-Tag!



    ...

    Ebenso habe ich übersehen, dass im Script Zeile 49 und 67 die Variablennamen anzupassen sind. ...

    Leider ein Fehler!

    Bitte die Zeilen wieder herstellen. Die Anpassungshinweise sind ein Überbleibsel aus älteren Versionen, das wurde jetzt schon korrigiert in der Anleitung. Sorry



    ...

    Scheinbar hat Alterco heute eine neue Firmware veröffentlicht. Jetzt habe ich 39 Actions aber "Report Sensor Values" fehlt.


    ...

    Prima, dann hätte Allterco ja wiedermal ganze Arbeit geleistet. :thumbup::cursing:


    Somit wäre auch diese Kopplung nach einem Firmwareupdate nicht mehr lauffähig!


    Einzige Sofortmassnahme wäre ein Downgrade mittels Firmware-Archiv.


    Wann ich dazu komme, hier eine neue Anbindung zu schreiben, kann ich noch nicht sagen. Sitze aktuell am Dimmer2.

  • Der http-Aufruf in Deinem Screenshot scheint unvollständig.


    Was steht da drin?


    Mach' mal ein C&P hierher.

  • Hallo Stefan,

    im Screenshoot und in der Shelly-Übersicht wird nicht alles dargestellt.

    Nicht im Handy aber auch nicht am PC. Wenn ich aber am PC nach rechts verschiebe sehe ich den ganzen Befehl. Hier das C&P:

    http://192.168.178.42:8181/x.exe?Antwort=dom.GetObject("Shellyflood1-HWR-Keller-AUSFALL").State(1)

    In der Zwischenzeit bekomme ich alle 12 Stunden die Ausfallmeldung des Flood.

    Die Anzeige der Tem. und Batt. steht immer noch auf "0".

    Noch eine Frage, sind die Einstellungen in der Firewall richtig?


    pasted-from-clipboard.png

    Vielleicht ist hier etwas nicht richtig?

    Vielen Dank und eine schöne Adventszeit.

    Grüße Boschenka

  • Ich hatte Dich gebeten, mal den Thread


    "Wichtige Hinweise zu den Shelly-Kopplungen an Homematic"


    zu lesen.


    Schau dort mal was unter Beitrag # 3 Nr.6 steht. ;)

  • Hallo Stefan,

    die hab ich alle gelesen.

    Was meinst Du konkret? Den Hinweis über die Firewall?

    Daran liegt es nicht, denn die hatte ich tagelang alles auf Vollzugriff und hat trotzdem nicht funktioniert.

    Deshalb aus Sicherheitsgründen wieder eingeschaltet. Habe es nun wieder alles auf Vollzugriff gestellt, aber leider...

    Ich bekomme keine Werte, lediglich alle 12 Std. die Nachricht, dass die Überwachung ausgefallen ist.

    So wie ich es im email-Formular eingetragen habe.

    Vielleicht hast Du noch eine Idee?

    Danke und einen schönen 2. Advent-Sonntag

    MfG

    Boschenka

  • So jetzt mal alles auf Anfang:


    Alle paar tage wieder in das ganze Thema reindenken. Kannst Du bitte mal am Ball bleiben?


    Bis jetzt sind bei allen die Kopplungen nach Hilfestellung gelaufen, dann sollten wir zusammen Deine Kopplung auch ans Laufen bekommen.


    Für mich beginnt die Problemlösung ab hier neu!


    • Welche Firmware läuft aktuell auf dem Shelly?
    • Poste bitte nochmal Dein aktuell eingesetztes Skript im Code-Tag,
    • Poste bitte einen Screenshot der Action-Einstellungen. Ist der Code nicht ganz lesenbar, per C&P im Code Tag anhängen.
    • Welche Firmware läuft auf der CCU?
    • Welche CUxD-Version
  • Hallo Stefan,

    Danke, dass Du am Ball bleibst.

    Bei mir geht es leider aus gesundheitlichen Gründen nur sporadisch...

    1. Also der Flood hat aktuell die FW 20201128-102432/v1.9.2@e83f7025


    2. Hier das verwendete Script:

    !Skript V2.1 zum Werte auslesen Shelly-Flood mit Originalfirmware (c) 2020 by 66er (Stefan K.)

    ! Shelly Flood KG Waschmaschine (Standort 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.42/status"; ! IP-Adresse des Shelly Flood anpassen

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

    var shellyf = "CUxD.CUX4000005:1" ; ! Adresse und Kanal des CUxD-Device für den Shelly Flood anpassen



    !Setup der SYSTEMVARIABLEN

    var floodbat = "Shellyflood1-HWR-Keller-Batterie"; ! Name der Systemvariablen anpassen

    var floodtemp = "Shellyflood1-HWR-Keller-Temperatur"; !Name der Systemvariablen anpassen


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



    !*****Ab hier NICHTS MEHR ÄNDERN *****



    !Abfrage

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

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

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

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

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

    !WriteLine(Antwort);

    !WriteLine(t);




    !****Auswertung des Antwortstrings für Temp ****


    string s;

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

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

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

    ! WriteLine(temp);

    }

    }




    !**** Variable setzen****

    dom.GetObject(""#floodtemp#"").State(temp);




    !****Auswertung des Antwortstrings für Batt ****


    string s;

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

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

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

    ! WriteLine(bat);

    }

    }




    !**** Variable setzen****

    dom.GetObject(""#floodbat#"").State(bat);




    !Abfrage Alarm

    string word = "flood";

    integer word_laenge = word.Length();

    integer word_position = Antwort.Find(word);

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

    integer word_position = daten.Find(word);

    daten = daten.Substr(0, (word_position +6));

    Antwort = "true";

    !WriteLine(daten);




    !**** Zustand aktualisieren ****


    var zustand = dom.GetObject(""#shellyf#".STATE").State();

    !WriteLine(zustand);

    if ((daten == "true,") && (zustand != true) )

    {dom.GetObject(""#shellyf#".SET_STATE").State(1);

    !WriteLine("if ON");

    }

    if ((daten == "false") && (zustand != false)) {

    dom.GetObject(""#shellyf#".SET_STATE").State(0);

    !WriteLine("if off");

    }



    !Skript Ende


    3. Hier was ich im Shelly eingestellt habe:

    pasted-from-clipboard.png


    weil es abgeschnitten ist hier C&P:

    http://192.168.178.42:8181/x.exe?Antwort=dom.GetObject("Shellyflood1-HWR-Keller-AUSFALL").State(1)


    4. Auf der Raspberrymatic läuft: 3.53.34.20201121


    5. CuxD läuft aktuell in der Vers. 2.4.4


    Würde mich freuen, wenn Dir doch noch etwas einfällt und bedanke mich schon jetzt recht herzlich für Deine Mühe.

    MfG

    Boschenka