Hallo Community,
ich stocke gerade bei einer Umsetzung im Creator. Ich finde nicht das passende in den bisherigen Beiträgen. Vielleicht habt ihr eine Lösung.
Ich möchte folgendes:
1. Button anlegen.
2. Makro anlegen "Hifi Anlage an"
3. Makro anlegen "Hifi Anlage aus"
--------Bis dahin kein Problem. Und wenn ich mich damit zufrieden geben würde einfach über zwei Buttons und ohne Status die Makros zu schalten wäre alles gut :-)
4. Beide Makros auf den Button legen.
5. Bei jedem Klick auf den Button soll immer im Wechsel das eine oder das andere Makro auslösen.
6. Dabei den Status des Buttons zugleich auf "on" stellen wenn Makro "Hifi Anlage an" ausgelöst wurde und auf "off" stellen wenn das "hifi Anlage aus" Makro ausgelöst wurde.
Ich hoffe das war verständlich erklärt.
Danke vielmals vorab.
Edit 16.02.18:
So, schwere Geburt, aber dank der Hilfe von den Kollegen hier im Forum gelöst:
Da es ein sehr langer Verlauf ist fasse ich mal für alle Interessierten den Lösungsweg zusammen:
Vorab was man benötigt:
Eine CCU2
Ein Systemvariable auf der CCU2
Ein Programm auf der CCU2
Zwei Scipte für das Programm
Ein AIO GW (Bei mir V5+) mit einem laufenden Neo Server
Macros im AIO Creator
Einen Button im AIO Creator
Die Möglichkeit CCU2 Komponenten in den Creator zu laden. (HM Plugin)
(Ich vermute sehr stark man benötigt auch 1 Mal kurz einen NEO Cloud Zugang, das müsste aber Mediola nochmal bestätigen.)
1. Eine Systemvariable in der CCU2 anlegen. (Müsste auch mit einer auf dem AIO GW gehen, habe aber CCU2 bevorzugt.)
1a.
var s = "macroIdx";
string stdout;
string stderr;
string url="http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3&" # s # "=2";
system.Exec("wget -q -O - '"#url#"'" , &stdout, &stderr);
3. Wir importieren die Variable aus der CCU2 über den Gerätemanager vom AIO Creator.
4. Dann legen wir einen Button im Creator an
4a.
Dieser bekommt als Aktion und als Status die Systemvariable der CCU zugewiesen.
Bei jedem klick auf den Button wird also die CCU2 Variable getoggelt, also immer wieder geändert: AN AUS AN AUS AN AUS ...etc.
5. Wir sind fertig.
5a. Wenn wir nun den Button auf der AIO Fernbedienung drücken passiert:
- Button löst Änderung der SysVariable auf der CCU2 aus.
- Die geändert SysVariable wiederrum lsst das Programm in der CCU2 ablaufen und ändert den Status des Buttons in der Fernbedienung
auf "on".
- Das Programm löst das Script zum HTTP Aufruf beim AIO Gateway aus womit das AIO Macro zum einschalten ausgelöst wird.
Drücken wir erneut passiert dasselbe nur halt mit dem anderen Status der SysVariablen und dem anderen Macro auf "off".
6. Bemerkung.
Der Makroaufruf funktioniert durch einen HTTP Befehl an das AIO GW funktionierte bei mir zunächst nicht. Dann hatte ich mich einmal an
der NEO cloud angemeldet den HTTP Befehl abgesetzt. Dann funktionierte er. Dann habe ich die Cloud wieder deaktiviert und der HTTP
Befehl funktioniert weiterhin. Ich gehe also davon aus dass das GW einmal in der Cloud gewesen sein muss, kann dies aber nicht garantieren.
Von
Hallo zdenko33, auch Dir erstmal Danke !
In meiner macro_db geht das so los:
{"groups":[{"classid":"group","index":2,"name":"Hifi_Wohnzimmer","macros":[{"classid":"macro","index":1,"name":"Fernsehen_starten","pause":100,"inWidget":false,"commands":[{"classid":"comm
demnach wäre hier für das makro Fernsehen_starten:
groupIdx=2¯oIdx=1&auth=passwort
richtig ?
wenn ja, habe ich das schonmal verstanden.
Dann noch ein paar Fragen:
Was meinst Du mit eine CCU2 Variable in NEO importieren?
Bist Du sicher mit "auf aktualisierung" ? nicht besser "auf Änderung" ?
Zum Script:
Eine Grundsatzfrage: Muß oder sollte ich aus bestimmten Gründen für das Ganze HHTP aus CCU senden Thema CUXD benutzen? Geht es nicht auch ohne CUXD , ansonsten würd eich ich dann erstmal damit beschäftigen weil das bisher bei mir noch nicht installiert ist. Ich habe bislang nur befehle an die CCU gesendet (XML API) aber noch nicht VON der CCU aus gesendet.
Danke vielmals.
Von
Zuerst teste dein befehl für makros in einem browser...einfach makrogroop index usw ersetzen. Diese makros wenn von browser aus gestartet werden in das script einfügdn (komplette url)
Auf aktualisierung ist richtig...du druckst auf button und es geht auf on/off
Falls auf off dan wird das sonst teil ausgeführt
Variable wenn neu angelegt in ccu sind neo nicht bekannt..deswegen importieren...im geräte manage auf geräte importieren...homematic ccu wählen dann variablen und importieren klicken.
Dann sollte die variable bei aktion funktionieren.
In dem link was ich gepostet habe fragte einer wie sendet man http befehl von ccu aus und hat auch das script gepostet...das script musst du testen evtl geht bei dir...dann kein cuxd...ansonsten ist alles beschrieben mit cuxd und system.exec gerät...einfach lesen.
Von
Egal was ich machte der Browser gibt zurück:
{"XC_ERR":{"code":"000000","msg":"no such group"}}
Ob mit Port 80 oder ohne mit auth oder ohne mit user und passw. oder ohne.
immer der gleiche fehler.
Kann es denn überhaupt funktionieren? denn die makros liegen ja in dem ordner und auf den greift die fb zu aber nicht das aio gateway soweit ich weiß?!
Von
Lege dir eine gruppe im makro editor mit dem nahmen :
Hifi Anlage
In dieser gruppe erstellst du ein makro mit dem namen ein und ein makro mit dem namen aus
Dann bei ein deine befehle einfügen
Speichern
Bei aus befehle einfügen und speichern
Dann makro editor verlassen
In macro_db datei nach Hifi Anlage suchen und dort di gruppe finden. 1 u 2 sind dann für ein und aus
Die url muss so sein:
http://192.168.1.77/cmd?XC_FNC=DoMacroRM&groupIdx=13¯oIdx=1&auth=passwort
Von
13 musst du ändern in deine makrogruppe
Von
In meinem code oben ist ein fehler
Nach groupidx=13 kommt ¯oidx=1
Dort sind zeichen verschluckt
Von
:-) ja den fehler hatte ich vorher schon gefunden und ausgebessert und die makros sind auch schon längst drin, aber der befehl klappt nicht. als ip adresse nehme ich die ip adresse des AIO GW.
Von
http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3¯oIdx=1
=
{"XC_ERR":{"code":"000000","msg":"no such group"}}
und
http://192.168.0.67/command?XC_FNC=DoMacroRM&groupIdx=3¯oIdx=1
=
{XC_ERR}internal error
wie gesagt .... woher soll das AIO GW Wissen was es mit GROUP und MACRO Anfangen soll. Es reagiert ja nur auf die Fernbedienungsbfehle die im MAcro ablaufen und kennt die Macros nicht sebst.
Zumindest ist das mein Kenntnisstand.
Von
Das gateway v5plus kann die makros ausführen und das geht bei mir.
Von
Zu deinem kenntnissstand kann ich nichts sagen.
Von
Hast du den server aktiviert am gateway?
Von
Es gibt auch kostenloses cloudacess von mediola
Kannst du auf der startseite von dem forum lesen und dort gibt es den code.
Wenn du den eingerichtet hast. Kannst du im makro editor den haken kann in cloud exportiert werden. Dann im neo in cloud exportieren im menü wählen
Danach in die cloud gehen und dort kannst du gebauen befehl für die makros sehen...auch für lokale adressen...groupid und macroidx
Ein wenig lesen und umsetzen
Es gehr bei mir und es wird bei dir auch gehen
Wenn du es nicht schaffst...leg dir einfach 2 buttons und gut ist :)
Von
aber es funktioniert bei dir ohne cloud , ja ?
ich möchte keine cloud dienst nutzen. wenn nicht unabdingbar.
ja meinen neo server habe ich aktiviert. er ist ja auf dem 5+ vorinstalliert und musste nur noch "freigeschlatet" werden.
das ist mein link:
http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3¯oIdx=1
0.67 ist die IP des AIO GW.
Group id sollte 3 sein und macro 1 zumindest lese ich das so aus der macros_db:
"
{"classid":"group","index":3,"name":"TESTTTTTTTTTTT",
"macros":[{"classid":"macro","index":1,"name":"MAKROOOOOOOOOFFF",
"
ich habe im V5 Plus Gateway als USER = user stehen (war schon so)
als passwort (nichts eingetragen)
also habe ich in dem link auth. weggelassen.
trotzdem kommt der fehler so wie oben
Von
Es funktioniert ohne cloud....das mit cloud ist nützlich um den direkten befehl zu sehen.
Wie gesagt du hast alle infos um es umzusetzen.
Am besten du konfigurierst dein gateway im config tool neo. Dort vergibbst du auch ein passwort für das gateway. Richtest dir test cloud acces ein und findest die befehle. Danach brauchst es nicht nutzen
Mehr kann ich nicht für dich tun.
Gruss
Von
Also das ist ziemlich seltsam:
ich habe die cloud aktiviert und ein passwort gestezt im GW.
die befehle hochgeladen und mit dem o.g befehl von mir abgegelichen.
ALLES IDENTISCH.
Befehl erneut asugeführt = FUNKTIONIERT !
http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3¯oIdx=2&auth=1234
Dann Haken beim Konfig Tool Neo "Cloud" wieder raus genommen.
Befehl getestet. Funktioniert immer noch.
(Offtopic: Ist es nicht seltsam, wenn ich den haken rausnehme und neue Makros versuche hochzuladen in die cloud, das dies trotzdem funktioniert ?!)
Dann passwort wieder aus dem GW rausgenommen.
Befehl getestet nur ohne "auth" -> Funktioniert !!!
(Offtopic: Nachdem nun das PW gelöscht wurde funktioniert auch das uploaden nicht mehr.)
Nochmal gestestet, nochmal mit
http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3¯oIdx=1
= Funktioniert
http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3¯oIdx=1 (von oben im verlauf kopiert)
der SELBE Link funktioerte vor der einmaligen cloud aktivierung nicht und jetzt nachdem cloud einmal aktiv war funktioniert er.
Ich weiß nicht warum, aber so ist es..........
und dann mit einem anderen makro getestet welche jedoch nie in der cloud hochgeladen war und seihe da:
FUNKTIONIERT.
Das könnte sich von Mediola mal jemand anschauen :-)
Denn es sihet sehr stark danach aus als müsste das GW einmla in der Cloud gewesen sein damit diese befehle funktionieren. anders kann ichmir den hergang nicht erklären.
Danke aber an alle für die bisherige Unterstützung.
Damit müsste ich es nun eigentlich lösen können. ich berichte.
Von
Ok
Von
Ich warte :)
Von
sooooooo :-( weil ich nicht nur fragen sonden auch lernen will habe ich jetzt 3 stunden versucht ein fuxxxxing problem zu lösen aber bin gescheitert.
ich war in 10 minuten fertig mit diesem thema.
fertig heist , ich hatte alle was ich brauche nur das script im programm funktionierte nicht.
ich habe dann auch schnell gemerkt warum.
NÄMLICH aus dem gleichen grund warum du zunächst einen "Fehler" in deinem code oben hattest.
Ein "¯" wandelt CCU2 im script von selbst in den UTF-8 code "¯" um.
Damit fuktioniert der Befehl natürlich nicht. Ich habe in alle Richtungen gesucht und ausprobiert. Aber ich finde keine Lösung bzw. keinen Weg Homematic zu überzeugen dies nicht zu tun.
Hast du / habt ihr einen tip?
Danke :-)
Von
so musste das gehen:
var s = "macroIdx";
var url = "http://192.168.1.77/cmd?XC_FNC=DoMacroRM&groupIdx=13&" # s # "=1&auth=passwort";
var cURL="LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(cURL#" -s -m 5 '"#url#"'");
Von
Ich mach das ja gerade erst ohne cuxd und nur wenn es sein muss will ich cuxd installieren.
ich versuch mal deine idee in meinen code zu bauen, der momentan noch so aussieht:
string stdout;
string stderr;
string url=("http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3¯oIdx=2");
system.Exec("wget -q -O - "#url, &stdout, &stderr);
Von
versuche erstmal mit script testen ob überhaupt der aufruf gelingt mit deinem script
string stdout;
string stderr;
string url=("http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3¯oIdx=2");
system.Exec("wget -q -O - "#url, &stdout, &stderr);
normaler weise wird der code beim testen nicht in das macron zeichen umgewandelt
also wenn das script ausgeführt wird dann einfach das testen
string s = "macroIdx";
string stdout;
string stderr;
string url=("http://192.168.1.77/cmd?XC_FNC=DoMacroRM&groupIdx=13&" # s # "=1&auth=passwort");
system.Exec("wget -q -O - "#url, &stdout, &stderr);
Von
script testen gibt es in webui wenn du programme wählst, dann gabz unten
Von
wie hast du es geschafft die cloudaccess einzurichten ohne dem gateway ein passwort zu setzen????
Von
Der Code:
string stdout;
string stderr;
string url=("http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3¯oIdx=2");
system.Exec("wget -q -O - "#url, &stdout, &stderr);
gibt unter script testen keinerlei reaktion bei ausführen im output und die aktion wird auch nicht ausgelöst.
(( nein, ich hatte die cloud aktiviert und ein passwort im gw gesetzt, danach aber wie oben beschrieben den haken bei cloud wieder rausgenommen und dennoch ließen sich makros hochladen in die cloud, erst nach dem ich das pw wieder rausgenommen habe ging auch das hochladen nicht mehr.)
Von
ja in dem link ganz oben in meiner antwort, gibt es probleme mit solchem code in der ccu, deswegen cuxd
hier zum nachlesen
https://technikkram.net/2017/08/homematic-raspberrymatic-addon-cux-daemon-cuxd-system-exec-ersetzen
Von
und hier nochmal ohne cuxd!!!
das funktioniert bei mir
var url = "http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3¯oIdx=2";
string stdout;
string stderr;
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
Von
ja habe ich gerade auch rausgefunden es gfehlt oben #""
Von
im script testen läufts jetzt muß ich nur noch das mit der var hinkriegen wegen des MACRO zeichens
ich teste aber vorher nochmal den kompleten code den du hier nun drin hast
Von
var s = "macroIdx";
var url = "http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3&" # s # "=2";
string stdout;
string stderr;
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
Von
sooooooooooooooo
var s = "macroIdx";
string stdout;
string stderr;
string url="http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3&" # s # "=2";
system.Exec("wget -q -O - '"#url#"'" , &stdout, &stderr);
diese version funktioniert !
jetzt bastel ich noch das programm zu ende und melde mich
Von
so musste es auch gehen
var s = "macroIdx=2";
var url = "http://192.168.0.67/cmd?XC_FNC=DoMacroRM&groupIdx=3&" # s # ;
string stdout;
string stderr;
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
Von
ok
Neuen Kommentar hinzufügen