Homematic - Einbindung

Einbindung von Robonect Hx und IO in Deine bereits bestehende Homematic-Anlage

Moderator: Lampi

rudolf.kiepetz
Forum-Anfänger
Beiträge: 4
Registriert: Mo 15. Mai 2017, 16:23
Mäher: Husqvarna Automower 430X
Herstellungsjahr: 2017
Robonect-Modul: Robonect Hx (Rev.3)

Re: Homematic - Einbindung

Beitrag 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.

Andronid
Forum-Nutzer
Beiträge: 22
Registriert: Di 15. Mär 2016, 08:38
Wohnort: Beelitz
Mäher: Husqvarna Automower 308
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2014
Robonect-Modul: Robonect Hx (Rev.3)
Robonect Firmware: 1.0Beta

Re: Homematic - Einbindung

Beitrag 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.
Beste Grüße
Andronid

Husqvarna Automower 308, Beta 8d _____________________________________________________________

Tobias78
erfahrener Forum-Nutzer
Beiträge: 60
Registriert: So 31. Jul 2016, 17:05
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2012
Robonect-Modul: Robonect H30x (Rev.0)
Robonect Firmware: 1.0 Beta 2

Re: Homematic - Einbindung

Beitrag 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.
:: Geräteversion - MSW-Software: R40Li - MSW-Version: 5.01.00 - Robonect Firmware 1.0 Beta 2

braindead
Forum-Nutzer
Beiträge: 25
Registriert: Di 14. Mär 2017, 19:00
Mäher: Gardena R70Li
Firmware des Mähers (MSW): MSW 6.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: 1.0 Beta 2

Re: Homematic - Einbindung

Beitrag von braindead »

rudolf.kiepetz hat geschrieben:
Sa 20. Mai 2017, 12:33
mich 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
Zuletzt geändert von braindead am Mo 5. Jun 2017, 20:29, insgesamt 1-mal geändert.

ernst.lalla
Forum-Anfänger
Beiträge: 3
Registriert: Fr 12. Mai 2017, 21:22
Mäher: Gardena R50Li
Robonect-Modul: noch kein Robonect verbaut
Robonect Firmware: xxx

Re: Homematic - Einbindung

Beitrag 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

Benutzeravatar
PaulMerkelbach
Forum-Nutzer
Beiträge: 20
Registriert: Di 20. Sep 2016, 15:42
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 6.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V 1.2

Re: Homematic - Einbindung

Beitrag 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
"Schäfchen" Gleitteller, FTA-Heckrad, Hütte
API-Steuerung mit Homematic

Benutzeravatar
Sprite01
Forum-Nutzer
Beiträge: 30
Registriert: Do 17. Mär 2016, 14:09
Wohnort: Sachsen-Anhalt
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect H30x (Rev.2)
Robonect Firmware: 1.0
Kontaktdaten:

Re: Homematic - Einbindung

Beitrag 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) 5197 mal betrachtet
Nachtrag:
Wenn ich aus posEnd = ','; ein posEnd = '}'; mache scheint es zu funktionieren
--------
Gruß
Dirk

Gardena R40Li; MSW: 5.01.00 (10-10-2014); SUB: 5.00.00; MMI: 5.05.00

braindead
Forum-Nutzer
Beiträge: 25
Registriert: Di 14. Mär 2017, 19:00
Mäher: Gardena R70Li
Firmware des Mähers (MSW): MSW 6.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: 1.0 Beta 2

Re: Homematic - Einbindung

Beitrag 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"));

Torben80
Forum-Anfänger
Beiträge: 5
Registriert: Sa 13. Mai 2017, 16:25
Mäher: Gardena R70Li
Firmware des Mähers (MSW): MSW 6.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.3)
Robonect Firmware: 1.0 Beta2

Re: Homematic - Einbindung

Beitrag 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

Benutzeravatar
KURT-17
Forum-Nutzer
Beiträge: 31
Registriert: Sa 10. Feb 2018, 19:03
Mäher: Husqvarna Automower 310
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: V1.2

Re: Homematic - Einbindung

Beitrag 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
Kurt-17 - Beta5 - Cam vorn + NX4459 Heck - 6 LED 2x18000 lm 2x VORN 4x HECK - HM CCU3 - Garage HM Rolladenaktor - Fritz 7560 - Repeater 1750E -Regensensor HM WDS100-C6-O +FS20 Regen-Markisensensor ->HM

Antworten

Zurück zu „Homematic-Nutzer“