Seite 1 von 1

HTTP / Dimmer

Verfasst: 13. Jul 2018 14:12
von Neuroplant
Hallo
ich nutze OH2 in form einer "openHABian" Installation auf einem RaspberryPI.
Ich möchte ein paar IT-Dimmer mit Hilfe eines LightmanagerPro, der via USB an den RasPI angeschlossen ist.
Gesteuert wird der Lightmanager wiederum mit https://github.com/curzon01/light-manager-c-ext
OH2 Spricht mit den Lampen also über das HTTP-Binding (es würde auch Exec gehen, aber HTTP halte ich im Blick auf zukünftige Umbauten für flexiber.
Für die einfachen Schalter funktioniert dies einwandfrei und auch die Dimmer lassen sich ein- und ausschalten.
lightman.items

Code: Alles auswählen

Switch CouchOnOff (gLights) [ "Switchable" ] { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%201%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%201%20LEARN%20OFF]" }
Switch EsstischOnOff (gLights) [ "Switchable" ] { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%202%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%202%20LEARN%20OFF]" }
Switch RegalOnOff "Regal" <Light> (gLights) [ "Switchable" ] { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%203%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%203%20LEARN%20OFF]" }
Switch LeselichtOnOff "Leselicht" <Light> (gLights) [ "Switchable" ] { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%204%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%204%20LEARN%20OFF]" }
Switch LampeOnOff "Lampe" <Light> (gLights) [ "Switchable" ] { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%205%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%205%20LEARN%20OFF]" }
Switch BettRechtsOnOff "Bett rechts" <Light> (gLights) [ "Switchable" ] { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%208%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%208%20LEARN%20OFF]" }
Switch BettLinksOnOff "Bett links" <Light> (gLights) [ "Switchable" ] { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%207%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%207%20LEARN%20OFF]" }
Switch KaffeeOnOff "Kaffe" [ "Switchable" ] { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%206%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%206%20LEARN%20OFF]" }
Dimmer Couch_DIM "Couch [%d %%]" <slider> (gLights) [ "Lighting" ] {  http=">[CHANGED:GET:http://openhabianpi:1001/cmd=IT%20A%201%20LEARN%20dim%20%2$d]" }
Dimmer Esstisch_DIM "Esstisch [%d %%]" <slider> (gLights) [ "Lighting" ] { http=">[CHANGED:GET:http://openhabianpi:1001/cmd=IT%20A%202%20LEARN%20dim%20%2$d]" }
Die beiden ersten Schalter sind mit den Dimmern unten identisch und nur für Testzwecke gedacht (ja, sie funktionieren).
Die beiden letzten Zeilen funktionieren hingegen nicht :(

Meine Frage ist somit, wie übergebe ich den Dimmwert an den String?
ich habe es hier mal mit "%2$d" versucht, habe aber noch nirgendwo gefunden, wie es richtig wäre.
Also Dimmwert 40 soll für Esstisch_DIM ergeben
http://openhabianpi:1001/cmd=IT%20A%202%20LEARN%20dim%2040
oder
http://openhabianpi:1001/cmd=IT A 2 LEARN dim 40

Ich glaube meine Frage ist gar nicht so schwer zu beantworten, wenn man erstmal verstanden hat was ich will ;)

Gruß
Neuroplant

Re: HTTP / Dimmer

Verfasst: 13. Jul 2018 15:10
von StefanH.
Ich kann dir nicht helfen, aber nur mal als Denkanstoss:
Eventuell einen Dummy Dimmer erstellen, der in einer Rule genutzt wird?

Sobald der Dimmer veraendert wird triggert die Rule. In der Rule kannst du dann den Webrequest machen:
sendHttpGetRequest("http://xxxx/bla")

Stefan

Re: HTTP / Dimmer

Verfasst: 13. Jul 2018 16:21
von udo1toni
Eventuell ginge ja %2$s als Platzhalter, ob diie Zahl nun als Zahl oder als String übergeben wird, sollte keine Rolle spielen.

Re: HTTP / Dimmer

Verfasst: 13. Jul 2018 18:41
von Neuroplant
StefanH. hat geschrieben: 13. Jul 2018 15:10 Ich kann dir nicht helfen, aber nur mal als Denkanstoss:
Eventuell einen Dummy Dimmer erstellen, der in einer Rule genutzt wird?

Sobald der Dimmer veraendert wird triggert die Rule. In der Rule kannst du dann den Webrequest machen:
sendHttpGetRequest("http://xxxx/bla")

Stefan
Auch eine Idee, aber die Frage bleibt: wie übergebe ich den Dimmer Wert an den Request?
Gruß
Neuroplant

Re: HTTP / Dimmer

Verfasst: 13. Jul 2018 20:18
von StefanH.
Keine Ahnung, vielleicht per Rest API?

Re: HTTP / Dimmer

Verfasst: 14. Jul 2018 12:52
von ibot1989
Hallo zusammen,

ich bin gerade unterwegs, weshalb ich es nicht testen kann, aber meiner Meinung nach müsste folgendes in einer Rule doch funktionieren:

sendHttpGetRequest("http://openhabianpi:1001/cmd=IT%20A%202 ... e.toString")

Probier es Mal aus.

Gruß iBot

Gesendet von meinem ONE A2003 mit Tapatalk


Re: HTTP / Dimmer

Verfasst: 15. Jul 2018 21:59
von udo1toni
Das ist der Grund, warum man Code auch als Code markieren sollte...

Code: Alles auswählen

sendHttpGetRequest("http://openhabianpi:1001/cmd=IT%20A%202%20LEARN%20dim%20%22"+Couch_DIM.state.toString)

Re: HTTP / Dimmer

Verfasst: 15. Jul 2018 22:46
von Neuroplant
udo1toni hat geschrieben: 15. Jul 2018 21:59 Das ist der Grund, warum man Code auch als Code markieren sollte...

Code: Alles auswählen

sendHttpGetRequest("http://openhabianpi:1001/cmd=IT%20A%202%20LEARN%20dim%20%22"+Couch_DIM.state.toString)
Hallo,
das sieht zwar auf den ersten Blick ganz gut aus, allerdings ist das Ziel ein Item und keine Rule zu erstellen.
udo1toni hat geschrieben: 13. Jul 2018 16:21 Eventuell ginge ja %2$s als Platzhalter, ob diie Zahl nun als Zahl oder als String übergeben wird, sollte keine Rolle spielen.
Hallo,
Ich habe das mal ausprobiert, aber ich verstehe nicht ganz, wie dass mit dem Platzhalter funktioniert.
Das Item würde also so aussehen:

Code: Alles auswählen

Dimmer Esstisch_DIM2   "Esstisch[%d %%]"     (gLights)   [ "Lighting" ]      { http=">[CHANGED:GET:http://openhabianpi:1001/cmd=IT%20A%202%20LEARN%20%2$s]" }
Das Ergebnis ist leider:

Code: Alles auswählen

2018-07-15 22:33:07.637 [WARN ] [mon.registry.AbstractManagedProvider] - Could not update element with key _tags:Esstisch_DIM2 in ManagedMetadataProviderImpl, because it does not exists.
Gruß
Neuroplant

Re: HTTP / Dimmer

Verfasst: 16. Jul 2018 12:28
von udo1toni
Wenn der Parser innerhalb der http-Binding-Item-Konfiguration auf die Zeichenfolge %2$s stößt, sollte er diese Zeichenkette mit der zweiten Eigenschaft des Items ersetzen (die zweite Eigenschaft ist in diesem Fall das Status des Items), und zwar als String. Falls es sich um einen numerischen Status handelt, wird dieser vorher in einen String konvertiert. %1$s wäre der letzte Zeitstempel (also das letzte Update des Items).

Soweit die Theorie...
Wenn das nicht funktioniert, wird der Parser sich an irgendeinem Teil des Konfigurationsstrings verschlucken. Hast Du einen Webserver im Zugriff? Dann kannst Du ein Testitem bauen, welches Du auf diesen Webserver zugreifen lässt. Dann kannst Du im Log des Webservers schauen, was openHAB für eine Anfrage schickt. Vielleicht hat auch light-manager-c-ext ein Log, in dem Du die Anfragen sehen kannst.

Re: HTTP / Dimmer [Solved]

Verfasst: 16. Jul 2018 22:04
von Neuroplant
Hallo,
ich hab es jetzt doch mit einer Rule gemacht,
Falls hier noch mal jemand vorbei schaut, der einen JBLightmanager im Einsatz hat hier die Kkompettlösung:
(für die einfachen Schalter benutze ich weiter das HTTP-Binding)

Lightman.Items

Code: Alles auswählen

Switch RegalOnOff       "Regal"         <Light>	(gLights)   [ "Switchable" ]    { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%203%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%203%20LEARN%20OFF]" }
Switch LeselichtOnOff   "Leselicht"     <Light>	(gLights)   [ "Switchable" ]    { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%204%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%204%20LEARN%20OFF]" }
Switch LampeOnOff       "Lampe"         <Light>	(gLights)   [ "Switchable" ]    { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%205%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%205%20LEARN%20OFF]" }
Switch BettRechtsOnOff  "Bett rechts"   <Light>	(gLights)   [ "Switchable" ]    { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%208%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%208%20LEARN%20OFF]" }
Switch BettLinksOnOff   "Bett links"    <Light>	(gLights)   [ "Switchable" ]    { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%207%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%207%20LEARN%20OFF]" }
Switch KaffeeOnOff      "Kaffeemaschine"		[ "Switchable" ]    { http=">[ON:GET:http://openhabianpi:1001/cmd=IT%20A%206%20LEARN%20ON] >[OFF:GET:http://openhabianpi:1001/cmd=IT%20A%206%20LEARN%20OFF]" }
Dimmer Couch_DIM2	"Couch"  	<Light>	(gLights) [ "Lighting" ] 
Dimmer Esstisch_DIM2	"Esstisch" 	<Light>	(gLights) [ "Lighting" ] 

Dimmer.rules

Code: Alles auswählen

rule "Esstich_Dimming"
when
	Item Esstisch_DIM2 changed
then
	sendHttpGetRequest("http://openhabianpi:1001/cmd=IT%20A%202%20LEARN%20%20"+Esstisch_DIM2.state.toString)
	logInfo("Esstisch_DIM2",Esstisch_DIM2.state.toString)
end

rule "Couch_Dimming"
when
	Item Couch_DIM2 changed
then

	sendHttpGetRequest("http://openhabianpi:1001/cmd=IT%20A%202%20LEARN%20%20"+Couch_DIM2.state.toString)
	logInfo("Couch_DIM2",Couch_DIM2.state.toString)

end
Vielen Dank für die Informationen, Anregungen und Hilfestellungen
Gruß
Neuroplant