nach etwas gebastel funktioniert die Anbindung nun wie ich mir das gedacht habe.
Da ich keine Anleitung dafür gefunden habe hier meine Vorgehensweise:
- Mäher in FHEM über das Indego Modul (https://github.com/fhem/INDEGO) einfügen
- In 99_MyUtils folgendes Programm einfügen und wie gewünscht anpassen (vorher natürlich Werte wie IP-Adresse usw. ersetzen).
Für mich der erste Wurf, werde nun mal prüfen was ich zur Steuerung ansonsten noch benötige:
Code:#IndegoToLoxone sub IndegoToLoxone($) { my ($device) = @_; # Gerätezustand my $maehStatus = ReadingsVal("$device",'state',"-1"); $maehStatus =~ s/\s+/_/g; # Status an Loxone GetHttpFile('User:Kennwort@IP-Adresse', '/dev/sps/io/Virtueller Texteingang in Loxone/'.$maehStatus); # Wann wird wieder gemäht? my $nachstesMaehen = ReadingsVal("$device","mow_next","-1"); my $jahr = substr($nachstesMaehen,0,4); my $monat = substr($nachstesMaehen,5,2); my $tag = substr($nachstesMaehen,8,2); my $stunde = substr($nachstesMaehen,11,2); my $minute = substr($nachstesMaehen,14,2); # Nächster Mähzeitpunkt an Loxone UDP_Msg("IP-Adresse" , "7000" , "$device"."10".": $jahr"); UDP_Msg("IP-Adresse" , "7000" , "$device"."11".": $monat"); UDP_Msg("IP-Adresse" , "7000" , "$device"."12".": $tag"); UDP_Msg("IP-Adresse" , "7000" , "$device"."20".": $stunde"); UDP_Msg("IP-Adresse" , "7000" , "$device"."21".": $minute"); # Wann war der letzte Alarm? my $alarmdatum = ReadingsVal("$device","alert_date","-1"); my $jahrAlarm = substr($alarmdatum,0,4); my $monatAlarm = substr($alarmdatum,5,2); my $tagAlarm = substr($alarmdatum,8,2); my $stundeAlarm = substr($alarmdatum,11,2); my $minuteAlarm = substr($alarmdatum,14,2); # Nächster Mähzeitpunkt an Loxone UDP_Msg("IP-Adresse" , "7000" , "$device"."30".": $jahrAlarm"); UDP_Msg("IP-Adresse" , "7000" , "$device"."31".": $monatAlarm"); UDP_Msg("IP-Adresse" , "7000" , "$device"."32".": $tagAlarm"); UDP_Msg("IP-Adresse" , "7000" , "$device"."40".": $stundeAlarm"); UDP_Msg("IP-Adresse" , "7000" , "$device"."41".": $minuteAlarm"); # Wieviel % sind schon gemäht? my $gemaeht = ReadingsVal("$device","mowed","-1"); # Gemäht in % UDP_Msg("IP-Adresse" , "7000" , "$device"."3".": $gemaeht"); # Laufzeit in Std. my $laufzeitInStd = ReadingsVal("$device","totalOperate","-1"); # Laufzeit an Loxone UDP_Msg("IP-Adresse" , "7000" , "$device"."4".": $laufzeitInStd"); # Alarm Titel my $alarmTitle = ReadingsVal("$device","alert_headline","-1"); $alarmTitle =~ s/\s+/_/g; # Alarm Titel an Loxone GetHttpFile('User:Kennwort@IP-Adresse', '/dev/sps/io/Virtueller Texteingang in Loxone/'.$alarmTitle); # Alarm Status my $alarmStatus = ReadingsVal("$device","alert_status","-1"); $alarmStatus =~ s/\s+/_/g; # Alarm Status an Loxone GetHttpFile('User:Kennwort@IP-Adresse', '/dev/sps/io/Virtueller Texteingang in Loxone/'.$alarmStatus); }
- Die Zahlenwerte (wie Stunde, Minute, usw.) werden In Loxone über einen Virtuellen UDP Eingang Befehl abgebildet.
Unter Befehlserkennung muss das Gerät aus FHEM rein. Siehe im Code z.B. "BoschIndego10: \v" für das Jahr des nächsten Mähzeitpunktes oder "BoschIndego3: \v" für wie viel % sind schon gemäht. - Die Textfelder (z.B. Status, Alarm Text, usw.) werden in Loxone über Virtuelle Text Eingänge abgebildet (einfach anlegen und oben im Code angeben, z.B. VTI1).
Leerzeichen werden durch _ ersetzt, da Loxone sonst nur das erste Wort anzeigt. - Die Datumswerte werden über einen Status formatiert und so zusammengebracht.
- Die eigentlichen Befehle an den Indego werden über Virtuelle Ausgangs Befehle in Loxone angelegt (z.B. mit Befehl bei ein "/fhem?cmd=set BoschIndego mow" zum Starten des Mähvorgangs).
Gruß,
Claus