Beiträge von Beogradjanin
-
-
So,
ich konnte den Fehler etwas eingrenzen.
Hier scheint noch alles in Ordnung zu sein. Zumindest wenn ich das Programm manuell ausführe, dann stoppt z.B. die Markise auch bei 50%.
Code
Alles anzeigen!**** Var Büro Höhe=LEVEL setzen wenn BedienungsLEVEL angepasst wird!**** var Hoehe=dom.GetObject("Shelly25_Markise_Behanghoehe").Variable(); var Level=dom.GetObject("CUxD.CUX4000001:1.LEVEL").State(); Level=Level*100; WriteLine("Level= "+Level); ! Rollo auf LEVEL% mit Variable Hoehe dom.GetObject("Shelly25_Markise_Behanghoehe").Variable(Level); string url="http://192.168.178.170/roller/0?go~3dto_pos~26roller_pos~3d"; dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - '"#url#"'"+Level); WriteLine("Markise ausgefahren zu % = "+dom.GetObject("Shelly25_Markise_Behanghoehe").Variable()); !Ende Skript
Sobald ich den Wert in dem folgenden Bild manuell veränder oder eingebe, wird die Markise komplett ausgefahren:
Anmerkung 2020-01-26 123911.png
Hier funktioniert irgendwie der Stopp-Befehl nicht. Jemand eine Idee?
-
Hi, also, ich habe jetzt aktuell nur zwei Skripte am Laufen. Eins von dir und eins von der anderen Person, die ich auch oben verlinkt habe:
Skript 1 (das ist die Abfrage mit der "Timer Variable bei TIMER_GET > als 1s bei Änderung auslösen" -> von dir):
Code
Alles anzeigen!Skript zur Behanghöheaktualisierung (%) Shelly2.5 als Rollladenaktor mit Originalfirmware (c) by 66er V2.5.1 !Raumbezeichnung (nur zur Orientierung, ggf anpassen) !****Abfrage des Shelly2 als Rollladenaktor***** !In der folgenden Zeile IP des Shelly2 anpassen! var url = "http://192.168.178.170/roller/0"; !In den folgenden Zeilen die CUxD-Exec-Kanal anpassen 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(); string t = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State(); dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("0"); !WriteLine(Antwort); !WriteLine(t); !****Auswertung des Antwortstrings **** string s; foreach (s,t.Split (",")) { if (s.LTrim ("{").StartsWith ('"current_pos"')) { string e = (s.StrValueByIndex (":",1).RTrim ("}")); ! WriteLine(e); } } !**** Variable Rollladenbehanghöhe setzen**** !Variablennamen anpassen dom.GetObject("Shelly25_Markise_Behanghoehe").State(e); !Ende Skript
Skript 2 (Abfrage bei Markise Behanghöhe größer oder gleich 0,00% bei Änderung auslösen)
Code
Alles anzeigen!**** Var Büro Höhe=LEVEL setzen wenn BedienungsLEVEL angepasst wird!**** var Hoehe=dom.GetObject("Shelly25_Markise_Behanghoehe").Variable(); var Level=dom.GetObject("CUxD.CUX4000001:1.LEVEL").State(); Level=Level*100; !WriteLine("Level= "+Level); ! Rollo auf LEVEL% mit Variable Hoehe dom.GetObject("Shelly25_Markise_Behanghoehe").Variable(Level); string url="http://192.168.178.170/roller/0?go~3dto_pos~26roller_pos~3d"; dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - '"#url#"'"+Level); !WriteLine("Markise ausgefahren in % = "+dom.GetObject("Shelly25_Markise_Behanghoehe").Variable()); !Ende Skript
-
Hallo an Alle,
ich verweise zunächst auf diese tolle Funktion, die bei mir aber nicht so ganz klappt.
Shelly 2.5 als Rollladenaktor in Homematic einbinden - mit der Originalfirmware
Es geht um folgendes:
Ich habe ein Shelly 2.5 und nutze diese für meine Markise. Die Positionen sind auch bereits kalibriert und Alexa gekoppelt. Wenn ich nun sage: "Alexa, Markise 10%", dann fährt die Makise in diese Stellung (0% = ganz hochgefahren, 100% = ganz ausgefahren).
Bei Homematic möchte ich diese Funktion nun auch nutzen und habe den oben verlinkten Beitrag gefunden.
Leider klappt es nicht so ganz. Es ist nicht das Problem, dass die 100% bei Homematic ganz hochgefahren bedeuten und bei mir und meinem Shelly diese mit den 0% gleichzusetzen wären, sondern dass beim Ansteuerung über die Homematic Controls die Markise immer zu 100% ausfährt (bzw. 0% nach Homematic Logik).
Mein angepasstes Skript sieht wie folgt aus:Code
Alles anzeigen!**** Var Büro Höhe=LEVEL setzen wenn BedienungsLEVEL angepasst wird!**** var Hoehe=dom.GetObject("Shelly25_Markise_Behanghoehe").Variable(); var Level=dom.GetObject("CUxD.CUX4000001:1.LEVEL").State(); Level=Level*100; !WriteLine("Level= "+Level); ! Rollo auf LEVEL% mit Variable Hoehe dom.GetObject("Shelly25_Markise_Behanghoehe").Variable(Level); string url="http://192.168.178.170/roller/0?go~3dto_pos~26roller_pos~3d"; dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - '"#url#"'"+Level); !WriteLine("Markise ausgefahren in % = "+dom.GetObject("Shelly25_Markise_Behanghoehe").Variable()); !Ende Skript
Zeilen, die ich nicht so ganz begreife:
Codevar Level=dom.GetObject("CUxD.CUX4000001:1.LEVEL").State(); (...) string url="http://192.168.178.170/roller/0?go~3dto_pos~26roller_pos~3d"; dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - '"#url#"'"+Level);
So, meine Fragen wären:
1) Wo genau sollte ich am besten nach meinem Fehler suchen
2) Wie bekomme ich die 0% und die 100% vertauscht. Ich dachte da an sowas z.B. "Level = 100 - (Level * 100)" (um analog zu dem oben genannten Beispiel zu bleiben)
3) Muss ich im Shelly Aktionen freigeben?
-
-
Hallo,
ich habe irgendwie ein Problem mit der Aktualisierung der beiden Systemvariablen. Wenn ich z.B. das Skript für die Behanghöhe manuell ausführe, dann wird auch der korrekte Wert übermittelt. Automatisch funktioniert es leider nicht. Ebenso wird der Onlinestatus vermutlich nicht abgefragt, da dieser auf "offline" steht, obwohl das Gerät online ist.
Jemand eine Ahnung, was ich übersehen habe?