Aufgrund derzeit hohem Spamaufkommens werden neue Nutzer sehr restriktiv behandelt. Nach kurzer "Bewährungszeit" hat man als normaler Nutzer weitreichende Rechte und benötigt auch kein Captcha mehr.
.
Nutzer, die sich danach dennoch als Spammer oder Trolle erweisen, können jederzeit wieder auf diesen Status zurückgesetzt oder gebannt werden.
Dasselbe gilt für Versuche, politische Überzeugungen kund zu tun, egal aus welcher Richtung diese kommen.
.
. Achtung! Verwendet bitte für aktuelle Mäher bzw. falls ihr die Firmware eures Mähers kürzlich aktualisiert habt, den aktuellen Release-Candidate der Robonect-Firmware: https://fw.robonect.de/?latest Diese wird in ein paar Tagen als offizielle Firmware verfügbar sein. (Stand: 03.04.2024)
Statusabfrage über Homematic per API
Moderator: Lampi
- Nexo
- Forum-Anfänger
- Beiträge: 9
- Registriert: So 2. Sep 2018, 17:48
- Wohnort: Wien 1210
- Mäher: Gardena R40Li
- Herstellungsjahr: 2017
- Robonect-Modul: Robonect Hx (Rev.5)
- Robonect Firmware: V1.0 Beta 7a
Statusabfrage über Homematic per API
Hallo zusammen,
dürfte ich einen von Euch Profis bitten eine vollständige und aktuelle Version für FW V1.0 Beta 7a zu posten?
Also Skript für User und PW als nicht Cuxd Version inkl. Variablen.
Bitte, Bitte denn Egal welche Version ich mir aus dem Thread gezogen habe, funktioniert nur teilweise. Habe jetzt schon Stunden damit verbracht und ich komme einfach nicht weiter.
Danke Euch, schöne Grüße! Peter
-------------------------
Edit vom Moderator:
Der Übersichtlichkeit wegen abgetrennt. Die Diskussion stammt ursprünglich aus dem Thema Homematic - Einbindung.
dürfte ich einen von Euch Profis bitten eine vollständige und aktuelle Version für FW V1.0 Beta 7a zu posten?
Also Skript für User und PW als nicht Cuxd Version inkl. Variablen.
Bitte, Bitte denn Egal welche Version ich mir aus dem Thread gezogen habe, funktioniert nur teilweise. Habe jetzt schon Stunden damit verbracht und ich komme einfach nicht weiter.
Danke Euch, schöne Grüße! Peter
-------------------------
Edit vom Moderator:
Der Übersichtlichkeit wegen abgetrennt. Die Diskussion stammt ursprünglich aus dem Thema Homematic - Einbindung.
-
- sehr erfahrener Forum-Nutzer
- Beiträge: 705
- 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.3b
- hat sich bedankt: 8 Male
- wurde gedankt: 82 Male
Re: Homematic - Einbindung
Hallo Peter,
Etwa so in der Art?
Ist jetzt mal nur so aus der Hüfte. Ich selber nutze dieses in der Form nicht mehr. Daher mal nur ein paar Variablen als Beispiel. Wenn du nicht weiterkommst, melde dich bitte noch mal.
Gruß
Jörg
Code: Alles auswählen
! Robonect Statusabfrage per xml und system.Exec
! Verwendete Variablen:
! vName + Betriebsart - als Werteliste
! vName + Distance - als Zeichenkette
! vName + Status - als Werteliste
! vName + Status seit - als Zeichenkette
! ********************************************************
boolean vFehlersuche = true; ! true: Ausgabe als WriteLine ohne Schreiben der Variablen
string vName = "Robotername"; ! Namen des Roboters für die Variablen
string vBenutzer = ""; ! Benutzername
string vPasswort = ""; ! Passwort für Benutzername
string vIP = "xxx.xxx.xxx.xxx"; ! IP des Mähers
! ********************************************************
! Entkommentieren der nächsten Zeilen schreibt die Werteliste in die Variablen
! anschließend wieder Auskommentieren
! dom.GetObject(vName # " Status").ValueList("Status wird ermittelt;parkt;mäht;sucht die Ladestation;lädt;wartet auf Umsetzen;6;Fehlerstatus;Schleifensignal verloren;9;10;11;12;13;14;15;abgeschaltet;schläft;wartet bis Tor auf");
! dom.GetObject(vName # " Betriebsart").ValueList("Auto;Manuell;Home;Demo");
! ToDo
!
boolean vPing = false;
string stderr = "";
string stdout = "";
string vStart = "";
string vEnde = "";
string vIndex = "";
string vUrl = "'http://" # vIP # "/xml?user=" # vBenutzer # "&pass=" # vPasswort # "&cmd=status'";
integer vTempo = 0;
system.Exec("ping -c 1 " # vIP,&stdout, &stderr);
if (stdout.Contains("ms")) {
vPing = true;
if (vFehlersuche) {
vStart = "time=";
vEnde = " ms";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart).ToInteger();
WriteLine("Der Ping dauerte " # vIndex # " Millisekunden.");
}
} else {
if (vFehlersuche) {
WriteLine(vName # " ist Momentan nicht erreichbar.");
}
}
if (vPing) {
vPing = false;
system.Exec("wget -q -O - " # vUrl, &stdout, &stderr);
! Erfolgreich ausgelesen?
if (stdout.Contains("successful>true</successful")) {
vPing = true;
if (vFehlersuche) {
WriteLine("API Antwort = " # stdout);
}
} else {
if (vFehlersuche) {
WriteLine(vName # " antwortet trotz erfolgreichem Ping nicht.");
}
}
}
if (vPing) {
! Status
vStart = "<status><status>";
vEnde = "</status>";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = (stdout.Substr(vStart, stdout.Find(vEnde) - vStart)).ToInteger();
vTempo = vIndex;
if (vFehlersuche){
! vIndex = dom.GetObject(vName # " Status").ValueList().StrValueByIndex(";",vIndex);
WriteLine("Status = " # vIndex);
} else {
dom.GetObject(vName # " Status").State(vIndex);
}
! Status seit
vStart = "<duration>";
vEnde = "</duration>";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart);
if (vFehlersuche){
WriteLine("Status seit " # vIndex # " Sekunden");
} else {
dom.GetObject(vName # " Status seit").State(vIndex);
}
! Start nach
vStart = "<distance>";
vEnde = "</distance>";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart);
if (vFehlersuche){
WriteLine("Start nach " # vIndex # " Meter");
} else {
dom.GetObject(vName # " Distance").State(vIndex);
}
! Betriebsart
vStart = "</mode>";
vEnde = "</mode>";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = (stdout.Substr(vStart, stdout.Find(vEnde) - vStart)).ToInteger();
if (vFehlersuche){
! vIndex = dom.GetObject(vName # " Betriebsart").ValueList().StrValueByIndex(";",vIndex);
WriteLine("Betriebsart = " # vIndex);
} else {
dom.GetObject(vName # " Betriebsart").State(vIndex);
}
}
Ist jetzt mal nur so aus der Hüfte. Ich selber nutze dieses in der Form nicht mehr. Daher mal nur ein paar Variablen als Beispiel. Wenn du nicht weiterkommst, melde dich bitte noch mal.
Gruß
Jörg
Fragen? Fragen!
- Nexo
- Forum-Anfänger
- Beiträge: 9
- Registriert: So 2. Sep 2018, 17:48
- Wohnort: Wien 1210
- Mäher: Gardena R40Li
- Herstellungsjahr: 2017
- Robonect-Modul: Robonect Hx (Rev.5)
- Robonect Firmware: V1.0 Beta 7a
Re: Homematic - Einbindung
Hi Jörg,
vielen Dank, ja sowas habe ich gemeint . Leider stehen bei "Distance" und "Status seit" nur drei Fragezeichen also "???"
und bei "Status" bleibt der Wert auf "Status wird ermittelt" und verändert sich nicht. Wenn das funktionieren würde und noch die anderen Werte wie Batterie, Laufzeit, Wlan etc. kannst mir Dein Paypal Konto schicken.
Danke und schönen Ostersonntag! Grüße, Peter
P.S. Weil Du schreibst: Ich selber nutze dieses in der Form nicht mehr. Interessehalber, wie nutzt Du es jetzt?
vielen Dank, ja sowas habe ich gemeint . Leider stehen bei "Distance" und "Status seit" nur drei Fragezeichen also "???"
und bei "Status" bleibt der Wert auf "Status wird ermittelt" und verändert sich nicht. Wenn das funktionieren würde und noch die anderen Werte wie Batterie, Laufzeit, Wlan etc. kannst mir Dein Paypal Konto schicken.
Danke und schönen Ostersonntag! Grüße, Peter
P.S. Weil Du schreibst: Ich selber nutze dieses in der Form nicht mehr. Interessehalber, wie nutzt Du es jetzt?
-
- sehr erfahrener Forum-Nutzer
- Beiträge: 705
- 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.3b
- hat sich bedankt: 8 Male
- wurde gedankt: 82 Male
Re: Homematic - Einbindung
Okay
bevor wir mit den restlichen Variablen weitermachen, versuchen wir erst mal diese hin zu bekommen.
Bitte folgendes Skript unter Skript testen ausführen. Einmal mit
boolean vTestlauf = true;
und dann mit
boolean vTestlauf = false;
Bei true werden die Daten erst mal nur ausgegeben ohne das Werte in die Variablen geschrieben werden.
Bei false wird überprüft ob die Variablen existieren.
Wenn ja, werden die Werte in die Variablen geschrieben ohne eine WriteLine-Ausgabe. Also nicht wundern, wenn scheinbar nichts passiert.
Wenn nein, werden die fehlenden bzw. anders benannten Variablen per WriteLine ausgegeben.
Falls es nicht hinhaut, bräuchte ich die jeweilige WriteLine-Ausgabe für eine weitere Fehlersuche. Die kannst du mir dann auch gerne per PN zusenden.
Wenns läuft kommt dann der Rest.
Frohe Ostern
Jörg
bevor wir mit den restlichen Variablen weitermachen, versuchen wir erst mal diese hin zu bekommen.
Bitte folgendes Skript unter Skript testen ausführen. Einmal mit
boolean vTestlauf = true;
und dann mit
boolean vTestlauf = false;
Code: Alles auswählen
! Robonect Statusabfrage per xml und system.Exec
! Verwendete Variablen:
! vName + Betriebsart - als Werteliste
! vName + Distance - als Zeichenkette
! vName + Status - als Werteliste
! vName + Status seit - als Zeichenkette
! ********************************************************
boolean vTestlauf = true; ! true: Ausgabe als WriteLine ohne Schreiben der Variablen; false: schreiben der Variablen ohne Ausgabe als WriteLine
string vName = "Robotername"; ! Namen des Roboters für die Variablen
string vBenutzer = ""; ! Benutzername
string vPasswort = ""; ! Passwort für Benutzername
string vIP = "xxx.xxx.xxx.xxx"; ! IP des Mähers
! ********************************************************
! Entkommentieren der nächsten Zeilen schreibt die Werteliste in die Variablen
! anschließend wieder Auskommentieren
! dom.GetObject(vName # " Status").ValueList("Status wird ermittelt;parkt;mäht;sucht die Ladestation;lädt;wartet auf Umsetzen;6;Fehlerstatus;Schleifensignal verloren;9;10;11;12;13;14;15;abgeschaltet;schläft;wartet bis Tor auf");
! dom.GetObject(vName # " Betriebsart").ValueList("Auto;Manuell;Home;Demo");
! ToDo
!
boolean vPing = false;
string stderr = "";
string stdout = "";
string vStart = "";
string vEnde = "";
string vIndex = "";
string vUrl = "'http://" # vIP # "/xml?user=" # vBenutzer # "&pass=" # vPasswort # "&cmd=status'";
system.Exec("ping -c 1 " # vIP,&stdout, &stderr);
if (stdout.Contains("ms")) {
vPing = true;
if (vTestlauf) {
vStart = "time=";
vEnde = " ms";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart).ToInteger();
WriteLine("Der Ping dauerte " # vIndex # " Millisekunden.");
}
} else {
if (vTestlauf) {
WriteLine(vName # " ist Momentan nicht erreichbar.");
}
}
if (vPing) {
vPing = false;
system.Exec("wget -q -O - " # vUrl, &stdout, &stderr);
! Erfolgreich ausgelesen?
if (stdout.Contains("successful>true</successful")) {
vPing = true;
if (vTestlauf) {
WriteLine("API Antwort = " # stdout);
}
} else {
if (vTestlauf) {
WriteLine(vName # " antwortet trotz erfolgreichem Ping nicht.");
}
}
}
if (vPing) {
! Status
vStart = "<status><status>";
vEnde = "</status>";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = (stdout.Substr(vStart, stdout.Find(vEnde) - vStart)).ToInteger();
if (vTestlauf){
! vIndex = dom.GetObject(vName # " Status").ValueList().StrValueByIndex(";",vIndex);
WriteLine("Status = " # vIndex);
} else {
if (dom.GetObject(vName # " Status")) {
dom.GetObject(vName # " Status").State(vIndex);
} else {
WriteLine("Variable -" # vName # " Status- existiert nicht");
}
}
! Status seit
vStart = "<duration>";
vEnde = "</duration>";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart);
if (vTestlauf){
WriteLine("Status seit " # vIndex # " Sekunden");
} else {
if (dom.GetObject(vName # " Status seit")) {
dom.GetObject(vName # " Status seit").State(vIndex);
} else {
WriteLine("Variable -" # vName # " Status seit- existiert nicht");
}
}
! Start nach
vStart = "<distance>";
vEnde = "</distance>";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = stdout.Substr(vStart, stdout.Find(vEnde) - vStart);
if (vTestlauf){
WriteLine("Start nach " # vIndex # " Meter");
} else {
if (dom.GetObject(vName # " Distance")) {
dom.GetObject(vName # " Distance").State(vIndex);
} else {
WriteLine("Variable -" # vName # " Distance- existiert nicht");
}
}
! Betriebsart
vStart = "<mode>";
vEnde = "</mode>";
vStart = stdout.Find(vStart) + vStart.Length();
vIndex = (stdout.Substr(vStart, stdout.Find(vEnde) - vStart)).ToInteger();
if (vTestlauf){
! vIndex = dom.GetObject(vName # " Betriebsart").ValueList().StrValueByIndex(";",vIndex);
WriteLine("Betriebsart = " # vIndex);
} else {
if (dom.GetObject(vName # " Betriebsart")) {
dom.GetObject(vName # " Betriebsart").State(vIndex);
} else {
WriteLine("Variable -" # vName # " Betriebsart- existiert nicht");
}
}
}
WriteLine("Habe fertig")
Bei false wird überprüft ob die Variablen existieren.
Wenn ja, werden die Werte in die Variablen geschrieben ohne eine WriteLine-Ausgabe. Also nicht wundern, wenn scheinbar nichts passiert.
Wenn nein, werden die fehlenden bzw. anders benannten Variablen per WriteLine ausgegeben.
Falls es nicht hinhaut, bräuchte ich die jeweilige WriteLine-Ausgabe für eine weitere Fehlersuche. Die kannst du mir dann auch gerne per PN zusenden.
Wenns läuft kommt dann der Rest.
Ich nutze mqtt und hole mir über API die Werte nur bei Bedarf (über mqtt kommt (noch) nicht alles) z.B. bei einer Störung die Fehlermeldung und die aktuelle Position um mir beides per E-Mail zusenden zu lassen.P.S. Weil Du schreibst: Ich selber nutze dieses in der Form nicht mehr. Interessehalber, wie nutzt Du es jetzt?
Frohe Ostern
Jörg
Fragen? Fragen!
- Nexo
- Forum-Anfänger
- Beiträge: 9
- Registriert: So 2. Sep 2018, 17:48
- Wohnort: Wien 1210
- Mäher: Gardena R40Li
- Herstellungsjahr: 2017
- Robonect-Modul: Robonect Hx (Rev.5)
- Robonect Firmware: V1.0 Beta 7a
Re: Homematic - Einbindung
Servus Jörg,
super, Variante zwei funktioniert mit "boolean vTestlauf = false" steht dann im Skriptester nur mehr "habe fertig" und die Variablen sind geschrieben. Cool, cool, cool Danke!!
super, Variante zwei funktioniert mit "boolean vTestlauf = false" steht dann im Skriptester nur mehr "habe fertig" und die Variablen sind geschrieben. Cool, cool, cool Danke!!
- Sprite01
- Forum-Nutzer
- Beiträge: 41
- 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
- hat sich bedankt: 2 Male
- Kontaktdaten:
Re: Homematic - Einbindung
Aber piept er dann auch mit diesem Script nicht laufend bei Abfrage in "Bereitschaft" ?
--------
Gruß
Dirk
Gardena R40Li; MSW: 5.01.00 (10-10-2014); SUB: 5.00.00; MMI: 5.05.00
Gruß
Dirk
Gardena R40Li; MSW: 5.01.00 (10-10-2014); SUB: 5.00.00; MMI: 5.05.00
-
- sehr erfahrener Forum-Nutzer
- Beiträge: 705
- 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.3b
- hat sich bedankt: 8 Male
- wurde gedankt: 82 Male
Re: Homematic - Einbindung
Super!
Ich denke, dass ich morgen im laufe des Tages Zeit finde mich um die restlichen Variable zu kümmern. Wird dann noch mal eine Version mit Testlauf um sicher zu gehen und anschließend dann eine Final ohne das ganze WriteLine gedöns.
Gruß
Jörg
Ich denke, dass ich morgen im laufe des Tages Zeit finde mich um die restlichen Variable zu kümmern. Wird dann noch mal eine Version mit Testlauf um sicher zu gehen und anschließend dann eine Final ohne das ganze WriteLine gedöns.
Gruß
Jörg
Fragen? Fragen!
-
- sehr erfahrener Forum-Nutzer
- Beiträge: 705
- 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.3b
- hat sich bedankt: 8 Male
- wurde gedankt: 82 Male
Re: Homematic - Einbindung
Nein, weder der Ping noch die Anfrage per cmd=Status weckt den Mäher auf. Erst Anfragen, die sich Robonect vom Mäher holen muss weckt diesen auf. Und dann piept es.
Gruß
Jörg
Fragen? Fragen!
-
- sehr erfahrener Forum-Nutzer
- Beiträge: 705
- 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.3b
- hat sich bedankt: 8 Male
- wurde gedankt: 82 Male
Re: Homematic - Einbindung
Hallo,
So, im Anhang nun als .txt das Skript mit weiteren Variablen. Konnte jetzt nicht bis ins letzte testen ob alles geht. Fehler daher bitte melden.
Was noch fehlt ist der Zustand der Messer. Es kommt quality, hours und days. Bin mir nicht sicher ob und wenn, welche du davon brauchst bzw. haben möchtest. Wäre dann auch dankbar für Vorschläge zur Benennung der Variable.
Für "Status seit" könnte man auch die Sekunden umrechnen in ein lesbareres Format. z.B. 87753 Sekunden als "01:22:33" oder auch "1 Stunde, 22 Minuten und 33 Sekunden". Letzteres wird aber eventuell etwas zu lang sein.
Gruß
Jörg
So, im Anhang nun als .txt das Skript mit weiteren Variablen. Konnte jetzt nicht bis ins letzte testen ob alles geht. Fehler daher bitte melden.
Was noch fehlt ist der Zustand der Messer. Es kommt quality, hours und days. Bin mir nicht sicher ob und wenn, welche du davon brauchst bzw. haben möchtest. Wäre dann auch dankbar für Vorschläge zur Benennung der Variable.
Für "Status seit" könnte man auch die Sekunden umrechnen in ein lesbareres Format. z.B. 87753 Sekunden als "01:22:33" oder auch "1 Stunde, 22 Minuten und 33 Sekunden". Letzteres wird aber eventuell etwas zu lang sein.
Gruß
Jörg
- Dateianhänge
-
- Robonect Statusabfrage.zip
- (2.01 KiB) 663-mal heruntergeladen
Fragen? Fragen!
- Nexo
- Forum-Anfänger
- Beiträge: 9
- Registriert: So 2. Sep 2018, 17:48
- Wohnort: Wien 1210
- Mäher: Gardena R40Li
- Herstellungsjahr: 2017
- Robonect-Modul: Robonect Hx (Rev.5)
- Robonect Firmware: V1.0 Beta 7a
Re: Homematic - Einbindung
Hi Jörg,
vielen Dank, schaut schon super aus!
Im Anhang was das Skript in die Variablen schreibt. Der Roboter steht gerade in der Station und lädt. Folgende Werte zeigt er noch nicht an:
"Timer Startzeit" hier sind noch drei Fragezeichen "???" (Habe nur Timer 1 gesetzt von Mo-Fr 08:00 - 18:00 Uhr, die anderen stehen Leer)
"Timerstatus" hier zeigt er "Wert 2" (Welche Werte müsste ich da in der Werteliste eintragen?)
Danke, viele Grüße! Peter
vielen Dank, schaut schon super aus!
Im Anhang was das Skript in die Variablen schreibt. Der Roboter steht gerade in der Station und lädt. Folgende Werte zeigt er noch nicht an:
"Timer Startzeit" hier sind noch drei Fragezeichen "???" (Habe nur Timer 1 gesetzt von Mo-Fr 08:00 - 18:00 Uhr, die anderen stehen Leer)
"Timerstatus" hier zeigt er "Wert 2" (Welche Werte müsste ich da in der Werteliste eintragen?)
Ich finde die Benennungen in Robonect eh nicht schlecht, z.B "Messerqualität":93% etc.Was noch fehlt ist der Zustand der Messer. Es kommt quality, hours und days. Bin mir nicht sicher ob und wenn, welche du davon brauchst bzw. haben möchtest. Wäre dann auch dankbar für Vorschläge zur Benennung der Variable.
Das klingt doch super, kann man das übers Skript lösen oder muss man das irgendwie in der CCU umrechnen?Für "Status seit" könnte man auch die Sekunden umrechnen in ein lesbareres Format. z.B. 87753 Sekunden als "01:22:33"
Danke, viele Grüße! Peter