Seite 1 von 2

OpenHAB

Verfasst: Mo 9. Mai 2016, 12:05
von bezibaerchen
Hallo, ich dachte ich starte mal einen neuen Thread für OH.

Ich habe mal angefangen Robonect in OH zu integrieren. Bisher lese ich nur den Status aus. Mein Rasen wächst noch, sobald Shawn fahren darf, spiele ich mich mal weiter, z.B. damit ihn via OH zu starten und zurückzuholen.

Bisher sieht das Ganze so aus:
Capture.JPG
Capture.JPG (58.22 KiB) 6935 mal betrachtet

Re: OpenHAB

Verfasst: Do 12. Mai 2016, 21:49
von marcus69
Super, auf die OH -Anbindung bin ich ganz gespannt. Wenn das so weitergeht, sollte ich entgegen der Garantie doch das Modul einbauen....

Re: OpenHAB

Verfasst: Do 12. Mai 2016, 22:42
von bezibaerchen
marcus69 hat geschrieben:Super, auf die OH -Anbindung bin ich ganz gespannt. Wenn das so weitergeht, sollte ich entgegen der Garantie doch das Modul einbauen....
Bin mittlerweile recht weit. Macht alles was ich will. Baue die Tage noch ein "manuelles Losschicken" ein. Sonst hab ich alles bzw. die Templates das einzubauen was ich möchte.

Re: OpenHAB

Verfasst: Fr 13. Mai 2016, 20:33
von skloss
Hi bezibaerchen,

das sieht ja richtig klasse aus. ich habe es nur per Skript angebunden - Oneway ohne Steuerung.
Es wäre schön, wenn du die Lösung später einmal posten könntest 8-)
Bildschirmfoto 2016-05-13 um 20.31.07.png
Bildschirmfoto 2016-05-13 um 20.31.07.png (24.41 KiB) 6884 mal betrachtet
Grüße
Sascha

@marcus69: Aufhören zu überlegen und rein damit :lol:

Re: OpenHAB

Verfasst: Fr 13. Mai 2016, 20:39
von bezibaerchen
skloss hat geschrieben:Hi bezibaerchen,

das sieht ja richtig klasse aus. ich habe es nur per Skript angebunden - Oneway ohne Steuerung.
Es wäre schön, wenn du die Lösung später einmal posten könntest 8-)
Bildschirmfoto 2016-05-13 um 20.31.07.png
Grüße
Sascha

@marcus69: Aufhören zu überlegen und rein damit :lol:
Erreichbar machst Du anhand Ping?
Lass uns doch beide unsere item configuration, sitemap posten. Ich habe noch rules, maps und transform scripts verwendet. Ich hoffe ich denke dran, dann poste ich mal übernächste Woche was ich so habe. Bin jetzt erstmal nicht da, also zumindest nicht so, dass ich config gut Copy und paste machen kann :)

Re: OpenHAB

Verfasst: Mo 13. Jun 2016, 22:57
von marcus69
Habe jetzt wegen eurer Einbindung das Modul auch gekauft.

Wäre super nett, wenn ihr einmal eure Sitemap, config, rules einmal Posten würdet.

Danke
Marcus

Re: OpenHAB

Verfasst: Di 14. Jun 2016, 08:56
von bezibaerchen
Servus.
Meine Einbindung ist noch ein wenig rudimentär, werden z.B. je nach aktuellem Zustand nicht alle Infos angezeigt. Ich stehe noch ein wenig auf Kriegsfuß mit den JSON Conversions. Habe jetzt angefangen das mit Bash zu bauen, ist noch nicht ganz durch.

Anyway, hier mal das was ich bisher habe. Der erste Screenshot gilt noch, wird jetzt nur noch Dauer und WiFi angezeigt.

Zusätzlich gibt es jetzt noch eine Steuerung:
Capture.JPG
Capture.JPG (34.47 KiB) 6700 mal betrachtet
Hier mal was ich so habe. (Bin noch nicht lange bei openHAB dabei also sicherlich alles andere als gut / richtig, deshalb bitte Nachsicht :) )

Items-File

Code: Alles auswählen

String AutoMowerRawData "AutoMower RAW Data"      (automower)     { http="<[http://<mower_adresse>/json?cmd=status:600000:REGEX((.*))]"
String AutoMowerStatus "Status [MAP(automowerinfo_status.map):%s]"      (automower)     { transform("JSONPATH","$status.status",AutoMowerRawData) }
String AutoMowerBattery "Batteriestatus (%)[%s]"        (automower)     { transform("JSONPATH","$status.battery",AutoMowerRawData) }
String AutoMowerMode "Modus [MAP(automowerinfo_mode.map):%s]"   (automower)     { transform("JSONPATH","$status.mode",AutoMowerRawData) }
String AutoMowerHours "Betriebsstunden [%s]"    (automower)     { transform("JSONPATH","$status.hours",AutoMowerRawData) }
String AutoMowerWifi "WiFi Signal (db) [%s]"    (automower)
String AutoMowerDuration "Dauer [%s]"   (automower)
String AutoMowerModeHomeAutoEOD "Modus" (automower)
String AutoMowerNextRun "Nächster Mähzeitpunkt [%s]"    (automower)
String AutoMowerJob     "Mähen" (automower)
Sitemap

Code: Alles auswählen

Frame label="Automower Status" {

                                        Text item=AutoMowerStatus icon="automower"
                                        Text item=AutoMowerBattery icon="automower" valuecolor=[<30="red",<50="orange",>80="green"]
                                        Text item=AutoMowerMode icon="automower"
                                        Text item=AutoMowerDuration icon="automower"
                                        Text item=AutoMowerHours icon="automower"
                                        Text item=AutoMowerWifi icon="automower"
                                        Text item=AutoMowerNextRun icon="automower"  visibility=[AutoMowerMode==0]
                        }

                        Frame label="Automower Steuerung" {
                                        Switch item=AutoMowerModeHomeAutoEOD  mappings=[auto="Auto", home="Home", eod="Feierabend"] label="Modus" icon="automower"
                                        Switch item=AutoMowerJob mappings=[1="1h", 2="2h", 3="3h", 4="4h"] label="Mähen" icon="automower"
                        }
Script 1 (automower-info.sh) - wird alle 30 Minuten via CronJob ausgeführt und ja, useless use of cat :)

Code: Alles auswählen

#!/bin/bash

CURRENTPOT=$(curl -s "http://localhost:8080/rest/items/AutoMowerNextRun/state")

curl -s "http://localhost:8080/rest/items/AutoMowerRawData/state" > /tmp/mowerstatus.txt

DATE=$(cat /tmp/mowerstatus.txt | grep -i timer | awk '{print $19}' | sed -e 's/,//' | sed -e 's/"//g')
TIME=$(cat /tmp/mowerstatus.txt | grep -i timer | awk '{print $21}' | sed -e 's/,//' | sed -e 's/%3A/:/g' | sed -e 's/"//g')
WIFI=$(cat /tmp/mowerstatus.txt | grep -i signal | awk '{print $26}' | sed -e 's/\}//g' )
seconds=$(cat /tmp/mowerstatus.txt | grep -i duration | awk '{print $7}' | sed -e 's/\,//g')

echo $DATE $TIME > /tmp/zeitpunkt.txt
echo $((seconds/86400))" days "$(date -d "1970-01-01 + $seconds seconds" "+%H hours %M minutes %S seconds") > /tmp/duration.txt

POT=$(cat /tmp/zeitpunkt.txt)
DURATION=$(cat /tmp/duration.txt)


/usr/bin/curl -s --header "Content-Type: text/plain" --request POST --data "$POT" http://localhost:8080/rest/items/AutoMowerNextRun
/usr/bin/curl -s --header "Content-Type: text/plain" --request POST --data "$WIFI" http://localhost:8080/rest/items/AutoMowerWifi
/usr/bin/curl -s --header "Content-Type: text/plain" --request POST --data "$DURATION" http://localhost:8080/rest/items/AutoMowerDuration


rm -f /tmp/mowerstatus.txt
rm -f /tmp/zeitpunkt.txt
rm -f /tmp/duration.txt

Script 2 (automower-job.sh) - dieses Script verwende ich zum manuellen JobStart.

Code: Alles auswählen

#!/bin/bash

duration=$1

now=$(date +"%H:%M")
end=$(date +"%H:%M" -d "+ $duration hours")

logger "http://<mower_adresse>/json?cmd=mode&mode=job&start=$now&end=$end"
curl -s "http://<mower_adresse>/json?cmd=mode&mode=job&start=$now&end=$end"
Mapping files:

automowerinfo_mode.map

Code: Alles auswählen

0=AUTO
1=Manuell
2=HOME
3=Demo
automowerinfo_status.map

Code: Alles auswählen

0=Schläft
1=Geparkt
2=Mäht
3=Sucht die Ladestation
4=Lädt
5=Sucht
7=Fehlerstatus
8=Schleifsignal verloren
Last but not least, ein paar rules

automowerinfo.rules (das werde ich denke ich noch umbauen in Shell, da tue ich mir leichter)

Code: Alles auswählen

rule "AutoMowerRawDataParse"
  when
    Item AutoMowerRawData changed
  then
    var String RawData = AutoMowerRawData.state.toString
    var String RawStatus = transform("JSONPATH", "$status.status", RawData)
    var String RawBattery = transform("JSONPATH", "$status.battery", RawData)
    var String RawMode = transform("JSONPATH", "$status.mode", RawData)
    var String RawHours = transform("JSONPATH", "$status.hours", RawData)

    sendCommand(AutoMowerStatus,  RawStatus)
    sendCommand(AutoMowerBattery, RawBattery)
    sendCommand(AutoMowerMode, RawMode)
    sendCommand(AutoMowerHours, RawHours)

  end
automowerjob.rules (verwende ich zum manuellen Mähauftrag. Ursprünglich hatte ich auch 5h drin, habe ich momentan ausgebaut, ist aber im Script noch vorhanden. Neben dem Aufruf der o.g. Scripts wird auch noch eine Telegram-Nachricht versendet.)

Code: Alles auswählen

rule "AutoMowerJob1"
when
        Item AutoMowerJob received command 1

then
        executeCommandLine("/opt/openhab/configurations/scripts/automower-job.sh 1")
        sendTelegram("bot1", "Mähauftrag erhalten. Automower wird jetzt für 1h mähen.")
end

rule "AutoMowerJob2"
when
        Item AutoMowerJob received command 2

then
        executeCommandLine("/opt/openhab/configurations/scripts/automower-job.sh 2")
        sendTelegram("bot1", "Mähauftrag erhalten. Automower wird jetzt für 2h mähen.")
end

rule "AutoMowerJob3"
when
        Item AutoMowerJob received command 3

then
        executeCommandLine("/opt/openhab/configurations/scripts/automower-job.sh 3")
        sendTelegram("bot1", "Mähauftrag erhalten. Automower wird jetzt für 3h mähen.")
end

rule "AutoMowerJob4"
when
        Item AutoMowerJob received command 4

then
        executeCommandLine("/opt/openhab/configurations/scripts/automower-job.sh 4")
        sendTelegram("bot1", "Mähauftrag erhalten. Automower wird jetzt für 4h mähen.")
end

rule "AutoMowerJob5"
when
        Item AutoMowerJob received command 5

then
        executeCommandLine("/opt/openhab/configurations/scripts/automower-job.sh 5")
        sendTelegram("bot1", "Mähauftrag erhalten. Automower wird jetzt für 5h mähen.")
end
automowermode.rules (Modus via OH setzen und Telegram-Nachricht im Fehlerfall)

Code: Alles auswählen

rule "AutoMowerModeAuto"
when
        Item AutoMowerModeHomeAutoEOD received command auto

then
        sendHttpGetRequest("http://shawn.fritz.box/xml?cmd=mode&mode=auto")
end

rule "AutoMowerModeHome"
when
        Item AutoMowerModeHomeAutoEOD received command home
then
        sendHttpGetRequest("http://shawn.fritz.box/xml?cmd=mode&mode=home")
end

rule "AutoMowerModeEOD"
when
        Item AutoMowerModeHomeAutoEOD received command eod
then
        sendHttpGetRequest("http://shawn.fritz.box/xml?cmd=mode&mode=eod")
end

rule "AutoMowerError"
when
        Item AutoMowerStatus received update 7
then
        sendTelegram("bot1", "Automower ist im Fehlermodus. Bitte Gerät kontrollieren!")
end
Denke ich habe alles erwischt, was wert zu posten ist. Bin mal gespannt, ob es bei Dir evtl. auch Verwendung finden kann.

Re: OpenHAB

Verfasst: Di 14. Jun 2016, 09:44
von marcus69
Danke für Deine Mühe

Marcus

Re: OpenHAB

Verfasst: Di 14. Jun 2016, 09:59
von bezibaerchen
Gern

Re: OpenHAB

Verfasst: Sa 18. Feb 2017, 23:32
von michael
Ich hab zwar den Robonect mit neuer FW noch nicht eingebaut (Winderschlaf und so), hab aber meine Hausautomation in den letzten Monaten auf Openhab umgezogen. Da hab ich mich wieder an diesen Thread erinnert. @bezibaerchen , Sieht Super aus!

Was ich nur nicht verstehe? Warum das Shellscript (automower-info.sh). Also mehr: Warum ein Schellscript überhaupt?

Kommt man nicht mittels JSONPATH direkt an die Daten, quasi im HTTP Item und ohne extra Script?

Gruß
Michael