Feiertags- und Regensteuerung via ioBroker und HomeMatic (Outline)

  • Hi,


    im Garagenthread kam der eine oder andere Wunsch, meine Lösung zur Feiertags- und Regensteuerung eines überdachten Landroid S vorzustellen. Daher hier kurz erstmal die Skizze. Wenn ich Zeit finde und Interesse besteht, kann ich auch noch etwas ins Detail gehen.


    Anforderung:
    1. Der Landroid S bietet derzeit keine Möglichkeit in der App Feiertage auszuschließen. Genau das ist aber meine Anforderung.
    2. Eine Überdachung des Mähroboters bietet zwar etwas Schutz vor Witterung (auch wenn die Geräte das konstruktionsbedingt vertragen sollten), führen aber den Regensensor ad absurdum. Ein fetter Gewitterschauer macht den Garten triefnass - der Landroid würde nach Abklingen des Regens mangels Infos dennoch in den nassen Garten rausfahren und mähen. So lange bis ggf. doch noch durch Büsche/Bäume Restwasser auf dem Sensor tropft. Diese Ausfahrt soll ebenfalls vermieden werden.


    Was nutze ich zur Realisierung?
    1. Steuerung:
    HomeMatic CCU2 auf einem Raspberry Pi3B (Raspberrymatic) mit diversen Sensoren und Aktoren, u.a einer Wetterstation.
    Die Aktoren/Sensoren kommunizieren mit der CCU2 drahtlos via BidCos. Andere Systeme (SmartPhone Apps, andere Heimautomatisierungssysteme wie ioBroker) können via XML-API angebunden werden.
    2. HomeMatic Wetterstation mit Regenmengenmesser
    3. ioBroker auf einem weiterne Raspberry Pi3B, integriert die HomeMatic via XML-API
    4. ioBroker Adapter für den Landroid S
    5. ioBroker Adapter für Deutsche Feiertage


    Meine HomeMatic steuert bei mir u.A. die Rolläden (dafür brauche ich u.A. den ioBroker Feiertage Adapter damit die Rolläden nicht so früh wie an normalen Werktagen hochfahren) sowie die Bewässerung des Rasens (hierfür messe ich die tägliche Regenmenge und ordne abhängig von der Temperatursumme des Tages eine bestimme Bewässerungszeit zu). Daher kenne ich in der HomeMatic die Feiertage (Systemvariable FEIERTAG_HEUTE ) sowie die Regenmenge des aktuellen Tages, die des Vortages, die aktuelle Temperatur und die Temperatursumme des Vortages.


    Die HomeMatic setzt nun nach Auswertung der obigen Daten eine weitere Systemvariable, TRIGGER_Sperre_Landroid.
    true: zu nass, zu kalt oder Feiertag
    false: trocken, warm genug und kein Feiertag.
    (Details lasse ich hier mal weg, kann ich ggf. später nachreichen.)


    Auf die Systemvariable lauscht der ioBroker und setzt im Fall true die mowTimeExtended auf -100.
    Siehe dazu auch: https://forum.iobroker.net/viewtopic...art=20#p137326


    Geht die HomeMatic Systemvariable TRIGGER_Sperre_Landroid auf false, setzt ioBroker die mowTimeExtended auf 0 und es gilt wieder der normale Zeit-Schedule des Landroid.


    Heutige Rahmenbedingungen:
    Gestern war es warm genug (Temperatursumme über den Tag gemessen)
    Regenmenge gestern unter Schwellwert 5mm
    Regenmenge heute 0
    Heute ist kein Fertag
    ->
    TRIGGER_Sperre_Landroid = false.


    Die Sperre ist heute also nicht aktiv, der Mähzeit-Slider sitzt in der App auf 0 und der Landroid darf mähen. :jummp:


    Gruß,
    Oli


    P.S.: Wie im Garagenthread erwähnt, ist die Lösung zweifellos mit Kanonen auf Spatzen geschossen wenn kein ioBroker oder keine externe Möglichkeit besteht, die Regenmenge zu messen. Da bei mir die Infrastruktur und ausreichend Spieltrieb vorhanden ist - siehe oben. :wink5:

  • Danke Oli. Ein neues Bastelprojekt, welches dieses Jahr umgesetzt werden möchte. :)

    WORX WR110MI (SB700) für 270m²
    FW: 3.52
    FritzBox 7590 - Mesh WLAN mit 1750E Repeater

  • Das werde ich mal im Auge behalten. Ich plane die "all-in-one" Lösung von ioBroker auf einem Raspberry einzusetzen. Bin gerade dabei, die UIs zu programmieren. Sobald alles läuft, kommt dann ein Homematic Regensensor dazu.
    Werde mich dann, wenn erforderlich, melden.


    Gruß


    Hans-Jürgen

    Landroid WR106 Si
    Rasenfläche ca. 100m²
    FW: 3.51
    Windows App (Win10pro): 0.0.24
    Android App: 1.1.9
    Fritzbox 7272
    Fritz WLan Repeater 450E
    IoBroker mit Homematic und Landroid Adapter (Raspberry 2+)

  • (Details lasse ich hier mal weg, kann ich ggf. später nachreichen.)


    Könntest du bitte die prinzipiellen Ansätze/Formeln/Erfahrung der letzten Wochen beschreiben.


    Ich würde den Ansatz gern in IP-Symcon umsetzen, die jeweiligen Daten stehen mir auch zur Verfügung.

    WR106SI.1, FW 3.45; 120 m², zwei Zonen

  • Hi, vielen Dank dafür.
    Ich möchte das auch noch machen. Ziemlich identisch zu Deiner Variante.


    Allerdings würde ich vielleicht noch die Planung der Mähzeiten hinzufügen. Geht das?
    Sprich, er mähte heute bereits etwa 3 Stunden von 6, dann gab es Regen, ich hole ihn zurück und lasse ihn später die restlichen 3 Stunden mähen.


    Danke und Gruß
    Marc

  • Kann ich machen, sobald ich dazu komme.


    Momentan gibt es allerdings noch ein paar andere Dinge, die erledigt werden wollen, daher dauert's noch etwas.


    Reminder ist gesetzt.


    Gruß,
    Oli




    Gesendet von meinem Nexus 5X mit Tapatalk

  • Könntest du bitte die prinzipiellen Ansätze/Formeln/Erfahrung der letzten Wochen beschreiben.


    Ich würde den Ansatz gern in IP-Symcon umsetzen, die jeweiligen Daten stehen mir auch zur Verfügung.


    Vorab:

    • Funktionierende ioBroker Installation und die Knowhow-Basics dazu mit Landroid S Adapter wird vorausgesetzt. Hier in meinem Fall die HomeMatic Zentrale (RaspberryMatic mit Wetterstation) und die Basics dazu ebenfalls. Bei der Anpassung an andere Hausautomatisierungssysteme kann ich leider nicht helfen.
    • Ich habe die Sperre eine ganze Weile wegen Nachsaat plus Bewässerung nicht genutzt und hier nochmal beim Dokumentieren etwas angepasst. Man kann es ganz, ganz sicher eleganter machen, im wesentlichen ist das die bisher quick & dirty zusammengeklickte Lösung.
    • Der Schedule des Mähers an sich wird über die Worx Cloud gesteuert. Die HomeMatic / ioBroker Steuerung übernimmt dies nicht, sondern nutzt lediglich die Möglichkeit die Mähzeit bei Deaktivierung auf 0 zu setzen (-100%) oder bei Aktivierung auf 100% (+0%). Für die von @Airwave umfängliche angedachte Steuerungslösung (wieder rausfahren, nachdem der Regen eine Weile vorbei ist) taugt das hier leider nicht. Sorry, Airwave. Kann man aber sicher dennoch machen. Vielleicht hilft der ioBroker Thread hier weiter.


    Ich pack hier einfach mal die WebUI-Programme und den ioBroker JS Code rein, wie er derzeit besteht.


    Die HomeMatic-Seite:


    Sperre täglich 6:30 prüfen und ggf. deaktivieren:
    sperre-landroid-deaktivieren.jpg


    Hier wird geprüft ob
    1. Die Regenmenge <= 0,5mm ist
    und
    2. Der Mäher bei Trockenheit aktiviert werden soll. (siehe auch Anmerkung unten)
    und
    3. Heute kein Feiertag ist. Diese Variable setzt der ioBroker auf der CCU über den Feiertags-Adapter. Benötige ich noch für die Rolladensteuerung.
    und
    4. Trigger ist die Uhrzeit 6:30


    Wenn das der Fall ist, wird der Mäher aktiviert mit TRIGGER_Sperre_Landroid = nein/false.



    Sperre täglich 7:00 prüfen und ggf. aktivieren. Deaktiviert ggf. wieder einen zuvor aktivierten Mäher.
    sperre-landroid-aktivieren.jpg


    Hier wird geprüft ob
    1. Die Systemvariable zur Aktivierung der Regensperre gesetzt ist und die Regenmenge > 0,5mm ist. Trigger ist die Aktualisierung der Regenmenge, die durch die Wetterstation gesetzt wird. (siehe auch Anmerkung unten)
    oder
    2. Heute Feiertag ist. Diese Variable setzt der ioBroker auf der CCU über den Feiertags-Adapter. Benötige ich noch für die Rolladensteuerung. Trigger ist die Aktualisierung der Variable.
    oder
    3. die Temperatursumme des Vortages unterschritten wurde (verwende ich zur Ermittlung der Bewässerungsmenge und lasse ich hier weg. Zur Orientierung: Temperatursumme 100 ergibt sich bei einer Durchschnittstemperatur von ~8°C von 7:00-18:00 gemessen.). Trigger ist die Uhrzeit.
    oder
    4. die Temperatur um 7:05 unter 8°C liegt. Trigger ist die Uhrzeit.


    Wenn das der Fall ist, wird die Sperre aktiviert TRIGGER_Sperre_Landroid = ja/true.


    Bzgl. "Regen setzt Mäher inaktiv" und "Trockenheit setzt Mäher aktiv" - kann man natürlich auch mit einer Variable checken. Hier wird Deaktivierung bei Regen und Aktivierung bei Regen getrennt gesteuert. Im Automatikmodus sind hier beide auf ja/true zu setzen.


    Im ioBroker wird folgendes JS verwendet und reagiert auf die Systemvariable TRIGGER_Sperre_Landroid, IDs sind an die jeweiligen Gegebenheiten anzupassen:
    (Anmerkung: Hat aus mir nicht ersichtlichen Gründen via Blockly nicht geklappt, daher JS. Ursache war die === Comparator Expression, die in Blockly nur mit == verwendet wird, dann aber nicht sauber triggert, sprich keine sichtbare Aktivität im Log oder am Mäher.)



    Im Log äußern sich Änderungen von TRIGGER_Sperre_Landroid wie folgt:


    iobroker-landroid-log.PNG



    Hier noch ergänzend das Setzen des Feiertags über ioBroker per Blockly/JS, IDs sind an die jeweiligen Gegebenheiten anzupassen:
    iobroker-blockly-feiertag.jpg



    Code
    1. on({id: "feiertage.0.heute.boolean"/*Feiertag heute?*/, change: "ne"}, function (obj) {
    2. var value = obj.state.val;
    3. var oldValue = obj.oldState.val;
    4. if ((obj.state ? obj.state.val : "") == true) {
    5. setStateDelayed('hm-rega.0.63340', true, false, parseInt(0, 10), false);
    6. } else {
    7. setStateDelayed('hm-rega.0.63340', false, false, parseInt(0, 10), false);
    8. }
    9. });


    So viel dazu. Ich hoffe, das genügt erstmal oder hilft zumindest einen Schritt weiterzukommen.


    Gruß,
    Oli

  • Ja vielen Dank. Hatte nicht gewusst das Du dort noch viel in Homematic machst. Ich bin dabei mir auch ein Programm zu schreiben. Ich nutze dafür aber ausschließlich iobroker. In Homematic sind bei mir nur reine Homematic Sachen und selbst die migrieren ich gerade nach iobroker.
    Bin derzeit aber noch nicht so weit mit dem Script.


    Derzeit kann man ein Mähintervall einstellen von 1-3 Tage (habe nur eine kleine Rasenfläche). Vom Adapter das Wetter hole ich die Regenmengen zwischen 11-15 Uhr. Die erste Regen freie Stunde ist dann die Mähzeit. Perfekt ist das noch nicht. Heute hat der Roboter um 7:30 Regen erkannt. Die Verzägerung endete erst um 12. Da es um 11 Uhr nicht geregnet hat, hätte das Script 11 Uhr als Mähzeit gesetzt. Das muss ich noch abfangen.
    Derzeit lasse ich allerdings erst einmal nur Logs schreiben. Wenn ich zufrieden bin erfolgt dann der Echtbetrieb.

  • Ja vielen Dank. Hatte nicht gewusst das Du dort noch viel in Homematic machst. Ich bin dabei mir auch ein Programm zu schreiben. Ich nutze dafür aber ausschließlich iobroker. In Homematic sind bei mir nur reine Homematic Sachen und selbst die migrieren ich gerade nach iobroker.


    Ja, denke das wird auch erstmal so bleiben. Will die essentiellen Funktionen (Raspberrymatic) gerne auf einem Pi haben, der sehr schnell wiederherzustellen ist.
    ioBroker ist bei mir eher nice to have.



    Derzeit kann man ein Mähintervall einstellen von 1-3 Tage (habe nur eine kleine Rasenfläche). Vom Adapter das Wetter hole ich die Regenmengen zwischen 11-15 Uhr. Die erste Regen freie Stunde ist dann die Mähzeit. Perfekt ist das noch nicht. Heute hat der Roboter um 7:30 Regen erkannt. Die Verzägerung endete erst um 12. Da es um 11 Uhr nicht geregnet hat, hätte das Script 11 Uhr als Mähzeit gesetzt. Das muss ich noch abfangen.
    Derzeit lasse ich allerdings erst einmal nur Logs schreiben. Wenn ich zufrieden bin erfolgt dann der Echtbetrieb.


    OK, wie ist das Thema Kantenschnitt gehandhabt?
    Startet der Mäher einmal im normalen Schedule der Worx Landroid Cloud (wenn ja, wie programmiert?) Der Kantenschnitt kann ja weder via App noch via ioBroker Adapter direkt gestartet werden, oder?


    Gruß,
    Oli

  • Ich kann in iobroker sehen an welchen Tag der Kantenmähmodus aktiv ist. Somit gehe ich davon aus das ich diesen auch ändern kann. Die Startzeit kann ich ja auch dort einfach ändern.


    Die Einschränkungen wie Kantenmähmodus nur als 24 Stunden kann man natürlich nicht umgehen.


    Wie gesagt soweit bin ich noch nicht. Derzeit läuft die ganze Berechnung nur ins Log. Somit kann ich Fehler besser aufspüren.
    Ich setze derzeit noch keinen Datenpukt im Landroid Adapter.


    Wenn ich soweit bin melde ich mich wieder. Das wird aber noch etwas dauern, da ich derzeit an vielen Scripten gleichzeitig arbeite und ich nur abends etwas Zeit habe...

  • Na dann bin ich gespannt. :-)


    Eine Ausfahrt mit 45min in einem z.B. 5-Stunden Zeitfenster, bei Trockenheit gleich, bei Regen später innerhalb dieses Fensters fände ich schon eine coole Nummer.
    Frage ist nur, ob die Zeit genügen würde damit der Rasen entsprechend abtrocknen kann. Vermutich nur, wenn es sehr, sehr warm war bei einem kurzen Schauer.


    Gruß,
    Oli

  • Schön das ich nicht alleine mit solchen Ideen bin hier im Forum :)


    Also ich habe es ähnlich gelöst nur ohne Feiertage.


    Mein Aufbau ist folgender:


    Wetterstation an Raspberry mit weewx auf Homepage geschrieben.
    Per Parser im iobrocker wird jeden Abend die Regenmenge des Tages in eine Variable geschrieben.
    Das mache ich über 5 Tage. D.h 5 Variablen.
    Die Regenmenge wird Tag für Tag weiter gegeben.


    Zyklisch wird auch die maximale Temperatur des Tages und die Regenmenge des Tages ermittelt.


    Im IoBrocker habe ich jetzt folgende Bedingungen eingestellt:


    Wenn die Regenmenge der letzten 5 Tage > 10mm und die maximale Tagestemperatur > 20 Grad ist dann Mähe 50% mehr.


    Wenn die Regenmenge der letzten 5 Tage = 0mm und die maximale Tagestemperatur > 25 Grad ist dann Mähe 50% weniger.


    Sonst mowTimeExtended auf 0%


    Wenn der Regenfall am aktuellen Tag > 5mm ist dann mowTimeExtended = -100. --> Damit mäht der Worx an dem Tag halt nicht.


    Als krönenden Abschluss habe ich das noch mit Telegramm-Bot gekoppelt.
    Da kann ich diese automatische Regelung ein oder aus schalten oder dem Skript sagen dass ich den rasen bewässert habe. Setzt den Tages Regen auf 10mm.

    Edited 2 times, last by DaCl ().

  • Danke sookie!


    Damit kann ich einiges anfangen. Die verschiedenen Parameter habe ich eh' schon im IP-Symcon.


    Ich bekomme über die landroid-bridge den Status 33 (Kantenmähen) als undefined, der fehlt wohl dort noch.


    Außerdem fehlt mir die Angabe zum gesamten mähen, also die 100% oder weniger des Tages. Gibt es das nicht über die "API" oder wird der Wert in der App errechnet?

    WR106SI.1, FW 3.45; 120 m², zwei Zonen

  • Die Stadi sind neu:


    APP_WIRE_FOLLOW_GOING_HOME = 30,
    APP_WIRE_FOLLOW_AREA_TRAINING = 31,
    APP_WIRE_FOLLOW_BORDER_CUT = 32,
    APP_WIRE_FOLLOW_AREA_SEARCH = 33,
    PAUSE = 34


    Der Fortschritt der Zeit ob mit oder ohne wirklichem Mähen am Tag wird in den Apps berechnet ...

    Landroid SB450 Gustav - WR102SI - Firmware 3.51 - App 1.1.21 - ca. 550m²
    Entwicklungsprojekte ==> DeskApp, Analyser
    Erst Lesen, dann Fragen ==> FAQ - Allgemein