. :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!

Openhab2

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.
michael
erfahrener Forum-Nutzer
Beiträge: 62
Registriert: Do 12. Mai 2016, 20:28

Openhab2

Beitrag von michael »

Hi,

im Thread viewtopic.php?f=21&t=254 hat bezibaerchen den robonect in OpenHab eingebunden. Ich habe die Lösung versucht möglicht 1:1 in Openhab 2 zu übernehmen und dabei die Shellscripte loszuwerden :-).

In meinem Beispiel habe ich die IP von mir drin, die müsste überall angepasst werden.

In Services/http.cfg brauchen wir 2 neue Einträge:

Code: Alles auswählen

automowerCache.url=http://192.168.178.60/json?cmd=status
automowerCache.updateInterval=60000
Die items sind die gleichen wie bei bezi. Das Binding ist direkt per http gelöst.

automower.items:

Code: Alles auswählen

String AutoMowerStatus "Status [MAP(automowerinfo_status.map):%s]"		<grass>			{http="<[automowerCache:30000:JSONPATH($.status.status)]"}    
String AutoMowerBattery "Batteriestatus (%)[%s]"						<battery>		{http="<[automowerCache:30000:JSONPATH($.status.battery)]"}
String AutoMowerMode "Modus [MAP(automowerinfo_mode.map):%s]"			<movecontrol>	{http="<[automowerCache:30000:JSONPATH($.status.mode)]"}
String AutoMowerHours "Betriebsstunden [%s]"							<pressure>		{http="<[automowerCache:30000:JSONPATH($.status.hours)]"}
String AutoMowerWifi "WiFi Signal (db) [%s]"							<signal>		{http="<[automowerCache:30000:JSONPATH($.wlan.signal)]"}
String AutoMowerNextRunD "Nächster Mähzeitpunkt [%s]"					<calendar>		{http="<[automowerCache:30000:JSONPATH($.timer.next.date)]"}
String AutoMowerNextRunT "Nächster Mähzeitpunkt [%s]"					<clock>			{http="<[automowerCache:30000:JSONPATH($.timer.next.time)]"}
String AutoMowerDuration "Dauer [%s]"   								<clock-on> 		{http="<[automowerCache:30000:JS(automower_duration.js)]"}

String AutoMowerModeHomeAutoEOD "Modus"									<movecontrol> {http=">[*:GET:http://192.168.178.60/json?cmd=mode&mode=%2$s]"}
String AutoMowerJob     "Mähen" <grass> 

Die Logik zum Jobstart ist in rules gewandert:

automower.rules:

Code: Alles auswählen

import org.joda.time.*

rule "AutomowerStartJob"
when
	Item AutoMowerJob  received command 
then
  logDebug("automower", "AutomowerStartJob: Entering Rule with {}",receivedCommand.toString)
 
  // only work for active commands
  if( receivedCommand.toString == "1" ||
  	  receivedCommand.toString == "2" ||
  	  receivedCommand.toString == "3" ||
  	  receivedCommand.toString == "4" ){
 
	  logDebug("automower", "AutomowerStartJob: Starting Job")
	 
	  var Number runtime = Integer::parseInt(receivedCommand.toString)
	 
	  var hour   = now.getHourOfDay
	  var minute = now.getMinuteOfHour
	 
	  var commandstring = "http://192.168.178.60/json?cmd=mode&mode=job&begin=" + hour + ":" + minute + "&end=" +  (hour + runtime) + ":" + minute ;
	    
	  logDebug("automower", "AutomowerStartJob: Sending: {}", commandstring )
	 
	  var String result = sendHttpGetRequest(commandstring)
	  
	  logDebug("automower", "AutomowerStartJob: Automower returned: {}", result)
	  
	  // reset the button
	  AutoMowerJob.sendCommand("")
  }
end

rule "AutoMowerModeHomeAutoEOD"
when
	Item AutoMowerModeHomeAutoEOD  received command 
then
  logDebug("automower", "AutoMowerModeHomeAutoEOD: Entering Rule with {}",receivedCommand.toString)
   
  if( receivedCommand.toString == "auto" ||
  	  receivedCommand.toString == "home" ||
  	  receivedCommand.toString == "eod" ||
  	  receivedCommand.toString == "man" ){
  	  	
/*
 *   0: Auto
 *   1: Manuell
 *   2: Home
 *   3: Demo
 */	  	
  	  switch  receivedCommand.toString {
    	case  receivedCommand.toString == "auto": AutoMowerMode.sendCommand("0")
    	case  receivedCommand.toString == "home": AutoMowerMode.sendCommand("2")
    	case  receivedCommand.toString == "eod": AutoMowerMode.sendCommand("0")
    	case  receivedCommand.toString == "man": AutoMowerMode.sendCommand("1")
      }
      // reset the button
	  AutoMowerModeHomeAutoEOD.sendCommand("")
  }
end
Transformations brauchen wir:

eine JS transformation zur hübschen Aufbereitung der Sekunden der Duration

automower_duration.js

Code: Alles auswählen

(function(i) {
    var ret = "";
    var seconds = JSON.parse(input).status.duration;
    var days = Math.floor(seconds/(24*60*60));
    var restwodays = seconds % (24*60*60);
    var hours = Math.floor(restwodays/(60*60));
    var restwohours = restwodays % (60*60);
    var minutes = Math.floor(restwohours/ 60);
    var seconds = restwohours % 60;
    
    var minutess = "" + minutes;
    if(minutes<=9) minutess = "0"+minutes;
     
    var secondss = "" +  seconds;
    if(seconds<=9) secondss = "0"+seconds;
    
    if ( days  > 0 )   ret = ""  + days    + "T ";
    if ( hours > 0 )   ret = ret + hours   + ":";
    if ( minutes > 0 ) ret = ret + minutess + ":";
    ret = ret + secondss + "";        
    return ret; 
})(input)
Und die Texte wie gehabt:

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
16=Automower abgeschaltet
17=Automower schläft
Gruß
Michael
Zuletzt geändert von michael am Sa 18. Mär 2017, 12:59, insgesamt 1-mal geändert.
Robonect H30x Firmware V0.9 (Final)
Automower: R40Li MSW-Version: 5.01.00 SUB-Version: 5.00.00 Software: OpenHab 2.0

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: Openhab2

Beitrag von bezibaerchen »

Ah cool. IpenHab2 habe ich mittlerweile auch, Marty steht aber noch im Keller, da konnte ich noch nichts probieren.
Denke, wenn ich ihn ausgemottet habe und er noch funktioniert, werde ich mich an die (Neu-)Einbindung in OH machen und dann Deinen Ansatz nehmen.
Habe auch noch das Hinterrad von fidatex, das noch angebracht werden muss. Jedoch scheitere ich an der Anleitung :-(
Mal schaun, wann ich dazu komme, mir das mal in Ruhe anzuschauen und wider Erwarten anzubringen.
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: Openhab2

Beitrag von michael »

Ist ja eigentlich 1:1 Dein Ansatz, halt nur mit den OH2 Features so wie ich sie verstanden habe :-)

Ich hoffe es funktioniert.
Robonect H30x Firmware V0.9 (Final)
Automower: R40Li MSW-Version: 5.01.00 SUB-Version: 5.00.00 Software: OpenHab 2.0

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: Openhab2

Beitrag von bezibaerchen »

Ich habe soweit alles wieder drin in OH2, eben bis auf den Mäher. Da ist glaube ich noch einiges im Argen, aber mal schauen. Jetzt steht erstmal ein ISP Wechsel bevor, allein da muss ich jetzt mal schauen, wie ich das zeitlich auf die Kette bekomme. Muss auch schauen, dass ich meine Regenerkennung wieder ans Laufen bringe.

Denke aber bis Marty wieder auf die Weide darf, wird noch ein wenig dauern. Mein Rasen schaut armselig aus, wohl überdüngt letztes Jahr. Ich muss, wenn die Witterung passt erstmal neu Säen und werde die erste Zeit manuell mähen. Letztes Jahr war Marty zufrüh drauf und hat alles wieder rausgerissen (Stichwort Heckrad zu doof zum Anbauen...)
MSW-Software: R40Li
MSW-Version: 5.01.00
MSW-Datum: 2014-10-10 13:44:38
SUB-Version: 5.00.00

ahamann
Forum-Anfänger
Beiträge: 1
Registriert: So 4. Sep 2016, 19:30

Re: Openhab2

Beitrag von ahamann »

vielen Dank Euch beiden. Das klappt super und problemlos.

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

Re: Openhab2

Beitrag von michael »

Ich suche noch nach einer brauchbaren Idee, wie man die Manuelle Steuerung (also "lings 20 rechts 30 für 5 sekunden) brauchbar in einer Sitemap machen könnte. Ideen sind mir sehr willkommen.

Ich könnte mir 2 Slider und einen Action Button vorstellen. Aber so richtig genial fänd ich das auch nicht....

Edit:

Mit folgenden Items/Sitemap/Rule:

Code: Alles auswählen

Number AutoMowerLeft  "Linkes Rad"   <movecontrol>
Number AutoMowerRight "Rechtes Rad"  <movecontrol>
String AutoMowerGo    "Zeit"         <heating>	

   
Group  item=AutoMowerGo label="Remote" {
Slider item=AutoMowerLeft
    Slider item=AutoMowerRight
    Switch item=AutoMowerGo mappings=[1000="1s", 2000="2s", 3000="3s", 4000="4s"] 
}


rule "AutomowerRemote"
when
	Item AutoMowerGo  received command 
then
  logDebug("automower", "AutomowerRemote: Entering Rule with {}",receivedCommand.toString)
  
  if( receivedCommand.toString != ""){
    var left = ((AutoMowerLeft.state as DecimalType).intValue - 50) * 2  // Normalize from 0 - 100 to -100 - 100
    var right = ((AutoMowerRight.state as DecimalType).intValue - 50) * 2  // Normalize from 0 - 100 to -100 - 100
 
    var commandstring = "http://192.168.178.60/xml?cmd=direct&left=" + left + "&right=" + right + "&timeout=" + receivedCommand.toString ;

    logDebug("automower", "AutomowerRemote: Sending: {}", commandstring )
    
    var String result = sendHttpGetRequest(commandstring)
	  
	logDebug("automower", "AutomowerRemote: Automower returned: {}", result)
    
    AutoMowerGo.sendCommand("")
  }
   
end
GEHT es schon. Wobei eine Bedienung mit 100% auf die Gelenke geht. Statt "*2" i der Normalisierung würde ein "*1.6" wohl nicht schaden.

Ist aber halt nicht wirklich schön....
Robonect H30x Firmware V0.9 (Final)
Automower: R40Li MSW-Version: 5.01.00 SUB-Version: 5.00.00 Software: OpenHab 2.0

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

Re: Openhab2

Beitrag von michael »

ich antworte mir nochmal selbst. It erste Lösung war... doof.

Ich habs reduzirer auf Drehen und vor/zurück, mit ein paat Buttons. Damit kann ich trivialst das Ding durch den Garten steuern. Hab grad "von Hand" rückwärts eineparkt. Schick. :-)

Ja, die Rule ist noch ein bissl hässlich, das könnte man in mehrfacher Hinsicht besser machen. Funktioniert aber grad sch schön :roll:

Site/Item/Rule:

Code: Alles auswählen

String AutoMowerGo    "Remote"         <heating>	
   

   Group  item=AutoMowerGo  label="Remote" {
           Switch item=AutoMowerGo mappings=[ll="LL", l="L", r="R", rr="RR"] 
           Switch item=AutoMowerGo mappings=[-1="-1"]         
           Switch item=AutoMowerGo mappings=[1="1", 2="2", 3="3", 4="4"] 
   }

rule "AutomowerRemote"
when
	Item AutoMowerGo  received command 
then
  logDebug("automower", "AutomowerRemote: Entering Rule with {}",receivedCommand.toString)
  
  if( receivedCommand.toString == "1"){
    sendHttpGetRequest("http://192.168.178.60/xml?cmd=direct&left=80&right=80&timeout=1000" )
  } else  if( receivedCommand.toString == "2"){
    sendHttpGetRequest("http://192.168.178.60/xml?cmd=direct&left=80&right=80&timeout=2300" )
  } else  if( receivedCommand.toString == "3"){
    sendHttpGetRequest("http://192.168.178.60/xml?cmd=direct&left=80&right=80&timeout=3600" )
  } else  if( receivedCommand.toString == "4"){
    sendHttpGetRequest("http://192.168.178.60/xml?cmd=direct&left=80&right=80&timeout=5000" )
  } else  if( receivedCommand.toString == "ll"){
    sendHttpGetRequest("http://192.168.178.60/xml?cmd=direct&left=-80&right=80&timeout=1000" )
  } else  if( receivedCommand.toString == "l"){
    sendHttpGetRequest("http://192.168.178.60/xml?cmd=direct&left=-50&right=50&timeout=1000" )
  } else  if( receivedCommand.toString == "rr"){
    sendHttpGetRequest("http://192.168.178.60/xml?cmd=direct&left=80&right=-80&timeout=1000" )
  } else  if( receivedCommand.toString == "r"){
    sendHttpGetRequest("http://192.168.178.60/xml?cmd=direct&left=50&right=-50&timeout=1000" )
  } else  if( receivedCommand.toString == "-1"){
    sendHttpGetRequest("http://192.168.178.60/xml?cmd=direct&left=-70&right=-70&timeout=1000" )
  }
  
  if( receivedCommand.toString != ""){
    AutoMowerGo.sendCommand("")
  }
   
end
Robonect H30x Firmware V0.9 (Final)
Automower: R40Li MSW-Version: 5.01.00 SUB-Version: 5.00.00 Software: OpenHab 2.0

GumSte
Forum-Anfänger
Beiträge: 2
Registriert: Di 4. Apr 2017, 13:33

Re: Openhab2

Beitrag von GumSte »

Hallo Zusammen,

bin gerade auch dabei meinen Luigi irgendwie über openHAB 2 in meine Hausautomation zu bringen.
Da ich über meinen HAGER Domovea nur HTTP Befehle senden kann aber nichts empfangen möchte ich das
ganze Thema Mower über openHAB realisieren und dann auf den KNX Bus schicken und umgekehrt.
Da ich in openHAB komplett neu bin würde mich eure komplettes Setup interessieren um einfach mal ein bisschen
experimentieren zu können :D
- welche Bindings nutzt ihr bzw. sind notwendig?
- wie schaut euer .things file aus?

Wäre sehr dankbar wenn mich jemand begleiten/unterstützen würde :roll:

Gruß
Stefan
Robonect H30x Firmware V0.9
Automower: R40Li
MSW-Version: 5.01.00
SUB-Version: 5.00.00
Hausautomation über KNX + HAGER Domovea
openHAB 2 - Anfänger

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

Re: Openhab2

Beitrag von michael »

Hallo Stefan,

ich denke für alle allgemeinen Fragen zu OH ist https://community.openhab.org/ die Richtige Anlaufstelle...

Gruß
Michael
Robonect H30x Firmware V0.9 (Final)
Automower: R40Li MSW-Version: 5.01.00 SUB-Version: 5.00.00 Software: OpenHab 2.0

ArPa
Forum-Nutzer
Beiträge: 10
Registriert: Mi 19. Apr 2017, 21:06
Wohnort: NRW
Mäher: Husqvarna Automower 310
Firmware des Mähers (MSW): MSW 7.xx.xx
Herstellungsjahr: 2017
Robonect-Modul: Robonect Hx (Rev.3)
Robonect Firmware: 0.9c
Kontaktdaten:

Re: Openhab2

Beitrag von ArPa »

Super, dass es hier auch openHAB 2 Fans gibt. Mein Automower bekommt in den nächsten Tagen das Robonect Modul spendiert, dann teile ich gerne meine Ideen bzgl. openHAB 2 mit euch ;)

Antworten

Zurück zu „OpenHAB“