Projektvorstellung Komplettsteuerung Rasi über Homematic inkl. Wetter

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

Moderator: Lampi

Ilchi
Forum-Nutzer
Beiträge: 21
Registriert: Do 2. Jun 2016, 17:16
Mäher: Gardena R40Li
Herstellungsjahr: 2013
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: aktuell

Projektvorstellung Komplettsteuerung Rasi über Homematic inkl. Wetter

Beitrag von Ilchi »

Nachdem ich jetzt schon das zweite Jahr den sagenhaften Robonect-Umbau habe, bin ich nun endlich auch einmal dazu gekommen, Rasi komplett über die Homematic zu steuern. Mit einem einfachen An/Aus hat es begonnen, gelöst über das Setzen des Modus (Auto/ Home). Derzeit habe ich zusätzlich folgende Features umgesetzt:

Rasi fährt nur, wenn es nicht zu stark regnet.
Hintergrund war, dass sich bei uns letztes Jahr der Rasen in einen See verwandelt hat. Die Base selbst steht etwas höher und ist damit sicher. Rasi sollte also nach Hause fahren, wenn es wieder ein Starkregenereignis gibt. Außerdem ist dann bei uns der Boden etwas weicher, so dass sich gerne in den Ecken Abfahrungen durch das Drehen vom Rasi einstellten.
Gelöst wurde es mit einem Homematic-Wettersensor. Dieser misst die Regenmenge. Hieraus berechne ich einen fiktiven Pfützenstand. Hierzu zähle ich auf eine Variable alle 5 Minuten den neuen Regen und ziehe eine fiktive Verdunstung/ Versickerung ab (bei mir derzeit 1 mm/h). Wenn dieser Wert dann kleiner als 0,5 mm ist, darf Rasi fahren, darüber soll er nach Hause fahren.

Rasi fährt nur, wenn es genügend warm ist.
Hintergrund war, dass ich Rasi nicht über gefrorenen Rasen schicken wollte. Einfach gelöst: Er fährt nur noch raus, wenn es wärmer als 5 °C ist.

Rasi soll Stoppphasen später nachholen.
Hintergrund: Wenn Rasi einen Tag im Häuschen bleibt, muss er diese Mähzeit am nächsten Tag nachholen. Hierzu habe ich geschaut, wie lange er bei uns durchschnittlich je Woche mähen muss, damit das Schnittbild ok ist. Dies sind bei uns 490 Minuten oder 70 min/d. Diese addiere ich jeden Morgen auf eine Variable. Jeden Tag (bei uns werktags zwischen 8 Uhr und 16 Uhr) setze ich außerdem eine Variable auf "wahr", die Rasi anzeigt, dass er überhaupt raus darf. Wenn dann alle obigen Randbedingungen eingehalten sind, fährt er gesteuert durch ein Skript in der Homematic auch raus. Sofern die Bedingungen irgendwann nicht eingehalten sind, sendet die Homematic den Befehl "Home" zum Rasi - eben bis wieder alle Bedingungen passen. Wie lange er also am Tag fährt, hängt nun primär vom Wetter ab.
Außerdem wird jede Minute der Status abgefragt. Steht dieser auf "mäht", wird von der Sollzeit eine Minute abgezogen. Wenn die Sollzeit auf 0 endet, fährt er nach Hause. Ebenso fährt er um 16 Uhr nach Hause. Sofern dann die Sollzeit nicht auf "0" ist, muss er dies am nächsten Tag dann nachholen, da die Restzeit ja bestehen bleibt.
Positiver Nebeneffekt: Gezählt wird wirklich nur die Mähzeit. Ich habe festgestellt, dass die Ausfahrtszeiten je Zyklus nach starkem Rasenwachstum teilweise drastisch nach unten gehen - z.B. wenn er am Wochenende eben nicht gefahren ist. D.h. Rasi bleibt statt 50 Minuten nur mehr 30 Minuten je Zyklus draußen. Wenn er also stark gebraucht wird, weil der Rasen stark wächst, bleibt er so effektiv auch länger draußen, wie wenn man dies über feste An-/Auszyklen löst. Nur durch diese Steuerung ist es möglich, die Mähmeter je Tag in etwa konstant zu halten.

So, das war in Kürze das Projekt zur wetterbasierten Steuerung. Wenn ihr Interesse habt, kann ich auch bei Gelegenheit die Skripte mal raussuchen, die hier recht gut ihren Dienst verrichten.
Zuletzt geändert von Ilchi am Di 16. Mai 2017, 21:07, insgesamt 1-mal geändert.

tesso
erfahrener Forum-Nutzer
Beiträge: 82
Registriert: Mi 13. Jul 2016, 22:14
Mäher: Gardena R70Li
Firmware des Mähers (MSW): MSW 6.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: 1.2

Re: Projektvorstellung wetterbasierte Steuerung

Beitrag von tesso »

Klingt alles sehr spannend.
Ähnliche Überlegungen habe ich auch, aber noch keine Skripte erstellt.

Ich wäre sehr an deinen Skripten interessiert.

Ilchi
Forum-Nutzer
Beiträge: 21
Registriert: Do 2. Jun 2016, 17:16
Mäher: Gardena R40Li
Herstellungsjahr: 2013
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: aktuell

Re: Projektvorstellung wetterbasierte Steuerung

Beitrag von Ilchi »

Ok, dann werde ich es mal versuchen, möglichst nachvollziehbar darzustellen. Gesagt werden muss, dass ich mit der Homematic erst so langsam das Skripten versuche. Insofern funktioniert es zwar, kann aber sein, dass das ein oder andere umständlich gelöst ist. Gerne könnt ihr mich hier verbessern.

Grundlagen
Ich frage den Status des Mähers ab und speichere die Infos in Variablen. Das ist ja hier an anderer Stelle schon sehr gut erklärt, das wiederhole ich nicht. Ebenso arbeite ich gerne mit den CUX-Timern, da diese a) sehr stabil laufen und b) einfach auf verschiedene Timerwerte gestellt werden können. So ist es zum Beispiel einfach möglich, die Abfrage des Zustands in weitem Abstand zu machen, wenn der Mäher inaktiv ist, dafür in engem Raster, wenn er aktiv ist. Wie man CUX-Timer einsetzt, findet ihr am Besten im Homematic-Forum.

Philosophie
Folgende Eckpunkte soll das Tool bei mir erfüllen:
  • Der Rasenmäher soll komplett über die Homematic gesteuert werden. Alle internen und wenig flexiblen Timer werden abgestellt.
  • Der Rasen soll ausreichend gemäht werden (logisch ). Dies wird bei mir erreicht, wenn er im Schnitt 80 Minuten pro Tag mäht. Ggfls. ändere ich das auch irgendwann mal dynamisch, da die 80 Minuten nur im Sommer zählen, im ausgehenden Sommer/ Herbst reicht auch schon weniger.
  • Der Rasenmäher soll vornehmlich werktags am Vormittag fahren. Spätestens um 15.30 Uhr ist Schluss.
  • Bei Starkregen und Gefahr von Pfützen auf dem Rasen soll der Rasenmäher zuhause bleiben. Ebenso bei kalter Witterung.
  • Aussetzzeiten sollen nachgeholt werden.
Wie wurde das ganze nun umgesetzt?

Schritt 1: Regenhöhe berechnen
Als erstes habe ich eine virtuelle Pfützenhöhe berechnet. Hierzu greife ich auf eine Homematic-Wetterstation zurück. Möglich ist aber auch der Import externer Wetterdaten. Infos hierzu findet man auch wieder im Homematic-Forum. Bei mir berechne ich dann die Regenhöhe wie folgt:
HomeMatic WebUI - Google Chrome 16.05.2017 201032.bmp.jpg
HomeMatic WebUI - Google Chrome 16.05.2017 201032.bmp.jpg (195.75 KiB) 8100 mal betrachtet
download/file.php?mode=view&id=1422&sid ... 3cc7f3a6c6

Als Skript ist hinterlegt:

Code: Alles auswählen

var rainCounter = dom.GetObject(8711);
var rainCounterLast = dom.GetObject(9134);
var rainStaerke = dom.GetObject(9107);

! Versickerung: 1,0 mm/h, d.h. 1/12 je 5 Minuten

var rainStaerkealt = rainStaerke.State();
rainStaerke.State(rainStaerkealt + rainCounter.Value() - rainCounterLast.Value());
rainStaerke.State(rainStaerke.Value() - 1.0/12);

if (rainStaerke.Value() < 0.0)
  {
     rainStaerke.State(0.00);
   }

rainCounterLast.State(rainCounter.Value());
Vom Prinzip fragt die Homematic alle 5 Minuten die aktuelle Regenhöhe ab. Die Differenz wird auf die virtuelle Regenhöhe addiert. Des Weiteren wird eine fiktive Versickerung (bei mir 1 mm/h) wieder abgezogen. Dies ergibt dann eine fiktive Pfützenhöhe. Bei mir passt das mit der Versickerung von 1 mm/h ganz gut. Mit diesem Wert nahe 0 gibt es fast keine Pfützen, es besteht also nicht die Gefahr, dass Rasi ackert oder dass er gar untergeht.

Schritt 2: Zeitrahmen aktivieren
Als nächstes habe ich eine Bool-Variable definiert, die ich auf "wahr" setze, wenn Rasi zeitlich fahren darf, und auf "falsch", wenn eben nicht. Als kleines Gimmick bzw. im Vorgriff auf die weitere Steuerung: Wenn Rasi an den Vortagen zu wenig gemäht hat, muss er eher anfangen. Normal ist Beginn um 8.00 Uhr, ansonsten 7.00 Uhr.
Aktivzeit.jpg
Aktivzeit.jpg (150.35 KiB) 8100 mal betrachtet
download/file.php?mode=view&id=1425&sid ... 3cc7f3a6c6
Was man hier auch sieht: Wenn es aktiv gesetzt wird, werden gleichzeitig der Timer für das Abrufen des Status des Rasis sowie zum Starten des Rasis auf kurze Zeit gesetzt.
Die Deaktivierung des Zeitrahmens ist analog, bei mir eben fest auf 15.30 Uhr gestellt.

Schritt 3: Laufzeitberechnung
Wie oben beschrieben, erreiche ich ein gutes Mähergebnis, wenn Rasi jeden Tag 80 Minuten mäht (reine Mähzeit, keine Standzeiten etc.). Hierzu habe ich also eine Variable angelegt, auf die ich jeden Morgen 80 Minuten addiere (normaler Timeraufruf.

Code: Alles auswählen

var RasiLaufzeitSoll = dom.GetObject(11930);
RasiLaufzeitSoll.State(RasiLaufzeitSoll.Value()+80.00);
Hinweis: Bei mir werden jeden Tag 80 Minuten addiert. Rasi läuft aber nur werktags. D.h. am Montag steht die Variable auf mindestens 240 Minuten.

Wenn Rasi nun mäht, ziehe ich für jede "Mähminute" eine Minute vom Wert ab. Dies erfolgt wieder über den Vergleich der vorab ausgelesenen Statuswerte:
maehzeit.jpg
maehzeit.jpg (135.39 KiB) 8100 mal betrachtet
download/file.php?mode=view&id=1427

Das dazugehörige Skript ist auch nicht weiter schwierig:

Code: Alles auswählen

var RasiLaufzeitSoll = dom.GetObject(11930);
RasiLaufzeitSoll.State(RasiLaufzeitSoll.Value()-1.00);
Das Schöne daran: Wenn der Rasen mal etwas höher ist, sinkt bei mir automatisch die Laufzeit je Zyklus. Im Umkehrschluss muss er dann öfter raus, als bei gemähtem Gras. Dies ist also ein gewisser Schutz, dass der Rasen zu platt gemäht wird.

Schritt 4: Die Steuerung des Rasenmähers
Jetzt kommt der wesentliche Schritt, das Herzstück. Alleine vom Aktivsetzen der Variable fährt Rasi ja noch nicht los ;-). Hierzu habe ich nun folgendes Programm - nicht erschrecken, sieht komplexer aus, als es ist.
Rasisteuerung.jpg
Rasisteuerung.jpg (298.52 KiB) 8100 mal betrachtet
download/file.php?mode=view&id=1426
Generell wird dieses Programm während der Aktivzeit des Rasis minütlich aufgerufen. Wenn nun alle Eckpunkte passen, dass der Rasenmäher auch starten soll (aktiv auf wahr, Temperatur > 5°C, Regenhöhe kleiner als 0,5 mm, Solllaufzeit >0) und wenn er bisher eben nicht aktiv ist, wird er nun auf aktiv gesetzt (Status auf Auto, keine gespeicherten Timer im Rasi selbst). Dann fährt er los.
Jede Minute wird geprüft, ob weiterhin alle Eckpunkte eingehalten sind. Sind sie es, bleibt er draußen. Sind sie es nicht, wird der Status auf "Home" gesetzt. D.h. wenn es stärker regnet, wenn die Solllaufzeit erreicht ist etc. oder spätestens, wenn das Zeitfenster vorbei ist, fährt er nach Hause. Hier prüft er dann jede halbe Stunde, ob er wieder raus darf.
Die Codes zum Senden des Status sind ja hier im Forum ausreichend dokumentiert. Hier mal der, bei dem Rasi auf "Auto" gestellt wird:

Code: Alles auswählen

string stderr;
string stdout;
string url="http://192.168.126.3/xml?cmd=mode&mode=auto";
system.Exec("wget -q -O - "#url, &stdout, &stderr);
Damit ich ein wenig per Hand eingreifen kann, habe ich mir auf einen Homematic-Schalter noch folgende zusätzliche Funktionen (hier nicht näher ausgeführt) gelegt:
  • Deaktivierung: Die Variable "Mähroboter_aktiv" wird auf falsch gesetzt. Hierdurch fährt Rasi sofort nach Hause, z.B.
    wenn man den Rasen anderweitig braucht.
  • Erhöhung der Laufzeitsoll um 30 Minuten: Wenn man den Anschein hat, dass Rasi ein wenig länger raus sollte.
  • Aktivierung: Die Variable "Mähroboter_aktiv" wird für eine Stunde auf "wahr" gesetzt. Hierdurch kann man ihn auch mal schnell am Wochenende rausschicken.
So, das war im Wesentlichen erst einmal das Projekt, Rasi komplett über die Homematic zu steuern. Ich würde mich über Anregungen freuen. Vielleicht gibt es ja noch interessante Ideen, was man sonst noch so umsetzen kann.

Benutzeravatar
saugbaer
Forum-Veteran
Beiträge: 1371
Registriert: Mo 18. Apr 2016, 01:30
Wohnort: Ramelsloh
Mäher: Husqvarna Automower 310
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.5)
Robonect Firmware: V1.2 08.10.2020 17:06
hat sich bedankt: 1 Mal
wurde gedankt: 3 Male

Re: Projektvorstellung Komplettsteuerung Rasi über Homematic inkl. Wetter

Beitrag von saugbaer »

@Ilchi ...pflegst du bitte dein Profil....danke ;)
:mrgreen: Ich bin nicht die Signatur, ich putz hier nur :mrgreen:
AVM 7490 Fw.7.12 + 2AP's (FRITZ!Powerline 546E + FRITZ!WLAN Repeater 1160 Fw.7.12)
HX + APP + VPN + Kamera + LED

Lorien
Forum-Anfänger
Beiträge: 7
Registriert: Fr 2. Jun 2017, 13:19
Mäher: Gardena R70Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: 0.9e

Re: Projektvorstellung Komplettsteuerung Rasi über Homematic inkl. Wetter

Beitrag von Lorien »

Super Programm, danke fürs Posten.

Bin ein wenig ein Noob mit scripten aber was für Variabeln sind das alles was ich noch erstellen muss und was für Typen ?
Sind diese Timer auch Variablen ?

Bei mir werde ich nur prüfen obs regent, nehmen an dann kann ich den ersten schritt weglassen und im hauptprogramm natürlich dann auch die Prüfung davon.


Grüsse

Ilchi
Forum-Nutzer
Beiträge: 21
Registriert: Do 2. Jun 2016, 17:16
Mäher: Gardena R40Li
Herstellungsjahr: 2013
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: aktuell

Re: Projektvorstellung Komplettsteuerung Rasi über Homematic inkl. Wetter

Beitrag von Ilchi »

Hallo,

kein Problem. Vor der Homematic konnte ich gar nicht skripten - jetzt kann ich mir wenigstens alles zusammenkopieren und ein wenig anpassen.

Zu Deinen Fragen:
Ich habe die Variablen eingerichtet, wie sie beim anderen Thread zum Auslesen des Status enthalten sind. Hiervon nutze ich aber im Zuge der obigen Skripte nur die Variable "Mähroboter-Status" (Text) zur Berechnung der Mähzeit. Ansonsten habe ich noch folgende Variablen eingerichtet:
  • Mähroboter-Aktiv: wahr/falsch; wahr, wenn die Zeit zum Mähen gekommen ist, falsch, wenn sie wieder abgelaufen ist
  • RasiLaufzeitSoll: Zahl; Zahl in Minuten, die er noch mähen soll (wird derzeit jeden Tag um 95 erhöht)
Die anderen Variablen zur Bewertung des Wetters brauchst Du ja dann nicht, wenn Du über den Status "Regen/ Trocken" gehst. Meiner Erfahrung nach ist dieser aber sehr wackelig: D.h. der steht bei mir auch gerne mal auf "trocken", wenn es dauerhaft regnet. Ggfls. kannst Du das aber abfangen, wenn Du für den Rasenmäher erst "trocken" ansiehst, wenn der Status des Wettermelders für längere Zeit, z.B. 15 Minuten, auf "trocken" steht.

Die Timer sind keine extra Variablen, das sind Kanäle virtueller Geräte.

Viel Erfolg! Meiner zieht gerade nach dem Wochenende Ruhezeit ganz brav seine Kreise im Garten...

idznak
Forum-Nutzer
Beiträge: 13
Registriert: Di 21. Jun 2016, 13:42
Wohnort: Raubling
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: 0.9e

Re: Projektvorstellung Komplettsteuerung Rasi über Homematic inkl. Wetter

Beitrag von idznak »

Tolle Lösung. Ich werde es kommende Woche in meiner openhab2 Lösung mal versuchen nachzubauen.

bezibaerchen
erfahrener Forum-Nutzer
Beiträge: 87
Registriert: Mi 4. Mai 2016, 14:57
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: 0.9e

Re: Projektvorstellung Komplettsteuerung Rasi über Homematic inkl. Wetter

Beitrag von bezibaerchen »

Bei OpenHAB kann ich ggf. auch behiflich sein - gibt es übrigens (mehrere) dedizierte Threads dazu in diesem Forum.
MSW-Software: R40Li
MSW-Version: 5.01.00
MSW-Datum: 2014-10-10 13:44:38
SUB-Version: 5.00.00

idznak
Forum-Nutzer
Beiträge: 13
Registriert: Di 21. Jun 2016, 13:42
Wohnort: Raubling
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.4)
Robonect Firmware: 0.9e

Re: Projektvorstellung Komplettsteuerung Rasi über Homematic inkl. Wetter

Beitrag von idznak »

Auf deine angebotene Hilfe greife ich gerne zurück.
Wie kannnich in oh2 die vorigen Berechnungen vornehmen? Muss ich diese über ein rule file durchführen? Bisher verwende ich nur die rule GUI.

bezibaerchen
erfahrener Forum-Nutzer
Beiträge: 87
Registriert: Mi 4. Mai 2016, 14:57
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: 0.9e

Re: Projektvorstellung Komplettsteuerung Rasi über Homematic inkl. Wetter

Beitrag von bezibaerchen »

Da musst Du Dir rules files und evtl. auch transformation files bauen. Sowas musst dann aber besser in der OpenHAB Community fragen bzw. die Dokumentationen lesen.
Ich mache keine Berechnungen, ich mach es mir mit Regen eher einfach.
Wenn der Netatmo Regenmesser eine gewisse Messgrenze überschreitet, schalte ich eine Zustandsvariable. Ist die auf an, schicke ich an Robonect "Home".
MSW-Software: R40Li
MSW-Version: 5.01.00
MSW-Datum: 2014-10-10 13:44:38
SUB-Version: 5.00.00

Antworten

Zurück zu „Homematic-Nutzer“