Beiträge von SeRef
-
-
Hallo Olli,
Danke für die Rückmeldung. Es freut mich, dass es geklappt hat.
Bei HomeMatic war es von EQ3 anfänglich nicht beabsichtigt fremde Geräte einzubinden. Daher ist es auch nur über den Umweg CUxd möglich und dabei klemmt es halt hier und da etwas.
Im Gegensatz dazu ist ioBroker von Anfang an dazu gedacht gewesen Geräte verschiedener Hersteller miteinander zu Verbinden. Auch sind die Möglichkeiten einer Visualisierung deutlich besser.
Wenn jemand neu anfängt, nicht unbedingt HomeMatic Geräte einsetzen möchte und
/oder auf Visualisierung viel Wert legt, ist mit ioBroker meiner Meinung nach besser bedient.Viele Grüße
-
Hallo Olli,
da ich keinen DW2 habe, kann ich nur Vermutungen anstellen.
Wenn ich mir den Screenshot anschaue, denke ich, dass der DW2 je nach Helligkeit ein anderes Action auslöst. Da du aber den Status ohne Abhängigkeit haben möchtest, wirst du den Befehl für offen bei allen drei OPEN WHEN eintragen müssen.
Gruß
-
Hups, da war doch noch was ...
Bis jetzt sind alle meine Anforderungen an Shelly und HomeMatic erfüllt. Jetzt versuche ich die Shelly DW2 mit den Funktionen "open-close", eventuell "tilt", "temp" und wenns noch passt "light".
Die Darstellung von "open-close" sollte sich über die Actions direkt übertragen lassen. Es gibt von CUxD ein entsprechendes Gerät mit passender Symbolik (40 als SHUTTER). Für den Rest wirst du aber nicht um ein Skript herumkommen.
Gruß
-
Hallo Olli,
vielen Dank für deine Unterstützung.
Sehr gerne. Ich war eh gerade dabei einen Shelly vorzubereiten und da ich die Funktion Detached noch nicht kannte war es für mich auch sehr interessant.
Also das Thema Auto "on" ist erledigt. Habe ich rausgenommen. Weiß nicht was mich da geritten hat.
Sowas kommt schon mal vor, wenn man sich erst mal in etwas verrannt hat ...
TOP. Funktioniert einwandfrei. Du bist der Größte.
Freut mich zu lesen. Aber der Größte ist doch weit übertrieben.
Aber sag mal, was genau bewirkt "DPByHssDP"
Der Zugriff auf das Ojektmodell ist sehr umfangreich, daher nur mal in Kürze.
Es gibt verschiedene Möglichkeiten einen Datenpunkt anzusprechen und jede hat ihre eigene Syntax.
Das geht zum einen über die ISE_ID, die für jeden Datenpunkt eindeutig beim Anlegen vom System vergeben wird. Z.B. dom.GetObject(1234).State(1) (1234 ist hier nur ein Platzhalter). Dann geht es noch über die Adresse, dom.GetObject(CUxD.CUX2801001:1.SET_STATE").State(1).
Eine dritte Möglichkeit ist über den Namen. Wenn man über den Namen auf einen Datenpunkt von einem Gerät (nicht Systemvariablen!) und nicht auf STATE zugreifen möchte, geht es nur über DPByHssDP (dom.GetObject(„Test:1“).DPByHssDP(„SET_STATE“).State(1)).
Ein Kombinieren der verschiedenen Möglichkeiten wie du es versucht hast über Namen und Adresse (dom.GetObject(„Test:1.SET_STATE“).State(1)) ist nicht möglich.
Für weitere Informationen gibt es von EQ3 hierzu eine HomeMatic-Script Dokumentation in vier Teilen als pdf zum Herunterladen.
Ist zum Teil nicht gleich alles verständlich aber nach und nach erschließt sich einem so einiges.
Gruß
-
zu 1
muss ich so machen, damit wenn der Button in der APP betätigt wird das Relay nur 1 sek. anzieht. Der Garagentoröffner wird halt mit einem kurzen potentialfreien Kontakt (Taster) aktiviert. Wenn der Taster ein Schalter wäre, würde das Tor bei erneutem betätigen nicht stehen bleiben.
Dazu reicht es aber AUTO OFF zu aktivieren.
Wenn du auch AUTO ON aktivierst, kann es passieren (wenn du innerhalb der einen Sekunde ein zweites mal schaltest), dass das Relais vom zweiten Schaltbefehl vor Ablauf der Zeit ausgeschaltet wird und vom ON Timer nach einer Sekunde dauerhaft eingeschaltet wird. Jeder weitere normale (nicht doppelte) Schaltbefehl lässt dann das Relais nur für eine Sekunde abfallen und wird vom Timer wieder eingeschaltet.
Je nach Torantrieb kann das dazu führen, das der Antrieb von keiner anderen Quelle (originale Fernbedienung, Wand bzw. Schlüsseltaster, ...) mehr bedienbar ist.
Gruß
-
Hallo Olli,
wenn du den Eingang, der nicht den Ausgang schaltet, an die Homemati c weitergeben möchtest, musst du den Befehl unter "Button switched ON (OFF) url" eingeben.
Getestet habe ich, da ich (noch) keinen Shelly1 habe, mit einem 2.5. Denke aber, dass es gleich sein wird. Da muss der Befehl in "Button switched ON url"
http://192.168.2.97:8181/x.exe?ret=dom.GetObject(%22Test:1%22).DPByHssDP(%22SET_STATE%22).State(1)
und in "Button switched OFF url"
http://192.168.2.97:8181/x.exe?ret=dom.GetObject(%22Test:1%22).DPByHssDP(%22SET_STATE%22).State(0)
lauten.
Gruß
-
Hallo Rolf,
das CUxD-Gerät in dem von dir verlinktem Bild ist, wie man an der Seriennummer erkennen kann, ein System(28) als Control Ping und keine (40) Universalsteuerung. Damit solltest du mit der Aussage
Ich glaub ich hab einen Fehler finden können.
Im CUxD28 musste man "Ping" anstelle "Exec" einstellen, richtig?
recht haben. Leider weiß ich nicht auf welchen Beitrag genau du dich beziehst, kann daher nicht mehr dazu sagen.
Gruß
-
-
-
Wenn man Programme von extern startet und damit (oder mit mehreren) gegensätzliche Funktionen im weiteren Ablauf auf der CCU aktiviert, läuft man Gefahr in eine Endlosschleife zu geraten.
Okay, sowas kann einem nicht nur passieren wenn man mit ProgramExecute() von extern ein Progamm startet. Ich hatte es erst so verstanden, dass sich die Aussage allein auf "von extern" bezog.
Von daher bin ich ganz deiner Meinung, dass man (nicht nur) mit der Funktion sorgsam umgehen sollte.
Gruß
-
Gut dokumentierte Lösung.
Danke!
Dem geneigten Einsteiger sollte bewußt sein, dass bei mehrfacher Nutzung dieser Option durch "amoklaufende" Trigger eine CCU schnell mal erlahmen kann.
Ich habe diesbezüglich noch keine schlechten Erfahrungen gemacht. Hast du da mal ein Beispiel für mich?
Ansonsten ist es auch kein Problem das Ganze dahingehend umzustellen, dass vom Shelly eine Variable geändert wird, die dann wiederrum das Programm triggert.
Gruß
-
So, manchmal kommt es anders als man denkt und hat doch eher Zeit.
1. Wenn noch nicht geschehen muss CUxD Installiert werden. Ich habe für diese Anleitung Version 2.5.1 (aktueller Stand heute) in Verbindung mit piVCCU 3.53.34 verwendet. Auf dem Shell 2.5 ist die Firmware 1.9.4.
2. Erstellen eines neuen CUxD-Gerätes:
Gerätetyp: (28) System
Funktion: Exec
Control: Jalousie
Seriennummer, Name und Geräte-Icon können frei gewählt werden. Die Angaben/Auswahl hat keinen Einfluss auf die Funktion.
Edit: Wer die App Home24 verwenden möchte, muss bei Geräte-Icon einen Jalousieaktor auswählen (lässt sich auch nachträglich ändern). Ansonsten wird er in der App nicht angezeigt.
3. Das eben erstellte CUxD-Gerät muss noch eingestellt werden:
Die nicht vollständig sichtbaren Einträge sind
BLIND|CMD_SHORT:
wget -q -O - -t 1 -T 10 'http://<IP>/roller/0?go~3dstop'
BLIND|CMD_LONG:
wget -q -O - -t 1 -T 10 'http://<IP>/roller/0?go~3dto_pos~26roller_pos~3d$VALUE$/10'
Für <IP> muss die IP-Adresse des Shelly eingetragen werden.
4. Der erste Test.
Wenn alles richtig eingestellt ist, sollte der Rolladen sich jetzt unter Status und Bedienung > Geräte bedienen lassen.
Damit aber auch der Status der CCU bekannt ist, wenn von anderer Stelle (Shelly APP, Schalter/Taster, WebUI, …) gesteuert wurde, ist noch Weiteres notwendig.
5. Auf der CCU ist ein einfaches Programm ohne irgendwelche Bedingungen zu erstellen.
Das Skript:
Code
Alles anzeigen! Shelly 2.5 auslesen Position 0.1.2 ! Rollladen Abstellraum Prog ! ******************************************************** string vIp = "192.168.xxx.xxx"; ! IP des Shelly2.5 string vName = "Rollladen Abstellraum"; ! Name des CUxD Rolladenaktors ! ******************************************************** string stdout = ""; string stderr = ""; system.Exec("wget -q -O - -t 1 -T 10 'http://" # vIp # "/roller/0'", &stdout, &stderr); stdout = stdout.Replace("}", ","); if (stdout.Contains('"current_pos"')) { stdout = ((stdout.StrValueByIndex('"current_pos"', 1).StrValueByIndex(',', 0).StrValueByIndex(':', 1)).ToFloat() / 100).ToString(2); dom.GetObject(vName).DPByHssDP("SET_STATE").State(stdout); } else { ! Hier ließe sich eine Systemvariable für Onlinestatus auf false setzen }
IP und Name des Rollladenaktors muss angepasst werden!
6. Jetzt muss noch die ID des Programmes ermittelt werden. Dazu kann folgendes Skript unter „Skript testen“ ausgeführt werden:
Codestring vProgname = "Rollladen Abstellraum Prog"; WriteLine((dom.GetObject(ID_PROGRAMS)).Get(vProgname).ID());
Name des Progamms muss angepasst werden!
In meinem Fall ist es die 1837.
7. Im Shelly muss nun bei "I/O URL actions -> Roller STOP url" folgendes eingetragen werden:
http://<IpCCU>:8181/x.exe?y=dom.GetObject(<ID>).ProgramExecute()
Für <IpCCU> ist die IP-Adresse der CCU einzutragen und bei <ID> die unter 6. Ermittelte ID.
Testweise kann man die url auch in einem Browser eingegeben werden. Zumindest im Firefox.
Bei Problemen liegt das oft an den Einstellungen der CCU-Firewall. Der Befehl wie er hier angegeben ist funktioniert nur, wenn über den Assistenten die Firewall auf „Relaxed“ gestellt wurde. Wer „Maximal gesichert“ nutzen möchte muss manuel den Port 8181 freigeben und mit dem Befehl noch einen Benutzer und das dazugehörige Passwort angeben.
http:// <Nutzer>:<Passwort>@<IpCCU>:8181/x.exe?y=dom.GetObject(<ID>).ProgramExecute()
Das sollte soweit alles sein um den Rollladen steuern zu können und auch den aktuellen Stand in der CCU zu haben. Möglich wäre noch eine zykliche Abfrage des Status. Dazu einfach im Programm ein Zeitmodul hinzufügen. Ich habe es bei mir nicht mit drin und habe in den 6-8 Wochen in denen ich einen Shelly testweise verwende keine Probleme festgestellt. Allerdings schaue ich wenn es „sein Ding tut“ auch nicht regelmäßig auf die WebUI um zu kontrollieren.
Wenn auch der Onlinestatus in einer Variablen zur Verfügung stehen soll und du es nicht hinbekommst melde dich bitte noch mal.
Bei meinem Test-Shelly bin ich dabei noch das ein oder andere umzusetzen, z.B. Energieverbrauch in Variablen dokumentieren oder bei Hinderniserkennung den Rollladen aus der Automatik herauszunehmen. Bei nur einem installiertem funktioniert das schon recht gut, bin mir aber nicht sicher ob mein Lösungsweg (per Schleife in einem Skript für alle) auch bei mehreren noch reibungslos funktioniert.
Wenn noch irgendwelche Fragen sind, einfach fragen.
Viel Erfolg und Gruß
-
Hallo Olli,
ich werde demnächst für einen Bekannten seine noch zu installierenden Rollläden automatisieren. Da wir uns einig geworden sind, dies mit Shelly's und einer CCU3 zu machen, werde ich vorab auf meinem Testsystem eine neue Installation einrichten. Wenn Interesse besteht, kann ich dokumentieren wie eine Bedienung und Anzeige analog zu den original HM Aktoren funktioniert. Also mit den Tasten Auf/Ab/Stopp wie auch der Eingabe/Anzeige einer Prozentzahl.
Da ich noch ein anderes Projekt habe (meine Schwester hat sich eine Wohnung gekauft), kann ich dir nicht genau sagen, wann ich dazu kommen werde. Aber ich denke innerhalb der nächsten zwei Wochen, da die Rollläden dann montiert werden sollen.
Gruß
-
Stimmt. Und das
ist dann wieder ein Skript.
Das ist richtig. Um an die aktuelle Position zu kommen wird man um ein Skript nicht herumkommen. Eine Möglichkeit ohne Skript wäre z.B. ioBroker, an den der Shelly per mqtt angemeldet ist und wiederum der Wert an die CCU übertragen wird.
Hallo SeRef, kannst du mir genauere Informationen zu diesem Programm geben. Das hört sich zumindest nach dem an, was ich eigentlich brauche.
Sieht das in etwa so aus?:
VG
Olli
Was da noch fehlt ist das Sripkt zum Auslesen der Position über die Api.
Auch wird es leider mit dem von dir verwendetem CuXD-Gerät nicht wie gewünscht funktionieren. Zumindest habe ich es erst vernünftig mit dem CUxD Gerätetyp: (28)system, Funktion: exec, Control: Jalousie hinbekommen.
Hast Du dir die Variante von Fossi99 mal angeschaut? (>LINK<).
Gruß
-
Hallo Olli,
Vom NutzerFossi99 gibt es auch noch eine Variante. Die ist hier zu finden.
Ich kann dir aber nichts genaues zu der Variante sagen da ich es erst gesehen hatte nachdem ich meine Lösung umgesetzt habe.
Du kannst current_pos nicht mittels Actions übermitteln, sondern es müßte der Wert per Skript zyklisch abgefragt werden, so wie es auch Friek gepostet hat.
Aber du kannst ein Programm per Actions auf der CCU starten, das per Api die aktuelle Position ausließt. So passt der Wert sofort nach Stop vom Rollladen und nicht erst nach dem zyklischem Abfragen.
Gruß -
Stimmt, das hatte ich nicht bedacht.
-
Ohne es selber getestet zuhaben, eventuell kannst du eine Art Reihenschaltung machen. Der erste Shelly bekommt seinen Befehl vom Taster und gibt ihn an z.B. 2 Shelly's per Actions wie von Schubbie beschrieben weiter. In diesen trägst du dann weitere Shelly's ein, so das der Befehl von einem zum anderem weiter gereicht wird.
-
vielen Dank für den Hinweis! Je mehr man sucht und drauf starrt, desto verschwommener wird's! Danke!
Gerne, das kommt mir sehr bekannt vor ?
-