Passagenschaltung, Flächenschaltung mit Robonect, Fhem, MQTT, ESP8266
Aufgabe:
Ein schattiger, trockener Teil des Rasens soll für den Rasenroboter gesperrt werden. Der Mäher ist so konfiguriert, dass er immer abwechselnd an der Ladestation und am Fernstartpunkt (bei 42m) mit dem mähen beginnt:
Fernstart1 42m Mittel
Fernstart2 0m nie
Lösung:
Da Robonect jetzt auch MQTT kann und es eine ganze Anzahl von MQTT fähigen WLAN-Devices auf Basis ESP8266 und passende Open-Source-Firmware (Tasmota oder ESPeasy) gibt und ich sowieso eine FHEM Installation mit reichlich MQTT Schaltern (sonoff) betreibe, lag es nahe, auch eine Flächenschaltung für den Rasenmäher mit dieser Technik zu realisieren.
Es wird über einen ferngesteuerten Umschalter (Relais) ein zusätzlicher Begrenzungsdraht zu- bzw. abgeschaltet. D.h. wann immer der Mäher im Status 'mähen' (mqtt-Status=2) ist, wird die Zusatzschleife (rot) zugeschaltet: Der Mäher ist also jeweils im linken bzw. rechten Gartenteil 'eingesperrt'. Wechselt der mqtt-Status auf <> 2 ist die Zusatzschleife aus und der Mäher kann dem Suchdraht folgen.
Es werden folgende Komponenten benötigt:
Hardware:
1. Robonect mit aktueller Firmware (> V1.0 Beta ) wegen mqtt Fähigkeit
2. Raspberry Pi mit Fhem und installiertem mqtt broker (z.B. Mosquitto)
3. Wemos D1 mini mit Relaisshield
D1 mini mit Relais schield (https://www.wemos.cc/) gibts reichlich bei Amazon oder ebay
Software:
1. aktuelle Firmware auf Robonect installieren.
Kommunikation -> MQTT Client konfigurieren und aktivieren.
Robonect schickt die mqtt Nachrichten an den mqtt broker unter 192.168.42.102
2. Auf dem Raspi den Mosquitto mqtt broker installieren und testen
https://www.open-homeautomation.com/de/ ... pberry-pi/
3. In FHEM mqtt einrichten
https://wiki.fhem.de/wiki/Sonoff
(siehe fhem.cfg und 99_myUtils.pm weiter unten)
4. Auf dem D1 mini wird die Tasmota Software installiert:
Atom installieren und einrichten für Tasmota
https://github.com/arendst/Sonoff-Tasmo ... ware-Build
Tasmota konfigurieren für Wemos D1 mini
https://github.com/arendst/Sonoff-Tasmo ... 0D1%20Mini
Konfigurieren des D1 mini:
Siehe im Folgenden meine Einträge in fhem.cfg und 99_myUtils.pm
Ich werte nur die mqtt Nachrichten 'Status' und 'charge' aus. In diesem Beispiel ist zusätzlich eine Routine zum umwandeln der Statuscodes vom Robonectcode in Textform und loggen desselben. Außerdem wird in den fhem devices FSC (FernStartCounter) und LSC (LadeStationCounter) die Häufigkeit der Fernstarts und Ladestationstarts mitgezählt (Ich habe den Einstellungen im Mäher nicht getraut und wollte es mal genau wissen).
#----- begin fhem.cfg ---------------------------------------------
# MQTT Broker anlegen
define myBroker MQTT localhost:1883
attr myBroker verbose 1
# mqtt HorstSeinSchaf
define HorstSeinSchaf MQTT_DEVICE
attr HorstSeinSchaf IODev myBroker
attr HorstSeinSchaf event-on-change-reading .*
attr HorstSeinSchaf group Schaf
attr HorstSeinSchaf qos at-least-once
attr HorstSeinSchaf retain 1
attr HorstSeinSchaf room Rasenmaeher
attr HorstSeinSchaf stateFormat Status
attr HorstSeinSchaf subscribeReading_charge HorstSeinSchaf/mower/battery/charge
attr HorstSeinSchaf subscribeReading_status HorstSeinSchaf/mower/Status
attr HorstSeinSchaf verbose 0
define Schaf_Batterie readingsProxy HorstSeinSchaf:charge
attr Schaf_Batterie group Schaf
attr Schaf_Batterie room Rasenmaeher
# Die Passage ist geschlossen wenn das Schaf am mähen ist, ansonsten offen, damit es auf jeden Fall heim findet.
# Anmerkung: sonoff114 ist mein Wemos D1 mini Relais
define SwitchPassage DOIF ([HorstSeinSchaf:status] eq 2 ) (set sonoff114 On) DOELSE (set sonoff114 Off)
# dient zum zählen der Fernstarts
define FSC dummy
attr FSC group Schaf
attr FSC room Rasenmaeher
# dient zum zählen der Ladestationstarts
define LSC dummy
attr LSC group Schaf
attr LSC room Rasenmaeher
# Status als Textausgabe erzeugen
define Schaf_TextStatus dummy
attr Schaf_TextStatus event-on-change-reading state.*
attr Schaf_TextStatus group Schaf
attr Schaf_TextStatus room Rasenmaeher
# Umwandeln des Statuscodes in Text und zählen der Startpositionen
define SchafStatusNotify notify HorstSeinSchaf:Status.* {\
my $CodeStatus = (ReadingsVal("HorstSeinSchaf", "Status", 0));;\
my $TextStatus = Schaf_TextStatus($CodeStatus);;\
fhem("set Schaf_TextStatus $TextStatus");;\
my $fsc = ReadingsVal("FSC", "state", 0);;\
my $lsc = ReadingsVal("LSC", "state", 0);;\
($fsc, $lsc) = FScount($CodeStatus,$fsc,$lsc);;\
fhem("set FSC $fsc");;\
fhem("set LSC $lsc");;\
}
# log-Datei mit Textstatus
define FileLog_Schaf FileLog ./log/Schaf.log Schaf_TextStatus.*
attr FileLog_Schaf group Schaf
attr FileLog_Schaf logtype text
attr FileLog_Schaf nrarchive 3
attr FileLog_Schaf room Rasenmaeher
#----- ende fhem.cfg ----------------------------------------------
#----- begin 99_myUtils.pm ----------------------------------------
package main;
use strict;
use warnings;
use POSIX;
use 5.010;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
# Enter you functions below _this_ line.
sub Schaf_TextStatus($) {
my ($CodeNo) = @_;
my $TextStatus = "unknown";
if ($CodeNo == 0) { $TextStatus = "(0) Status wird ermittelt"; }
elsif ($CodeNo == 1) { $TextStatus = "(1) parken"; }
elsif ($CodeNo == 2) { $TextStatus = "(2) maehen"; }
elsif ($CodeNo == 3) { $TextStatus = "(3) suchen (in)"; }
elsif ($CodeNo == 4) { $TextStatus = "(4) laden"; }
elsif ($CodeNo == 5) { $TextStatus = "(5) suchen (OUT)"; }
elsif ($CodeNo == 7) { $TextStatus = "(7) Fehlerstatus"; }
elsif ($CodeNo == 8) { $TextStatus = "(8) Schleifensignal verloren"; }
elsif ($CodeNo == 16) { $TextStatus = "(16) Maeher abgeschaltet"; }
elsif ($CodeNo == 17) { $TextStatus = "(17) schlafen"; }
return $TextStatus;
}
sub FScount {
my $Status = $_[0];
my $fsc = $_[1];
my $lsc = $_[2];
my $actTime;
my $diff;
state $lstTime = 0;
state $lstStatus = 0;
$actTime = time;
$diff = $actTime - $lstTime;
if ($Status == 2 and $lstStatus == 5) # von 5 = suchen (OUT) nach 2 (maehen)
{
if ( $diff > 60) { $fsc++; }
else { $lsc++; }
}
$lstTime = $actTime;
$lstStatus = $Status;
return ($fsc,$lsc);
}
1;
#----- ende 99_myUtils.pm -----------------------------------
Passagen- bzw. Flächenschaltung
DIE Community für die externe Anbindung von Robonect® in bestehende Systeme.
Grundkenntnisse in bereits beim Anwender vorhandenen Systemen werden vorausgesetzt.
Für externe Lösungen ist kein Support möglich. Anwender helfen Anwendern! Mach mit!
(Robonect® Hx und IO)
Grundkenntnisse in bereits beim Anwender vorhandenen Systemen werden vorausgesetzt.
Für externe Lösungen ist kein Support möglich. Anwender helfen Anwendern! Mach mit!
(Robonect® Hx und IO)
-
- Forum-Anfänger
- Beiträge: 1
- Registriert: Mi 8. Jun 2016, 11:35
- Mäher: Gardena R70Li
- Firmware des Mähers (MSW): MSW 6.xx.xx
- Herstellungsjahr: 2016
- Robonect Firmware: V1.0 Beta 3
Passagen- bzw. Flächenschaltung
"Das Fliegen, sagt der Reiseführer Per Anhalter durch die Galaxis ist eine Kunst oder vielmehr ein Trick. Der Trick besteht darin, daß man lernt, wie man sich auf den Boden schmeißt, aber daneben."
-
- Forum-Nutzer
- Beiträge: 21
- Registriert: Mo 1. Mai 2017, 16:11
- Wohnort: München
- Mäher: Gardena R70Li
- Firmware des Mähers (MSW): MSW 6.xx.xx
- Herstellungsjahr: 2017
- Robonect-Modul: Robonect Hx (Rev.3)
- Robonect Firmware: 1.0b5
Zurück zu „Einbindung in Hausautomatisierung“
Gehe zu
- Das Robonect®-Forum
- ↳ Das Forum und seine Nutzer (hier kein Support für Robonect!)
- ↳ Neuigkeiten im Forum
- ↳ Tipps und Fragen zum Forum
- Robonect® Einsteiger
- ↳ Das Robonect®-Projekt
- ↳ Anleitungen für Einsteiger
- ↳ Erstinstallation: Anleitung und Hilfe
- ↳ Level Dich hoch! (Reihenfolge beachten!)
- ↳ Gebrauchsanweisungen
- ↳ Robonect® Gebrauchsanweisung und Support
- ↳ Husqvarna Automower
- ↳ Gardena
- ↳ Einbau-Anleitungen
- ↳ Software-Anleitungen
- ↳ Robonect® Gebrauchsanweisung und Support
- ↳ aktuelle Firmware
- Robonect® Normal-Anwender
- ↳ Robonect® Gebrauchsanweisung und Support
- ↳ allgemeine Mäher-Frage?
- ↳ Verbindungsprobleme? Robonect offline?
- ↳ Problemlösungen und RESET-Möglichkeiten
- ↳ Empfehlungen
- ↳ Erklärungen und Tipps
- ↳ Menüpunkt: Status
- ↳ Übersicht - Die Startseite von Robonect
- ↳ Allgemein
- ↳ Batterie
- ↳ Betriebsstunden
- ↳ Fehlerspeicher
- ↳ Health
- ↳ Motoren
- ↳ Schleife
- ↳ GPS
- ↳ Menüpunkt: Steuerung
- ↳ Betriebsmodus
- ↳ Neuer Mähauftrag
- ↳ Joystick
- ↳ Menüpunkt: Timer
- ↳ Übersicht
- ↳ Hilfestellungen zu Timer-Problemen
- ↳ Menüpunkt: Schnitthöhe
- ↳ Menüpunkt: Sicherheit
- ↳ Übersicht
- ↳ Benutzerdefiniert
- ↳ PIN
- ↳ Menüpunkt: Wetter
- ↳ Wetterdienst
- ↳ Hilfestellungen für OpenWeatherMap
- ↳ SensorControl
- ↳ Menüpunkt: Installation
- ↳ Fernstart
- ↳ Ladestation finden
- ↳ Korridorbreite
- ↳ Ausfahrwinkel
- ↳ Schleife
- ↳ Garagentor
- ↳ Passage
- ↳ Menüpunkt: Einstellungen
- ↳ Allgemein
- ↳ Uhrzeit/Datum
- ↳ Mähverhalten
- ↳ Messer
- ↳ Menüpunkt: Zubehör
- ↳ Extension-Port
- ↳ Kamera und GPS
- ↳ GPIO und OUT
- ↳ Menüpunkt: Benachrichtigung
- ↳ Push-Benachrichtigung
- ↳ E-Mail Service
- ↳ SMS-Service
- ↳ Menüpunkt: Kommunikation
- ↳ Verbindungsprobleme? Robonect offline?
- ↳ Fragen aus Saison 2020 (und früher)
- ↳ Access-Point
- ↳ Heimnetz
- ↳ Push-Service
- ↳ MQTT-Client
- ↳ Menüpunkt: Robonect
- ↳ Allgemein
- ↳ Benutzer
- ↳ Fernzugriff
- ↳ Webinterface
- ↳ Firmware-Update
- ↳ Service
- ↳ Aktuelle Firmware
- ↳ Fehler in der Firmware?
- ↳ Wünsche
- Robonect® Neuerscheinungen und Beta-Tester
- ↳ Download Beta-Firmware und Daily Builds
- ↳ Bug-Reports
- ↳ FW 1.3 (Final Release)
- ↳ bestätigte Bugs
- ↳ Bug?
- ↳ kein Bug
- ↳ FW 2.0 (Release)
- ↳ bestätigte Bugs
- ↳ Bug?
- ↳ kein Bug
- ↳ vorherige Release- und Beta-Versionen
- ↳ Wünsche
- ↳ Wünsche, die nicht erfüllbar sind
- ↳ Wünsche, die bereits umgesetzt sind
- ↳ Wünsche, deren Umsetzung in Planung ist
- Robonect® für ambitionierte Anwender
- ↳ Pimp my Robonect®
- ↳ Mähzeit oder Lebensdauer des Akku erhöhen
- ↳ Menüpunkt: Status > Batterie
- ↳ Menüpunkt: Einstellungen > Mähverhalten > Mähzeitanpassung
- ↳ Garagentorsteuerung
- ↳ Menüpunkt: Installation > Garagentor
- ↳ Passagenschaltung
- ↳ Menüpunkt: Installation > Passage
- ↳ Lichtausstattung
- ↳ Menüpunkt: Zubehör
- ↳ Kamera einbauen
- ↳ Menüpunkt: Zubehör
- ↳ Räder verbessern
- ↳ Messer
- ↳ Antenne
- ↳ Menüpunkt: Kommunikation > Heimnetz
- ↳ GPS
- ↳ Menüpunkt: Status > GPS
- ↳ Menüpunkt: Zubehör > (Kamera und) GPS
- ↳ Gemischtes und Kurioses
- ↳ Menüpunkt: Zubehör
- ↳ Einbindung in Hausautomatisierung
- ↳ Amazon Alexa Skill
- ↳ Apple HomeKit
- ↳ Enertex® EibPC
- ↳ FHEM
- ↳ Google Assistant und Google Home
- ↳ Gira HomeServer
- ↳ Home Assistant
- ↳ Homematic
- ↳ Homematic-Nutzer
- ↳ Homematic-Neueinsteiger
- ↳ ioBroker/MQTT
- ↳ MQTT-Nutzer
- ↳ MQTT-Neueinsteiger
- ↳ OpenHAB
- ↳ SmarthomeNG
- ↳ App-Entwicklung
- ↳ Android
- ↳ Apple iOS
- ↳ Roboconnect
- ↳ HowTo/Doku/Versionen
- ↳ Tests und Bugs
- ↳ Features: Fragen und Wünsche
- ↳ RobonectApp
- ↳ HowTo/Doku
- ↳ Bug?
- ↳ Feature Requests
- ↳ iOS-Apps allgemein
- ↳ inaktive iOS-App-Projekte
- ↳ Windows
- ↳ API für Robonect® Hx
- ↳ Kommandos
- Archiv
- ↳ veraltete Firmware
- ↳ Bug-Management vorheriger (Beta-)Versionen
- ↳ FW 1.2 (Final Release)
- ↳ bestätigte Bugs
- ↳ Bug?
- ↳ kein Bug
- ↳ FW 1.2 (RC0)
- ↳ bestätigte Bugs
- ↳ Bug?
- ↳ kein Bug
- ↳ FW 1.1b (Final Release)
- ↳ bestätigte Bugs
- ↳ Bug?
- ↳ kein Bug
- ↳ FW 1.0 Beta 1 bis 8 + Preview
- ↳ FW 1.0 Preview
- ↳ FW 1.0 Beta 1
- ↳ FW 1.0 Beta 2
- ↳ FW 1.0 Beta 3
- ↳ FW 1.0 Beta 4
- ↳ bestätigte Bugs
- ↳ Bug?
- ↳ WLAN-Probleme
- ↳ Kein Bug
- ↳ FW 1.0 Beta 5
- ↳ bestätigte Bugs
- ↳ Bug?
- ↳ kein Bug
- ↳ WLAN-Probleme
- ↳ FW 1.0 Beta 6
- ↳ bestätigte Bugs
- ↳ Bug?
- ↳ kein Bug
- ↳ WLAN-Probleme
- ↳ FW 1.0 Beta 7
- ↳ bestätigte Bugs
- ↳ Bug?
- ↳ kein Bug
- ↳ WLAN-Probleme
- ↳ FW 1.0 Beta 8
- ↳ bestätigte Bugs
- ↳ Bug?
- ↳ kein Bug
- ↳ FW 0.9e (Final Release)
- ↳ ältere als FW 0.9e
- ↳ Robonect® H30x (veraltet)
- ↳ User-Support
- ↳ Allgemeine Diskussionen
- ↳ Anleitungen
- ↳ Wünsche bis Beta 7a
- ↳ Wünsche bis einschließlich 2017
- ↳ Robonect® IO (Beta-Test)
- ↳ Einbau und Nutzung von Robonect® IO
- ↳ allgemeine Fragen
- ↳ Robonect® IO Firmware
- ↳ Firmware-Downloads / Changelog (für Robonect IO)
- ↳ Aktuelle Firmware
- ↳ Beta-Firmware (Testphase)
- ↳ Bug-Reports
- ↳ V0.1 Robonect-IO Firmware
- ↳ bestätigte Bugs
- ↳ Bug?
- ↳ kein Bug
- ↳ Wünsche
- ↳ API für Robonect® IO
- ↳ Tipps für vorherige FW-Versionen (archiviert)
- ↳ Ablage