Hallo,
ich habe die letzten Abende dazu verwendet um meinen Mower ins FHEM zu integrieren.
Im Prinzip habe ich es ähnlich gemacht wie Kilian.
Auf dem ESP läuft ein kleiner Webserver, dessen Daten bequem per Browser abgerufen werden können.
Der Webserver kommuniziert ebenfalls mit PfodCmds mit dem Mega, sodass Commandos per URL-Aufruf abgegeben werden können.
Seine Daten bekommt der Webserver alle 5 Sek per Aufruf aus der robot.cpp loop.
Ich habe dazu die Dateien webserver.h und webserver.cpp ins Build eingefügt s.Anhang. Der Einbau in die Robot.cpp usw wird in der webserver.h Datei am Anfang erklärt.
Die Firmware für den ESP findet ihr auch im Anhang, dort muss nur noch die SSID und der Key angepasst werden.
Für FHEM-Nutzer können die Daten per HTTPMod Modul und entsprechender RegEx ausgelesen und CMDs abegeben werden.
Hier die Änderungen in der fhem.cfg
Code:
define Ardumower dummy
attr Ardumower room test
define ArduWeb HTTPMOD [URL]http://192.168.1.61:80/info[/URL] 20
attr ArduWeb userattr reading1Name readingsName readingsName_batteryChargeCycles readingsName_batteryRechargedCapacityAvg readingsName_batteryRechargedCapacityTotal readingsName_batteryRechargedCapacityTrip readingsName_humidity readingsName_mode readingsName_mowing readingsName_pattern readingsName_state readingsName_temperature readingsName_totalMowingTime readingsName_triptime readingsName_version readingsRegex_batteryChargeCycles readingsRegex_batteryRechargedCapacityAvg readingsRegex_batteryRechargedCapacityTotal readingsRegex_batteryRechargedCapacityTrip readingsRegex_humidity readingsRegex_mode readingsRegex_mowing readingsRegex_pattern readingsRegex_state readingsRegex_temperature readingsRegex_totalMowingTime readingsRegex_triptime readingsRegex_version
attr ArduWeb group Ardumower
attr ArduWeb readingsName_batteryChargeCycles batteryChargeCycles
attr ArduWeb readingsName_batteryRechargedCapacityAvg batteryRechargedCapacityAvg
attr ArduWeb readingsName_batteryRechargedCapacityTotal batteryRechargedCapacityTotal
attr ArduWeb readingsName_batteryRechargedCapacityTrip batteryRechargedCapacityTrip
attr ArduWeb readingsName_mowing mowing
attr ArduWeb readingsName_pattern pattern
attr ArduWeb readingsName_state state
attr ArduWeb readingsName_totalMowingTime totalMowingTime
attr ArduWeb readingsName_triptime triptime
attr ArduWeb readingsName_version Version
attr ArduWeb readingsRegex_batteryChargeCycles Battery[s]charging[s]cycles[s]([0-9]+)
attr ArduWeb readingsRegex_batteryRechargedCapacityAvg Battery recharged capacity average [\(]mAh[\)]([0-9]+[.][0-9]{2})
attr ArduWeb readingsRegex_batteryRechargedCapacityTotal Battery recharged capacity total [\(]Ah[\)]([0-9]+[.][0-9]{2})
attr ArduWeb readingsRegex_batteryRechargedCapacityTrip Battery recharged capacity trip [\(]mAh[\)]([0-9]+[.][0-9]{2})
attr ArduWeb readingsRegex_mode Mode: ([0-9])
attr ArduWeb readingsRegex_mowing Mowing[s]is[s]([0-1])
attr ArduWeb readingsRegex_pattern Pattern[s]is[s]([A-Z]+)
attr ArduWeb readingsRegex_state State[s]is[s]([0-9a-zA-Z]+)
attr ArduWeb readingsRegex_totalMowingTime Mowing[s]time[s]total[s][\(]hrs[\)][s]([0-9]+[.][0-9]{2})
attr ArduWeb readingsRegex_triptime Mowing[s]time[s]trip[s][\(]min[\)][s]([0-9]+)
attr ArduWeb readingsRegex_version Ardumower[s]+([0-9][.][a-zA-Z0-9]+[-][a-zA-Z]+[-][a-zA-Z]+)
attr ArduWeb room test
attr ArduWeb stateFormat State: state --- Mowing: mowing --- TripTime: triptime
define ArduMow notify ArdumowerModeSelector:* {
if ("$EVENT" eq "OFF"){
GetFileFromURL("http://192.168.1.61/ro");;
fhem("setreading ArduWeb mode 0");;
}
if ("$EVENT" eq "AutoMode"){
GetFileFromURL("http://192.168.1.61/ra");;
fhem("setreading ArduWeb mode 1");;
}
if ("$EVENT" eq "Home"){
GetFileFromURL("http://192.168.1.61/rh");;
fhem("setreading ArduWeb mode 2");;
}
if ("$EVENT" eq "PeriTrack"){
GetFileFromURL("http://192.168.1.61/rk");;
fhem("setreading ArduWeb mode 3");;
}
if ("$EVENT" eq "RC"){
GetFileFromURL("http://192.168.1.61/rc");;
fhem("setreading ArduWeb mode 4");;
}
if ("$EVENT" eq "delErr"){
GetFileFromURL("http://192.168.1.61/z00");;
fhem("setreading ArduWeb mode 5");;
}
}
attr ArduMow disable 0
attr ArduMow group Ardumower
attr ArduMow room test
define ArdumowerModeSelector dummy
attr ArdumowerModeSelector eventMap 1:AutoMode 0:OFF 2:Home 3:PeriTrack 4:RC 5:delErr
attr ArdumowerModeSelector group Ardumower
attr ArdumowerModeSelector room test
attr ArdumowerModeSelector webCmd 0:1:2:3:4:5
define ArduMode notify ArduWeb:mode:.* {
fhem("set ArdumowerModeSelector $EVTPART1");;
}
attr ArduMode room test
Bin jetzt nicht der Programmierfuchs, Verbesserungen sind willkommen.
Evtl hilft es dem ein oder anderen
Gruß Frederic