. :daumenhoch: Erstinstallation für Neueinsteiger: Bitte hier entlang!

. :daumenhoch: Robonect-Gebrauchsanweisung und Support für alle Robonect-Menüpunkte! Bitte hier entlang!

. :arrow: Für jeden Robonect-Menüpunkt gibt es dort ein eigenes Unterforum
. :arrow: Erklärung des Menüpunkts und unser Support direkt dort im Unterforum des Menüpunkts!

OpenHAB

open Home Automation Bus (openHAB) ist eine in Java entwickelte Softwarelösung, die Komponenten zur Gebäudeautomatisierung von den verschiedensten Anbietern hersteller- und protokollneutral in einer Plattform miteinander verbindet.
bezibaerchen
erfahrener Forum-Nutzer
Beiträge: 87
Registriert: Mi 4. Mai 2016, 14:57
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: 0.9e
wurde gedankt: 1 Mal

OpenHAB

Beitrag 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) 5749 mal betrachtet
MSW-Software: R40Li
MSW-Version: 5.01.00
MSW-Datum: 2014-10-10 13:44:38
SUB-Version: 5.00.00

marcus69
Forum-Anfänger
Beiträge: 9
Registriert: Do 21. Apr 2016, 11:52
Mäher: Gardena R40Li
Robonect-Modul: Robonect H30x (Rev.2)
Robonect Firmware: 1.0beta2

Re: OpenHAB

Beitrag von marcus69 »

Super, auf die OH -Anbindung bin ich ganz gespannt. Wenn das so weitergeht, sollte ich entgegen der Garantie doch das Modul einbauen....

bezibaerchen
erfahrener Forum-Nutzer
Beiträge: 87
Registriert: Mi 4. Mai 2016, 14:57
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: 0.9e
wurde gedankt: 1 Mal

Re: OpenHAB

Beitrag 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.
MSW-Software: R40Li
MSW-Version: 5.01.00
MSW-Datum: 2014-10-10 13:44:38
SUB-Version: 5.00.00

skloss
Forum-Nutzer
Beiträge: 33
Registriert: Sa 30. Jan 2016, 17:42
Mäher: Husqvarna Automower 305
Firmware des Mähers (MSW): MSW 4.xx.xx
Herstellungsjahr: 2011
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: 0.9e

Re: OpenHAB

Beitrag 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) 5698 mal betrachtet
Grüße
Sascha

@marcus69: Aufhören zu überlegen und rein damit :lol:
Husqvarna "Hacky" 305 - MSW 4.02.00 SUB 4.00.00 MMI 4.02.00
Robonect v0.9c 25.03.2017 20:10

bezibaerchen
erfahrener Forum-Nutzer
Beiträge: 87
Registriert: Mi 4. Mai 2016, 14:57
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: 0.9e
wurde gedankt: 1 Mal

Re: OpenHAB

Beitrag 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 :)
MSW-Software: R40Li
MSW-Version: 5.01.00
MSW-Datum: 2014-10-10 13:44:38
SUB-Version: 5.00.00

marcus69
Forum-Anfänger
Beiträge: 9
Registriert: Do 21. Apr 2016, 11:52
Mäher: Gardena R40Li
Robonect-Modul: Robonect H30x (Rev.2)
Robonect Firmware: 1.0beta2

Re: OpenHAB

Beitrag 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

bezibaerchen
erfahrener Forum-Nutzer
Beiträge: 87
Registriert: Mi 4. Mai 2016, 14:57
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: 0.9e
wurde gedankt: 1 Mal

Re: OpenHAB

Beitrag 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) 5514 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.
MSW-Software: R40Li
MSW-Version: 5.01.00
MSW-Datum: 2014-10-10 13:44:38
SUB-Version: 5.00.00

marcus69
Forum-Anfänger
Beiträge: 9
Registriert: Do 21. Apr 2016, 11:52
Mäher: Gardena R40Li
Robonect-Modul: Robonect H30x (Rev.2)
Robonect Firmware: 1.0beta2

Re: OpenHAB

Beitrag von marcus69 »

Danke für Deine Mühe

Marcus

bezibaerchen
erfahrener Forum-Nutzer
Beiträge: 87
Registriert: Mi 4. Mai 2016, 14:57
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2015
Robonect-Modul: Robonect Hx (Rev.2)
Robonect Firmware: 0.9e
wurde gedankt: 1 Mal

Re: OpenHAB

Beitrag von bezibaerchen »

Gern
MSW-Software: R40Li
MSW-Version: 5.01.00
MSW-Datum: 2014-10-10 13:44:38
SUB-Version: 5.00.00

michael
erfahrener Forum-Nutzer
Beiträge: 62
Registriert: Do 12. Mai 2016, 20:28

Re: OpenHAB

Beitrag 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
Robonect H30x Firmware V0.9 (Final)
Automower: R40Li MSW-Version: 5.01.00 SUB-Version: 5.00.00 Software: OpenHab 2.0

Antworten

Zurück zu „OpenHAB“