Shelly1 mit Original-Firmware + CUxD inkl. Status

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

66er
Beiträge: 3083
Registriert: 23.08.2015, 11:06
System: CCU
Hat sich bedankt: 116 Mal
Danksagung erhalten: 111 Mal

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von 66er » 06.05.2019, 21:19

Hallo und willkommen im Forum :D
robbsen hat geschrieben:
06.05.2019, 21:09
... Ich vermute im Teil oben müsste eigentlich nicht die "Seriennummer" des Schalters sondern des Timers, ggf. liegt es hierran. Was muss ich eintragen wenn ich keinen CUxD-Timer benutze?
Du änderst bitte im Script nichts!

Die einzige Änderung ohne CUxD-Timer ist anstelle des CUxD-Timers das Zeitmodul zu nutzen.

Poste bitte mal einen Screenshot Deiner Zeitmoduleinstellungen.

LG
Stefan

robbsen
Beiträge: 5
Registriert: 06.05.2019, 20:58

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von robbsen » 07.05.2019, 09:34

Hi Stefan,

danke für dein Feedback. Die Einstellungen sehen wie folgt aus.
Bild

im untern Bild ist zu sehen was passiert sobald das Programm aktiv ist.

Bild

Ich habe mir den Code noch mal angeschaut und verstehe einiges aber leider nur einen Teil. Ich denke ich habe ein grundsätzliches Verständnisproblem zum Script selber.
Im Ursprungsscript soll man 4x : die Adresse des CUxD-Exec (im Skript: CUX2801001:2) / 3x : die Adresse des zu aktualisierenden CUxD-Schalters (im Skript: CUX4000005:1)

--> ich verstehe denke ich hier den Unterschied nicht und habe es in meinem Code auch identisch eingegeben. Ich denke mal mein Fehler liegt hier?
Wo finde ich die CUxD-Exec Adresse? Ist ja scheinbar nicht die vom Schalter?

Code: Alles auswählen

!Flur
var url = "http://192.168.2.62/relay/0/status";
dom.GetObject("CUxD.CUX2801002:4.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801002:4.CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject("CUxD.CUX2801002:4.CMD_RETS").State();
dom.GetObject("CUxD.CUX2801002:4.CMD_SETS").State("0");  
!WriteLine(Antwort);

string word = "ison:";
integer word_laenge = word.Length();
integer word_position = Antwort.Find(word);
string daten = Antwort.Substr((word_position + word_laenge +4), 5);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -3));
Antwort = "true";
!WriteLine(daten);

var zustand = dom.GetObject("CUxD.CUX2801002:4.STATE").State();
!WriteLine(zustand);

if ((daten == "true") && (zustand != true) )
{dom.GetObject("CUxD.CUX2801002:4.SET_STATE").State(1);
!WriteLine("if ON");
}
if ((daten == "false") && (zustand != false)) 
{dom.GetObject("CUxD.CUX2801002:4.SET_STATE").State(0);
!WriteLine("if off");
}
daten = "0“;

Viele Grüße

Sebastian

66er
Beiträge: 3083
Registriert: 23.08.2015, 11:06
System: CCU
Hat sich bedankt: 116 Mal
Danksagung erhalten: 111 Mal

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von 66er » 07.05.2019, 15:11

Hallo Sebastian,

Du brauchst ein CUxD-System-Exec um die Befehle (http...) auszuführen. Ich vermute Deinem Screenshot nach, dass Du das auch angelegt hast, :D ...

aber: das gleiche Gerät auch für die Bedienung des Shelly nutzen willst und das ist dann der Fehler! Zum Bedienen brauchst Du die CUxD (40) 16-Kanal Universalsteuerung als Schalter! :wink:

Vergleiche mal Deine Screenshots mit denen meiner Anleitung. Achte auf die CUxD-Gerätenummern (CUX 40.... bzw. CUX28...) :!:

LG
Stefan

naumannsascha
Beiträge: 19
Registriert: 03.05.2019, 09:14

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von naumannsascha » 07.05.2019, 20:23

66er hat geschrieben:
03.05.2019, 13:45
Hallo zusammen,

ich habe das Skript mit dem auf meinem Charly verglichen und es läuft dort genau so fehlerfrei. :roll:

Das Komma darf nicht entfernt werden, weil es Teil des ausgelesenen Strings (5 Zeichen) ist!

@naumannsascha:

Triggere bitte im Programm mal nicht auf "Timerevent" sondern:

Code: Alles auswählen

WENN Timer Im Wertebereich <1    BEI ÄNDERUNG AUSLÖSEN:
LG
Stefan
Hallo Habe alles geprüft und es geht nicht Shelly ist an aber Homematic sagt ist aus.
01.JPG
Aber was ich auch nicht verstehe ist Im Ursprungsscript soll man 4x : die Adresse des CUxD-Exec (im Skript: CUX2801001:2) / 3x : die Adresse des zu aktualisierenden CUxD-Schalters (im Skript: CUX4000005:1) aber das ist doch das selbe der Schalter / CUxD-Exec / Schalter ???
Dateianhänge
05.JPG
04.JPG
03.JPG
02.JPG
Zuletzt geändert von naumannsascha am 07.05.2019, 21:22, insgesamt 1-mal geändert.

66er
Beiträge: 3083
Registriert: 23.08.2015, 11:06
System: CCU
Hat sich bedankt: 116 Mal
Danksagung erhalten: 111 Mal

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von 66er » 07.05.2019, 20:28

naumannsascha hat geschrieben:
07.05.2019, 20:23
...
Hallo Habe alles geprüft und es geht nicht Shelly ist an aber Homematic sagt ist aus.01.JPG
...

Das bezweifle ich sehr!



Sorry, aber langsam komme ich mir veräppelt vor :!: (Um es höflich auszudrücken)

Auch Du hast laut Deinen Screenshots kein:

Anlegen einer CUxD (40) 16-Kanal Universalsteuerung als Schalter angelegt :!: :oops:

In Deinen Screenshots sind 2 Geräte (28)!

Seltsamerweise den Fehler eines anderen Users genau gleich eingebaut. Zufall?

DJMetro
Beiträge: 40
Registriert: 13.02.2017, 19:52

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von DJMetro » 07.05.2019, 20:44

Hallöchen,
ich hab da ein kleines Problem. Shelly wird ja als Schalter angelegt und nicht als Aktor. Somit kann ich ihn nicht über TinyMatic ansteuern. Wie kann man das lösen?

Andi

66er
Beiträge: 3083
Registriert: 23.08.2015, 11:06
System: CCU
Hat sich bedankt: 116 Mal
Danksagung erhalten: 111 Mal

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von 66er » 07.05.2019, 21:04

DJMetro hat geschrieben:
07.05.2019, 20:44
... Somit kann ich ihn nicht über TinyMatic ansteuern. Wie kann man das lösen?
...
Vielleicht kann der Programmierer von Tinymatic helfen! :wink:

Stefan

66er
Beiträge: 3083
Registriert: 23.08.2015, 11:06
System: CCU
Hat sich bedankt: 116 Mal
Danksagung erhalten: 111 Mal

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von 66er » 07.05.2019, 21:31

naumannsascha hat geschrieben:
07.05.2019, 20:23
...
Aber was ich auch nicht verstehe ist Im Ursprungsscript soll man 4x : die Adresse des CUxD-Exec (im Skript: CUX2801001:2) / 3x : die Adresse des zu aktualisierenden CUxD-Schalters (im Skript: CUX4000005:1) aber das ist doch das selbe der Schalter / CUxD-Exec / Schalter ???
Wie bitte soll 1 CUxD-Gerät 2 unterschiedliche CUxD-Adressen 28... und 40 ... haben :?: :roll: :evil:

Es sind 2 Geräte!

Steht auch so in der Anleitung:
66er hat geschrieben:
20.01.2019, 13:52
...

Falls noch nicht vorhanden, bitte ein Gerät (28) System Exec anlegen! Darüber werden die Befehle abgesetzt.


Anlegen einer CUxD (40) 16-Kanal Universalsteuerung als Schalter:
...
Zeile 1 im Zitat: Gerät1
Zeile 2 im Zitat: Gerät 2

Andere haben es hinbekommen. Sonst würde ich inzwischen an mir und meiner Beschreibung zweifeln.

naumannsascha
Beiträge: 19
Registriert: 03.05.2019, 09:14

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von naumannsascha » 07.05.2019, 22:44

Jetzt bin ich total verwirrt was soll ich den ansteuern hast du dafür eine anleitung ?

robbsen
Beiträge: 5
Registriert: 06.05.2019, 20:58

Re: Shelly1 mit Original-Firmware + CUxD inkl. Status

Beitrag von robbsen » 07.05.2019, 23:02

Hallo Stefan,

erstmal danke. Ich habe den "doofen Fehler" verstanden mit den zwei unterschiedlichen Geräten... hatte mich auch schon gefreut über die Lösung... und leider klappt es dennoch nicht :(. Sende gerne noch mal Screenshots.
!Skript zur Statusaktualisierung Shelly1 mit Originalfirmware (by 66er V1.0)
!Raumbezeichnung
var url = "http://192.168.2.62/relay/0/status";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("0");
!WriteLine(Antwort);

string word = "ison:";
integer word_laenge = word.Length();
integer word_position = Antwort.Find(word);
string daten = Antwort.Substr((word_position + word_laenge +4), 5);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -3));
Antwort = "true";
!WriteLine(daten);

var zustand = dom.GetObject("CUxD.CUX4000001:1.STATE").State();
!WriteLine(zustand);

if ((daten == "true," && (zustand != true) )
{dom.GetObject("CUxD.CUX4000001:1.SET_STATE").State(1);
!WriteLine("if ON");
}
if ((daten == "false") && (zustand != false)) {
dom.GetObject("CUxD.CUX4000001:1.SET_STATE").State(0);
!WriteLine("if off");
}
daten = "0";
Dennoch, fühl dich nicht veräppelt, ich z.B. scheine hier ein DAU- zu sein. Vielleicht kannst du die Anleitung noch einmal mit mehr ScreenShots ergänzen und wirklich Schrittweise machen. Die Einbindung der Shelly interessiert sicherlich einige User.

Liebe Grüße

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“