Seite 8 von 11

Re: Homematic - Einbindung

Verfasst: Sa 20. Mai 2017, 12:33
von rudolf.kiepetz
Hallo Grüße aus Österreich,
mich würde auch interessieren ob's schon jemand geschafft hat, das CuxD-Script
mit User und Passwort erfolgreich umzusetzen.
Ich habe Eure Scrips an meine Homematic angepasst - läuft auch.
Leider nur, wenn ich User und Passwort deaktiviere - bei aktiver Security
bekomme ich nur einen leeren String zurück,
lg
rudi.

Re: Homematic - Einbindung

Verfasst: Di 30. Mai 2017, 13:08
von Andronid
Hallo Tobias,
deine Homeputer Anbindung gefällt mir sehr. Da ich auch versuche, möglichst alles in Homeputer abzubilden, kommt mir deine Variante sehr entgegen. Mir ist auch aufgefallen, dass es wirklich sehr speziell auf deine Bedürfnisse abgestellt ist, was ja auch normal ist und du es auch so beschrieben hast. Deshalb habe ich mal dazu ein paar Fragen zum besseren Verständnis.
- Wozu prüfst du alle 2 Stunden von 01:00 Uhr bis 09:00 Uhr? Fährt dein Mäher dann erst ab 09:00:01 Uhr auf den Rasen?
- Was ist "Makro_Aktiv" bzw. welches Gerät steckt dahinter?
Das andere ist soweit klar. Nun zur Kür:
Du hast ein "Makro_CCU_Wetterdaten" , von dort holtst du die "Regenmenge1h". Nutzt du da zufällig Netatmo?
Was bedeutet die IP Adresse "192.168.0.20:50000"?
Vielleicht erst einmal soweit. Ich freue mich schon auf deine Antwort.

Re: Homematic - Einbindung

Verfasst: Di 30. Mai 2017, 21:47
von Tobias78
Hey,
Mein Mower fährt tatsächlich nicht Nachts, daher rufe ich Nachts nicht ganz so oft den Status ab. Leider stürzt Homeputer nach x geturl aufrufen ab, daher die Reduzierung Nachts.

Makro_Aktiv ist nur ein "Schalter" um zu testen, wie lange das Makro läuft. Debuggen für Anfänger also. -> einfach löschen.

Ich habe in einer Installation auch Netatmo über openweathermap eingebunden, andere Wetterstationen sind wesentlich zuverlässiger. Da nutze ich aber auch nur die Makros anderer aus dem Homematic Forum.

Die IP Adresse ist ein Android Tablet in der Küche. Mit dem Befehl wird eine Sprachnachricht an das Gerät gesendet - zur Warnung.
Gruß, Tobias.

Re: Homematic - Einbindung

Verfasst: Mi 31. Mai 2017, 21:45
von braindead
rudolf.kiepetz hat geschrieben: Sa 20. Mai 2017, 12:33mich würde auch interessieren ob's schon jemand geschafft hat, das CuxD-Script mit User und Passwort erfolgreich umzusetzen.
Hallo zusammen,

ich habe das Script hier aus dem Forum etwas angepasst und gleichzeitig User und Passwort eingebaut. User und Passwort funktionieren bei mir problemlos.

Code: Alles auswählen

string Url = 'http://192.168.2.8/json?cmd=status';
string User = 'USER';
string Password = 'PASSWORT';

! Folgende Systemvariablen sind in Homematic anzulegen
! Mähroboter.Status      	Status wird ermittelt;Parken;Mähen;Heimweg;Laden;Suchen;Fehlerstatus;Schleifensignal verloren
! Mähroboter.Status-Zeit
! Mähroboter.Modus		Auto;Manuell;Home;Demo
! Mähroboter.Batterie
! Mähroboter.Laufzeit
! Mähroboter.Timer-Status	Deaktiviert;Aktiv;Standby
! Mähroboter.WLAN
! Mähroboter.LastSync

string stdout;
var posStart;
var posEnd;
string pos;
string dummy;
var substring;


dom.GetObject("CUxD.CUX2801001:7.CMD_SETS").State("wget --http-user=" # User # " --http-password=" # Password # " -q -O - '" # Url # "'");
dom.GetObject("CUxD.CUX2801001:7.CMD_QUERY_RET").State(1);
string stdout= dom.GetObject("CUxD.CUX2801001:7.CMD_RETS").State();


! Ist der Mähoboter erreichbar?
if(stdout == '') {
	! Der Mähroboter ist nicht erreichbar
	dom.GetObject('Mähroboter.Status').State('Offline');
	dom.GetObject('Mähroboter.Status-Zeit').State('');
	dom.GetObject('Mähroboter.Modus').State('');
	dom.GetObject('Mähroboter.Batterie').State('');
	dom.GetObject('Mähroboter.Laufzeit').State('');
	dom.GetObject('Mähroboter.Timer-Status').State('');
	dom.GetObject('Mähroboter.WLAN').State('');
	dom.GetObject('Mähroboter.LastSync').State(system.Date("%d.%m.%Y %H:%M:%S"));

	quit;
}

! Status abfrage
posStart = '{"status": ';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

if(substring == '0') { substring = 'Status wird ermittelt'; }
if(substring == '1') { substring = 'Mähroboter parkt'; }
if(substring == '2') { substring = 'Mähroboter mäht'; }
if(substring == '3') { substring = 'Mähroboter sucht die Ladestation'; }
if(substring == '4') { substring = 'Mähroboter lädt'; }
if(substring == '5') { substring = 'Mähroboter sucht (wartet auf das Umsetzen im manuellen Modus)'; }
if(substring == '7') { substring = 'Fehlerstatus'; }
if(substring == '8') { substring = 'Schleifensignal verloren'; }
if(substring == '16') { substring = 'Mähroboter abgeschaltet'; }
if(substring == '17') { substring = 'Mähroboter schläft'; }

dom.GetObject('Mähroboter.Status').State(substring);
WriteLine('Status: ' # substring);


! Status-Zeit abfragen
posStart = '"duration": ';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

substring = (substring.ToInteger() / 60) # ' Minuten';

dom.GetObject('Mähroboter.Status-Zeit').State(substring);
WriteLine('Status-Zeit: ' # substring);


! Modus abfragen
posStart = '"mode": ';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

if(substring == '0') { substring = 'Auto'; }
if(substring == '1') { substring = 'Manuell'; }
if(substring == '2') { substring = 'Home'; }
if(substring == '3') { substring = 'Demo'; }

dom.GetObject('Mähroboter.Modus').State(substring);
WriteLine('Modus: ' # substring);


! Batterie abfragen
posStart = '"battery": ';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

substring = substring # '%';

dom.GetObject('Mähroboter.Batterie').State(substring);
WriteLine('Batterie: ' # substring);


! Laufzeit abfragen
posStart = '"hours": ';
posEnd = '}';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

substring = substring # ' h';

dom.GetObject('Mähroboter.Laufzeit').State(substring);
WriteLine('Batterie: ' # substring);


! Timer-Status abfragen
posStart = '"timer": {"status": ';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

if(substring == '0') { substring = 'Deaktiviert'; }
if(substring == '1') { substring = 'Aktiv'; }
if(substring == '2') { substring = 'Standby'; }

dom.GetObject('Mähroboter.Timer-Status').State(substring);
WriteLine('Timer-Status: ' # substring);


! WLAN abfragen
posStart = '"wlan": {"signal": ';
posEnd = '}';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

substring = substring # ' dBm';

dom.GetObject('Mähroboter.WLAN').State(substring);
WriteLine('WLAN: ' # substring);


! LastSync setzen
dom.GetObject('Mähroboter.LastSync').State(system.Date("%d.%m.%Y %H:%M:%S"));
Bei mir haben User und Passwort keine Sonderzeichen. Vielleicht hilft es ja weiter bei denjenigen wo es nicht funktioniert.

Gruß,
Markus

Re: Homematic - Einbindung

Verfasst: So 4. Jun 2017, 19:13
von ernst.lalla
Hallo,

ich habe seit heute einen R50Li mit WLAN :-))
Dank eurer Anleitungen und Beispiele habe ich ihn auch in meine Homematic integrieren können.

Im Moment habe ich noch eine Frage zu folgendem Code:
********************************
string stderr;
string stdout;
string url="http://192.168.0.67/xml?cmd=mode&mode=auto";
system.Exec("wget -q -O - "#url, &stdout, &stderr);
***********************************

Hiermit wird der Mäher auf den Automodus gestellt.

Was muss ich machen um den Mäher anzuhalten (Stop) oder wieder zu Starten (Start)
Ich habe versucht 'Auto' gegen start oder Stop zu tauschen, habt nicht funktioniert.
Kann mir jemand helfen?

mfg
Ernst Lalla

Re: Homematic - Einbindung

Verfasst: So 4. Jun 2017, 20:04
von PaulMerkelbach
versuch es mal mit
http://xxx.xxx.xx.xx/xml?cmd=stop
alternativ = ... start

Aufruf mit Modus ist entweder "home" oder "Auto" oder "man"

Gruß
PM

Re: Homematic - Einbindung

Verfasst: Mo 5. Jun 2017, 12:57
von Sprite01
braindead hat geschrieben: Mi 31. Mai 2017, 21:45 ich habe das Script hier aus dem Forum etwas angepasst und gleichzeitig User und Passwort eingebaut. User und Passwort funktionieren bei mir problemlos.
Hallo braindead,
ich habe dein angepasstes Script nun auch bei mir angepasst ... :D
Sonst hat sich meine CCU2 bei der Verwendung von User/Passwort sofort aufgehangen,
dies macht es jetzt nicht mehr. Dafür schon mal meinen herzlichen Dank.

Allerdings habe ich mit dem Timer-Status ein Problem, hier ollte aj nur eine Zahl (0, 1, 2) auftauchen.
Bei mir ist ein "}" dahinter. Hast du eine Idee wie ich dies noch weg bekomme ?
!*********Timer-Status abfragen*********
posStart = '"Timer": {"Status": ';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

if(substring == '0') { substring = 'Deaktiviert'; }
if(substring == '1') { substring = 'Aktiv'; }
if(substring == '2') { substring = 'Standby'; }

dom.GetObject('R40Li-Timer-Status').State(substring);
WriteLine('Timer-Status: ' # substring);
r40li_neu.JPG
r40li_neu.JPG (47.97 KiB) 7070 mal betrachtet
Nachtrag:
Wenn ich aus posEnd = ','; ein posEnd = '}'; mache scheint es zu funktionieren

Re: Homematic - Einbindung

Verfasst: Mo 5. Jun 2017, 20:35
von braindead
Das Problem ist mir auch schon aufgefallen. Es liegt daran, dass Robonect den nächsten Timer zurück gibt, wenn der Mäher für heute fertig ist. Ist er für heute noch nicht fertig, dann fehlt diese Information.

Ich habe den Code so angepasst, dass auf , und } geprüft wird. Bei mir funktioniert es seitdem ohne Probleme.

Code: Alles auswählen

string Url = 'http://192.168.2.8/json?cmd=status';
string User = 'USER';
string Password = 'PASSWORT';

! Folgende Systemvariablen sind in Homematic anzulegen
! Mähroboter.Status      	Status wird ermittelt;Parken;Mähen;Heimweg;Laden;Suchen;Fehlerstatus;Schleifensignal verloren
! Mähroboter.Status-Zeit
! Mähroboter.Modus		Auto;Manuell;Home;Demo
! Mähroboter.Batterie
! Mähroboter.Laufzeit
! Mähroboter.Timer-Status	Deaktiviert;Aktiv;Standby
! Mähroboter.WLAN
! Mähroboter.LastSync

string stdout;
var posStart;
var posEnd;
var posEndAlt;
string pos;
string dummy;
var substring;


dom.GetObject("CUxD.CUX2801001:7.CMD_SETS").State("wget --http-user=" # User # " --http-password=" # Password # " -q -O - '" # Url # "'");
dom.GetObject("CUxD.CUX2801001:7.CMD_QUERY_RET").State(1);
string stdout= dom.GetObject("CUxD.CUX2801001:7.CMD_RETS").State();


! Ist der Mähoboter erreichbar?
if(stdout == '') {
	! Der Mähroboter ist nicht erreichbar
	dom.GetObject('Mähroboter.Status').State('Offline');
	dom.GetObject('Mähroboter.Status-Zeit').State('');
	dom.GetObject('Mähroboter.Modus').State('');
	dom.GetObject('Mähroboter.Batterie').State('');
	dom.GetObject('Mähroboter.Laufzeit').State('');
	dom.GetObject('Mähroboter.Timer-Status').State('');
	dom.GetObject('Mähroboter.WLAN').State('');
	dom.GetObject('Mähroboter.LastSync').State(system.Date("%d.%m.%Y %H:%M:%S"));

	quit;
}

! Status abfrage
posStart = '{"status": ';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

if(substring == '0') { substring = 'Status wird ermittelt'; }
if(substring == '1') { substring = 'Mähroboter parkt'; }
if(substring == '2') { substring = 'Mähroboter mäht'; }
if(substring == '3') { substring = 'Mähroboter sucht die Ladestation'; }
if(substring == '4') { substring = 'Mähroboter lädt'; }
if(substring == '5') { substring = 'Mähroboter sucht (wartet auf das Umsetzen im manuellen Modus)'; }
if(substring == '7') { substring = 'Fehlerstatus'; }
if(substring == '8') { substring = 'Schleifensignal verloren'; }
if(substring == '16') { substring = 'Mähroboter abgeschaltet'; }
if(substring == '17') { substring = 'Mähroboter schläft'; }

dom.GetObject('Mähroboter.Status').State(substring);
WriteLine('Status: ' # substring);


! Status-Zeit abfragen
posStart = '"duration": ';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

substring = (substring.ToInteger() / 60) # ' Minuten';

dom.GetObject('Mähroboter.Status-Zeit').State(substring);
WriteLine('Status-Zeit: ' # substring);


! Modus abfragen
posStart = '"mode": ';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

if(substring == '0') { substring = 'Auto'; }
if(substring == '1') { substring = 'Manuell'; }
if(substring == '2') { substring = 'Home'; }
if(substring == '3') { substring = 'Demo'; }

dom.GetObject('Mähroboter.Modus').State(substring);
WriteLine('Modus: ' # substring);


! Batterie abfragen
posStart = '"battery": ';
posEnd = ',';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

substring = substring # '%';

dom.GetObject('Mähroboter.Batterie').State(substring);
WriteLine('Batterie: ' # substring);


! Laufzeit abfragen
posStart = '"hours": ';
posEnd = '}';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

substring = substring # ' h';

dom.GetObject('Mähroboter.Laufzeit').State(substring);
WriteLine('Batterie: ' # substring);


! Timer-Status abfragen
posStart = '"timer": {"status": ';
posEnd = ',';
posEndAlt = '}';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);

if(dummy.Find(posEnd) < dummy.Find(posEndAlt)) {
	substring = stdout.Substr(pos, dummy.Find(posEnd));
} else {
	substring = stdout.Substr(pos, dummy.Find(posEndAlt));
}

if(substring == '0') { substring = 'Deaktiviert'; }
if(substring == '1') { substring = 'Aktiv'; }
if(substring == '2') { substring = 'Standby'; }

dom.GetObject('Mähroboter.Timer-Status').State(substring);
WriteLine('Timer-Status: ' # substring);


! WLAN abfragen
posStart = '"wlan": {"signal": ';
posEnd = '}';
pos = stdout.Find(posStart) + posStart.Length();

dummy = stdout.Substr(pos, 99);
substring = stdout.Substr(pos, dummy.Find(posEnd));

substring = substring # ' dBm';

dom.GetObject('Mähroboter.WLAN').State(substring);
WriteLine('WLAN: ' # substring);


! LastSync setzen
dom.GetObject('Mähroboter.LastSync').State(system.Date("%d.%m.%Y %H:%M:%S"));

Re: Homematic - Einbindung

Verfasst: Di 10. Okt 2017, 21:24
von Torben80
EDIT: Hat sich erledigt...
Habe alles so gemacht wie auf Seite 1 und dann das letzte Script auf dieser Seite angepasst ;-)
Danke!

Moin moin Leute, wie ist denn die aktuelle Vorgehensweise?
Derzeit nutze ich FHEM, wollte das aber gerne alles an meine CCU2 übertragen.

Muss ich alles wie auf Seite 1 einbinden und dann das letzte "aktualisierte" Script aus Seite 8 nehmen?

Oder hat mal jemand eine neuere Anleitung geschrieben?

Gruß Torben

Re: Homematic - Einbindung

Verfasst: Di 20. Feb 2018, 19:50
von KURT-17
Hallo
habe das Modul eingebaut alles SUPER und dann mal die CCU2 dazugenommen, einige Skripts liefen NICHT - ist nicht so meine Welt - der von Timberland OHNE Fehler jedoch das Modul wird auch nicht angesprochen, IP ist geändert... vom Browser und Handy alles bedienbar.Brauche eigendlich erstmal (Feierabend bei Regen) wenn (Kurt) mäht -
Regen hab ich von der WDS100 auf einer LED
aber dann im Skript Test - ("wget -q -O /dev/null 'http://192.168.178.31/xml?cmd=mode&mode=eod'"); ! geht nicht, wenn das Modul auf Auto steht und ich den Skript ausführe tut sich nichts ... wo ist der FEHLER - kann mir jemand da helfen?
LG Kurt-17