Steuerung über Homematic per API

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

Moderator: Lampi

FischerICT
Forum-Nutzer
Beiträge: 14
Registriert: Di 7. Mai 2019, 18:08
Mäher: Husqvarna Automower 310
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V1.0 Beta 7a

Steuerung über Homematic per API

Beitrag von FischerICT »

Hallo Jörg,

ich hab mal in meiner Leienhaftigkeit was zusammengebastelt.
Hab mich an Deinem Skript orientiert, kannst Du mal drüber schauen, ob das so funktionieren könnte :?:

Code: Alles auswählen

!  /xml?cmd=mode&mode=start  - Start: Roboter wird gestartet
!  /xml?cmd=mode&mode=stop   - Stop: Roboter wird gestopt
!  /xml?cmd=mode&mode=auto   - Auto: Roboter mäht entsprechend der gesetzten Timer-Einstellungen.
!  /xml?cmd=mode&mode=home   - Home: Roboter fährt zurück in die Ladestation, dort verbleibt er, bis ein anderer Betriebsmodus gewählt wird.
!  /xml?cmd=mode&mode=man    - Manuell: Roboter lädt vollständig auf und fährt dann vor die Ladestation. Setzen Sie ihn daraufhin auf die zu mähende Fläche.
!  /xml?cmd=mode&mode=eod    - Feierabend: Roboter fährt zurück in die Ladestation und Morgen arbeitet er dann wieder entsprechend den Timer-Einstellungen weiter.

! ********************************************************
string vBenutzer = "";          ! Benutzername
string vPasswort = "";          ! Passwort für Benutzername
string vIP = "xxx.xxx.xxx.xxx"; ! IP des Mähers
! ********************************************************

string stderr = "";
string stdout = "";
string vUrl = "'http://" # vIP # "/xml?user=" # vBenutzer # "&pass=" # vPasswort # "xml?cmd=mode&mode=home'";
system.Exec("wget -q -O - " # vUrl, &stdout, &stderr);
Bin mal gespannt, wie weit daneben ich liege 🙉

LG Andreas


-------------------------
Edit vom Moderator:
Der Übersichtlichkeit wegen abgetrennt. Die Diskussion stammt ursprünglich aus dem Thema Homematic - Einbindung.
Zuletzt geändert von Lampi am Sa 18. Mai 2019, 09:36, insgesamt 1-mal geändert.
Grund: Code-Tag eingefügt

Lampi
sehr erfahrener Forum-Nutzer
Beiträge: 344
Registriert: Di 14. Feb 2017, 17:07
Mäher: Husqvarna Automower 330X
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2014
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V1.2 (Final Release)
hat sich bedankt: 1 Mal
wurde gedankt: 1 Mal

Re: Homematic - Einbindung

Beitrag von Lampi »

Hallo Andreas,

also für mich sieht das gut aus. 👍
Habs zwar nicht getestet, sollte aber so gehen.
Das wäre dann auch in etwa das, was ich mit einfach meinte.

Ich würde aber empfehlen vor dem wget mit einem Ping zu überprüfen ob die Verbindung auch steht.
Das sieht dann so aus:

Code: Alles auswählen

! /xml?cmd=mode&mode=start - Start: Roboter wird gestartet
! /xml?cmd=mode&mode=stop - Stop: Roboter wird gestopt
! /xml?cmd=mode&mode=auto - Auto: Roboter mäht entsprechend der gesetzten Timer-Einstellungen.
! /xml?cmd=mode&mode=home - Home: Roboter fährt zurück in die Ladestation, dort verbleibt er, bis ein anderer Betriebsmodus gewählt wird.
! /xml?cmd=mode&mode=man - Manuell: Roboter lädt vollständig auf und fährt dann vor die Ladestation. Setzen Sie ihn daraufhin auf die zu mähende Fläche.
! /xml?cmd=mode&mode=eod - Feierabend: Roboter fährt zurück in die Ladestation und Morgen arbeitet er dann wieder entsprechend den Timer-Einstellungen weiter.

! ********************************************************
string vBenutzer = ""; ! Benutzername
string vPasswort = ""; ! Passwort für Benutzername
string vIP = "xxx.xxx.xxx.xxx"; ! IP des Mähers
! ********************************************************

string stderr = "";
string stdout = "";
string vUrl = "'http://" # vIP # "/xml?user=" # vBenutzer # "&pass=" # vPasswort # "xml?cmd=mode&mode=home'";

system.Exec("ping -c 1 " # vIP,&stdout, &stderr);
if (stdout.Contains("ms")) {
  system.Exec("wget -q -O - " # vUrl, &stdout, &stderr);
}
FischerICT hat geschrieben:
Do 9. Mai 2019, 17:34
Ich versuch es die nächsten Tage auch mal.
Vergehen bei Dir die Tage alle im Stundentakt? ;)

Gruß
Jörg
Fragen? Fragen!

FischerICT
Forum-Nutzer
Beiträge: 14
Registriert: Di 7. Mai 2019, 18:08
Mäher: Husqvarna Automower 310
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V1.0 Beta 7a

Re: Homematic - Einbindung

Beitrag von FischerICT »

Hallo Jörg,

ne eigentlich nicht, hab nur überraschend etwas zeit gehabt. :lol:

Hab heute mal versucht, den Robi per Befehl zu starten, bzw. auf "auto" zu stellen. Leider reagiert er gar nicht auf den Befehl.
Ich habe schon alles mögliche versucht und mach schon fast den ganzen Vormittag rum - Leider ohne Erfolg 😭

Wenn Du also eine Lösung findest, wäre ich über jede Hilfe dankbar.

LG Andreas

Lampi
sehr erfahrener Forum-Nutzer
Beiträge: 344
Registriert: Di 14. Feb 2017, 17:07
Mäher: Husqvarna Automower 330X
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2014
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V1.2 (Final Release)
hat sich bedankt: 1 Mal
wurde gedankt: 1 Mal

Re: Homematic - Einbindung

Beitrag von Lampi »

sch... :?

Hallo Andreas,

ich sehe im Moment keinen Grund warum es nicht geht. Werde mich aber darum kümmern. Nur leider habe ich momentan etwas wenig Zeit. Ich denke aber, dass ich nächste Woche Di. oder Mi. der Sache mal nachgehen kann.

Bis dahin viele Grüße
Jörg
Fragen? Fragen!

Lampi
sehr erfahrener Forum-Nutzer
Beiträge: 344
Registriert: Di 14. Feb 2017, 17:07
Mäher: Husqvarna Automower 330X
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2014
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V1.2 (Final Release)
hat sich bedankt: 1 Mal
wurde gedankt: 1 Mal

Re: Homematic - Einbindung

Beitrag von Lampi »

So, Start und Stop sollte schon mal gehen.

Code: Alles auswählen

! ********************************************************
string vBefehl = "start";        ! Beispiel für Start
! string vBefehl = "stop";        ! Beispiel für Stop
string vBenutzer = "";           ! Benutzername
string vPasswort = "";           ! Passwort für Benutzername
string vIP = "xxx.xxx.xxx.xxx";  ! IP des Mähers
! ********************************************************

string vUrl = "'http://" # vIP # "/xml?user=" # vBenutzer # "&pass=" # vPasswort # "&cmd=" # vBefehl # "'";
string stderr = "";
string stdout = "";


system.Exec("ping -c 1 " # vIP,&stdout, &stderr);
if (stdout.Contains("ms")) {
  WriteLine("Ping erfolgreich");
  system.Exec("wget -q -O - " # vUrl, &stdout, &stderr);
  if (stdout.Contains("successful>true</successful")) {
    WriteLine("Befehl setzen erfolgreich");
  } else {
    WriteLine("Befehl setzen NICHT erfolgreich");
  }
} else {
  WriteLine("Ping NICHT erfolgreich");
}
Es hatte mir jetzt keine Ruhe gelassen. 8-)

Gruß Jörg
Fragen? Fragen!

FischerICT
Forum-Nutzer
Beiträge: 14
Registriert: Di 7. Mai 2019, 18:08
Mäher: Husqvarna Automower 310
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V1.0 Beta 7a

Re: Homematic - Einbindung

Beitrag von FischerICT »

Guten Morgen Jörg,

ja super die zwei Befehle gehen offensichtlich. Weist Du warum er aber "auto" und "home" und "eod" nicht ausführt.
Ich habe es mittlerweile geschafft ein Script zu bauen, mit dem der Befehl angenommen wird:

Code: Alles auswählen

string stderr;
string stdout;
string url="'http://[b]IP-Adresse[/b]/xml?user=[b]User[/b]&pass=[b]Passwort[/b]&cmd=mode&mode=home'";
system.Exec("wget -q -O - "#url, &stdout, &stderr);

Würde aber Deine Script bevorzugen, wie immer die Daten zu hinterlegen. Hasst Du vielleicht eine Idee wo der Hacken sitzen könnte :?:

LG Andreas
Zuletzt geändert von Lampi am Sa 18. Mai 2019, 09:38, insgesamt 1-mal geändert.
Grund: Code-Tag eingefügt

Lampi
sehr erfahrener Forum-Nutzer
Beiträge: 344
Registriert: Di 14. Feb 2017, 17:07
Mäher: Husqvarna Automower 330X
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2014
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V1.2 (Final Release)
hat sich bedankt: 1 Mal
wurde gedankt: 1 Mal

Re: Homematic - Einbindung

Beitrag von Lampi »

Hallo Andreas,

Danke für die Rückmeldung das die beiden Befehle bei Dir funktionieren. Ich hatte sie zwar getestet, aber was bei mir geht muss ja nicht überall funktionieren.

Ich bin bisher leider noch nicht dazu gekommen weitere Befehle zu testen. Sobald ich aber so weit bin werde ich sie hier reinstellen.

Gruß
Jörg
Fragen? Fragen!

Lampi
sehr erfahrener Forum-Nutzer
Beiträge: 344
Registriert: Di 14. Feb 2017, 17:07
Mäher: Husqvarna Automower 330X
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2014
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V1.2 (Final Release)
hat sich bedankt: 1 Mal
wurde gedankt: 1 Mal

Re: Steuerung über Homematic per API

Beitrag von Lampi »

Hallo Andreas,
FischerICT hat geschrieben:
Do 9. Mai 2019, 18:43
Bin mal gespannt, wie weit daneben ich liege 🙉
Es war garnicht weit daneben:

string vUrl = "'http://" # vIP # "/xml?user=" # vBenutzer # "&pass=" # vPasswort # "xml?cmd=mode&mode=home'";
string vUrl = "'http://" # vIP # "/xml?user=" # vBenutzer # "&pass=" # vPasswort # "&cmd=mode&mode=home'";

Ich hatte es aber auch übersehen. :?


Hier nun die anderen Befehle:

Code: Alles auswählen

! ********************************************************
string vBefehl = "start";           ! Beispiel für Start
! string vBefehl = "stop";           ! Beispiel für Stop
! string vBefehl = "mode&mode=auto"; ! Beispiel für Auto
! string vBefehl = "mode&mode=home"; ! Beispiel für Home
! string vBefehl = "mode&mode=man";  ! Beispiel für Manuel
! string vBefehl = "mode&mode=eod";  ! Beispiel für End of day
string vBenutzer = "";              ! Benutzername
string vPasswort = "";              ! Passwort für Benutzername
string vIP = "xxx.xxx.xxx.xxx";     ! IP des Mähers
! ********************************************************


string vUrl = "'http://" # vIP # "/xml?user=" # vBenutzer # "&pass=" # vPasswort # "&cmd=" # vBefehl # "'";
string stderr = "";
string stdout = "";


system.Exec("wget -q -O - -t 1 -T 10 " # vUrl, &stdout, &stderr);

Nach "eod" (end of day) steht die Betriebsart auf Home, also nicht wundern. Und der Mäher wird vermutlich um bzw. kurz nach Mitternacht piepsen, da er aufgeweckt wird um die Betriebsart von home auf auto umzuschalteten.


Man könnte aus diesem Skript auch eine Variable setzen, in der die Quitierung des Befehles steht um auch eine Rückmeldung zu bekommen. Es ist auch machbar, die Variable vBefehl flexibel zu setzten. Je nach dem was der Auslöser für das Programm war welches dieses Skript startet. Hat den Vorteil, dass man nur ein Programm benötigt. Das ist dann aber schon nicht mehr ein einfach gehaltenes Skript.


Viele Grüße
Jörg
Fragen? Fragen!

FischerICT
Forum-Nutzer
Beiträge: 14
Registriert: Di 7. Mai 2019, 18:08
Mäher: Husqvarna Automower 310
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V1.0 Beta 7a

Re: Steuerung über Homematic per API

Beitrag von FischerICT »

Hallo Jörg,

knapp daneben ist halt auch vorbei :lol:
Hast Du bei dem Script absichtlich den PING weg gelassen oder würdest Du den auch noch mit senden?

Das mit den Rückmeldung hört sich interessant an!
Sowieso wenn man den Befehl automatisiert bei z.b. Regen verwendet. Ich möchte den Robi bei Regendetektion nach hause schicken und wenn der Regen länger als 24 Std. 0 ist wieder starten. Das ganze realisiere ich über die eigene Wetterstation.

Cool wäre wenn man hier die Rückmeldung noch z.b. mit einem Email versandt verbinden könnte.

Kannst Du mir da noch Helfen?

LG und schönen Sonntag,

Andreas

Lampi
sehr erfahrener Forum-Nutzer
Beiträge: 344
Registriert: Di 14. Feb 2017, 17:07
Mäher: Husqvarna Automower 330X
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2014
Robonect-Modul: Robonect Hx (Rev.1)
Robonect Firmware: V1.2 (Final Release)
hat sich bedankt: 1 Mal
wurde gedankt: 1 Mal

Re: Steuerung über Homematic per API

Beitrag von Lampi »

Hallo Andreas,
FischerICT hat geschrieben:
So 19. Mai 2019, 11:28
Hast Du bei dem Script absichtlich den PING weg gelassen oder würdest Du den auch noch mit senden?
Ich hatte ganz selten aber immer mal Probleme, dass auf meiner CCU keine Programme mehr abgearbeitet wurden. Als Fehler konnte ich einen Hänger in Verbindung mit der Abfrage der API mit wget ermitteln. Diese Hänger konnte ich mit dem Ping, der nach 10 Sekunden mit einem Timeout abgebrochen wird, umgehen. Darauf hatte ich es dann beruhen lassen.
In der Zwischenzeit habe ich mal nachgelesen. Per Default hat wget ein Timeout nach 900s (15 Minuten) bei 20 Versuchen. Es scheint aber nur unter ganz bestimmten Umständen zu dieser langen Wartezeit zu kommen. Vermutlich wenn Verbindung besteht aber nicht in ausreichender Qualität. Dieses Problem liegt nicht allein an system.exec, auch mit CUxD gibt es dann diese Hänger. Der Vorteil von CUxD ist aber, dass es einen eigenen von einer bis 999 Minuten (Default sind 60) einstellbaren Timeout hat, was dann den wget abbricht. Eine Minute ist mir aber immer noch zu lange gewesen.
Um nun auf den Ping verzichten zu können, übergebe ich beim Aufruf von wget Parameter für das Timeout und die maximale Anzahl der Versuche. Das ist zum einen "-t 1" für einen Versuch und "-T 10" für ein Timeout von zehn Sekunden. Ich habe es zwar noch nicht lange so umgesetzt, mache auch nicht mehr so viel über API, bin aber sehr zuversichtlich, dass es zuverlässig funktioniert.
Wenn Du dir aber nicht sicher bist, spricht nichts dagegen, den Ping vorher zu senden. Oder, wenn Du CUxD installiert hast, auf CUxD zu wechseln.


FischerICT hat geschrieben:
So 19. Mai 2019, 11:28
Das mit den Rückmeldung hört sich interessant an!
Damit habe ich mich schon etwas beschäftigt. Da sind aber noch so ein paar Dinge, die ich vorher erst mal klären möchte.

FischerICT hat geschrieben:
So 19. Mai 2019, 11:28
Cool wäre wenn man hier die Rückmeldung noch z.b. mit einem Email versandt verbinden könnte.

Kannst Du mir da noch Helfen?
Hast Du das E-Mail addon bereits installiert und schon anderweitig benutzt? Nur damit ich in etwa abschätzen kann, worauf ich mich da einlassen würde. 8-)

Gruß
Jörg
Fragen? Fragen!

Antworten

Zurück zu „Homematic-Nutzer“