Homematic - Einbindung

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

Moderator: Lampi

mrlee
sehr erfahrener Forum-Nutzer
Beiträge: 121
Registriert: Do 10. Mär 2016, 17:56
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 4.xx.xx
Herstellungsjahr: 2012
Robonect-Modul: Robonect H30x (Rev.0)
Robonect Firmware: 1.0b2

Homematic - Einbindung

Beitrag von mrlee »

Moin!

Wollte mal fragen ob Homematic-User dabeind...würde morgen mal anfangen Dolly einzubinden...

Bei mir läuft ne CCU2 mit cuxd und nen RASPI mit IOBroker sowie CCU.io

...wenn jemand auch dabei ist...Ideen und Vorgehen gerne austauschen!

bis denne
MrLee

Timberland
erfahrener Forum-Nutzer
Beiträge: 99
Registriert: Fr 4. Mär 2016, 21:56
Wohnort: Dessau-Roßlau
Mäher: Gardena R45Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2013
Robonect-Modul: Robonect H30x (Rev.1)
Robonect Firmware: 1.0beta

Re: Homematic - Einbindung

Beitrag von Timberland »

Bin ebenfalls mit einer CCU2 vertreten und habe noch einen Raspberry auf dem die Homebridge für Siri läuft.
Es läuft alles womit ganz gut und ich würde den Mäher über die Webapi starten / stoppen lassen und ggf ein paar Werte auslesen (Akku stand etc) (Wenn das überhaupt möglich ist. hab da noch nicht groß reingeschaut...)

Timberland
erfahrener Forum-Nutzer
Beiträge: 99
Registriert: Fr 4. Mär 2016, 21:56
Wohnort: Dessau-Roßlau
Mäher: Gardena R45Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2013
Robonect-Modul: Robonect H30x (Rev.1)
Robonect Firmware: 1.0beta

Re: Homematic - Einbindung

Beitrag von Timberland »

So, ich habe die letzten Stunden damit verbracht mich mit der Skriptsprache rumzuärgern :D Daher ist das alles auch quick n dirty, da ich nicht wirklich programmieren gelernt habe und mir alles selber beigebracht (zusammengeklaut) habe. Aber immerhin verstehe ich schon mal was da so abläuft. ;)

Es werden 4 Programme benötigt: 3 zum Schalten des Modus und eins zum auslesen der Statusmeldungen
Bildschirmfoto 2016-03-12 um 19.46.54.png
Bildschirmfoto 2016-03-12 um 19.46.54.png (59.87 KiB) 11761 mal betrachtet
Weiterhin müssen folgende Systemvariablen (alle Strings) angelegt werden:
Bildschirmfoto 2016-03-12 um 19.43.01.png
Bildschirmfoto 2016-03-12 um 19.43.01.png (81.96 KiB) 11761 mal betrachtet
EDIT: Ich habe die Variable R45Li-Mähzeit hier vergessen! Diese muss ebenfalls als Zeichenkette angelegt werden!

Im Programm wird eine periodische Wiederholung eingestellt, sodass die CCU die Systemvariable aller paar Sekunden aktualisiert.
@Admin: Gäbe es hier ein Problem mit einer Abfrage aller 30 Sekunden? Ich will das Modul nicht überlasten...
Bildschirmfoto 2016-03-12 um 19.42.20.png
Bildschirmfoto 2016-03-12 um 19.42.20.png (73.62 KiB) 11761 mal betrachtet
Als Aktivität wählt man "Skript" und fügt folgendes ein:

Code: Alles auswählen

string Url='http://192.168.0.67/json?cmd=status';
var stdout;
var posStart;
var posEnd;
var preis;
var substring;
var posValueStart;
var posValueEnd;
var posValue;
string stderr;
string stdout;
string pos;
string substring2;
WriteLine("strings gesetzt");
system.Exec("wget -q -O - "#Url, &stdout, &stderr);
WriteLine("Abrufen");
WriteLine(stdout);


posStart = '{"status": ';
posEnd = ', "mode';
pos = stdout.Find(posStart) + posStart.Length();
WriteLine("pos");
WriteLine(pos);
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;   
WriteLine(substring);
if (substring == 0) {dom.GetObject('R45Li-Status').State("schläft");}
if (substring == 1) {dom.GetObject('R45Li-Status').State("parkt");}
if (substring == 2) {dom.GetObject('R45Li-Status').State("mäht");}
if (substring == 3) {dom.GetObject('R45Li-Status').State("sucht die Ladestation");}
if (substring == 4) {dom.GetObject('R45Li-Status').State("lädt auf");}
if (substring == 5) {dom.GetObject('R45Li-Status').State("sucht");}
if (substring == 7) {dom.GetObject('R45Li-Status').State("Fehler!");}
WriteLine("Status ende!");



posStart = '"mode": ';
posEnd = ', "batt';
pos = stdout.Find(posStart) + posStart.Length();
WriteLine("pos");
WriteLine(pos);
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;   
WriteLine(substring);
if (substring == 0) {dom.GetObject('R45Li-Modus').State("Auto");}
if (substring == 1) {dom.GetObject('R45Li-Modus').State("Manu");}
if (substring == 2) {dom.GetObject('R45Li-Modus').State("Home");}
if (substring == 3) {dom.GetObject('R45Li-Modus').State("Demo");}
WriteLine("Modus ende!");



posStart = '"battery": ';
posEnd = ', "hours';
pos = stdout.Find(posStart) + posStart.Length();
WriteLine("pos");
WriteLine(pos);
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;   
WriteLine(substring);
dom.GetObject('R45Li-Battery').State(substring.ToString(1));
WriteLine("Batterie ende!");


posStart = '"hours": ';
posEnd = '}:"timer';
pos = stdout.Find(posStart) + posStart.Length();
WriteLine("pos");
WriteLine(pos);
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;   
WriteLine(substring);
dom.GetObject('R45Li-Laufzeit').State(substring.ToString(1));
WriteLine("Laufzeit ende!");

posStart = 'timer": {"status": ';
posEnd = '}}';
pos = stdout.Find(posStart) + posStart.Length();
WriteLine("pos");
WriteLine(pos);
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;   
WriteLine(substring);
string SysMonat = system.Date("%d");
integer Tag = SysMonat.ToInteger();
if (substring == Tag) {dom.GetObject('R45Li-Mähtag').State("Heute");}
if (substring == Tag + 1) {dom.GetObject('R45Li-Mähtag').State("Morgen");}
if (substring == Tag + 2) {dom.GetObject('R45Li-Mähtag').State("Übermorgen");}
else {dom.GetObject('R45Li-Mähtag').State("Fehler!");}
WriteLine("Tag ende!");



posStart = '","time":"';
posEnd = '","unix';
pos = stdout.Find(posStart) + posStart.Length();
WriteLine("pos");
WriteLine(pos);
substring = stdout.Substr(pos, 10).StrValueByIndex(posEnd, 0) ;   
WriteLine(substring);
dom.GetObject('R45Li-Mähzeit').State(substring.ToString(1));
WriteLine("Mähzeit ende!");
Die Programme zum setzen der Modi sind ebenfalls Skripte. Hier gibt man jedoch bei den Bedingungen nichts an und fügt nur bei Aktivität das folgende Skript hinzu:

Code: Alles auswählen

string stderr;
string stdout;
string url="http://192.168.0.67/xml?cmd=mode&mode=auto";
system.Exec("wget -q -O - "#url, &stdout, &stderr);


Wer mag kann hier als 2. Skript das o.a. zum Auslesen der Variablen noch hinzufügen. So werden die Systemvariablen nach dem Setzen des Modus wieder aktualisiert.
Für die weiteren Skript zum Setzen der Modi "Home" und MAN" muss lediglich das "auto" gegen "home" und "man" ersetzt werden!


Leider funktioniert bei mir das Auslesen des Timers nicht, daher habe ich zwar implementiert aber nicht testen können!
Ich bekomme nur diesen Status:

Code: Alles auswählen

{"successful": true:"status": {"status": 1, "mode": 0, "battery": 73, "hours": 0}:"timer": {"status": 2}}
Liegt vielleicht daran, dass Shawn nicht in der Ladestation sitzt?

Timberland
erfahrener Forum-Nutzer
Beiträge: 99
Registriert: Fr 4. Mär 2016, 21:56
Wohnort: Dessau-Roßlau
Mäher: Gardena R45Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2013
Robonect-Modul: Robonect H30x (Rev.1)
Robonect Firmware: 1.0beta

Re: Homematic - Einbindung

Beitrag von Timberland »

So sieht das Ganze dann auf dem iPhone mit PocketControl aus:
Foto 12.03.16, 20 19 44.png
Foto 12.03.16, 20 19 44.png (445.89 KiB) 11752 mal betrachtet

Admin
Administrator
Beiträge: 2778
Registriert: Di 19. Jan 2016, 18:34
Wohnort: Kiel
Mäher: Gardena SILENO City 500
Firmware des Mähers (MSW): MSW 11.xx.xx
Herstellungsjahr: 2017 (Modell 2018)
Robonect-Modul: Robonect Hx (Rev.5)
Robonect Firmware: stets die Allerneuste :-)
hat sich bedankt: 1 Mal
wurde gedankt: 2 Male
Kontaktdaten:

Re: Homematic - Einbindung

Beitrag von Admin »

Cool!! :shock: 8-)
Werbefläche zu vermieten. :lol:

mrlee
sehr erfahrener Forum-Nutzer
Beiträge: 121
Registriert: Do 10. Mär 2016, 17:56
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 4.xx.xx
Herstellungsjahr: 2012
Robonect-Modul: Robonect H30x (Rev.0)
Robonect Firmware: 1.0b2

Re: Homematic - Einbindung

Beitrag von mrlee »

Moin!

Sehr cool...bin nur etwas neidisch das Du schon zum Einbinden gekommen bist und ich noch keine Zeit hatte :-(

Hab mal kurz Dein Script für den Status ausprobiert...ich hatte das Problem das das Ende des Strings nicht korrekt gefunden wurde...Ergebnis sah dann aus wie bei Dir in "Mähzeit".

Habe mal als QuickFix aus
posEnd = '}:"timer';
folgendes gemacht:
posEnd = '}';
Schätze er hat Probleme mit den Anführungszeichen. Vermutlich müssten diese auch als Escapesequenz gehen (\")...teste ich nachher mal.


Aber auf jeden Fall extrem cool!!!!

mrlee
sehr erfahrener Forum-Nutzer
Beiträge: 121
Registriert: Do 10. Mär 2016, 17:56
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 4.xx.xx
Herstellungsjahr: 2012
Robonect-Modul: Robonect H30x (Rev.0)
Robonect Firmware: 1.0b2

Re: Homematic - Einbindung

Beitrag von mrlee »

Moin!

So, hab mich mal ein bsichen bei Deinem Script bedient (ca. 97% 8-) )...vielen Dank!

sieht aktuell so aus:
Unbenannt.PNG
Unbenannt.PNG (110.39 KiB) 11670 mal betrachtet
Jetzt kommt noch:
- Regensperre (an/aus)
- Timer-Einstellungen
- dedizierte Knöpfe für 2 x vorne / 2x hinten

In der Steuerung fange ich an mit:
- Dolly Feierabend wenn Leute im Garten
- Regensperre
- sync mit den Beregnern

Timberland
erfahrener Forum-Nutzer
Beiträge: 99
Registriert: Fr 4. Mär 2016, 21:56
Wohnort: Dessau-Roßlau
Mäher: Gardena R45Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2013
Robonect-Modul: Robonect H30x (Rev.1)
Robonect Firmware: 1.0beta

Re: Homematic - Einbindung

Beitrag von Timberland »

Coole Sache! Nur weiter so! Ist das ccu.io?
Mir ist der Haken, dass meine Mähzeit gar nicht im Statusbericht auftaucht... Daher war das n Schuss ins Blaue...

mrlee
sehr erfahrener Forum-Nutzer
Beiträge: 121
Registriert: Do 10. Mär 2016, 17:56
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 4.xx.xx
Herstellungsjahr: 2012
Robonect-Modul: Robonect H30x (Rev.0)
Robonect Firmware: 1.0b2

Re: Homematic - Einbindung

Beitrag von mrlee »

Klar geht das weiter...ab Ostern wird gedüngt...dann muß das laufen :-)

Der Screenschot ist von vis (IOBroker). Läuft aber auch unter Webmatic.

Im mOment habe ich nur noch nen paar Probleme die denke ich mit 0.5 gefixt sind...dann brauche ich noch die API für die neuen Funktionen und dann gehts weiter...

Ohne Deinen Start hätte ich noch nicht mal das!

bis denne
Mr.Lee

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 »

Dann sollte ja eine Einbindung in DashUI auch möglich sein ?
--------
Gruß
Dirk

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

Antworten

Zurück zu „Homematic-Nutzer“