HTTP / Dimmer

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Neuroplant
Beiträge: 28
Registriert: 13. Jul 2018 10:09

HTTP / Dimmer

Beitrag 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

StefanH.
Beiträge: 162
Registriert: 28. Dez 2017 11:37

Re: HTTP / Dimmer

Beitrag 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

Benutzeravatar
udo1toni
Beiträge: 13860
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: HTTP / Dimmer

Beitrag von udo1toni »

Eventuell ginge ja %2$s als Platzhalter, ob diie Zahl nun als Zahl oder als String übergeben wird, sollte keine Rolle spielen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Neuroplant
Beiträge: 28
Registriert: 13. Jul 2018 10:09

Re: HTTP / Dimmer

Beitrag 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

StefanH.
Beiträge: 162
Registriert: 28. Dez 2017 11:37

Re: HTTP / Dimmer

Beitrag von StefanH. »

Keine Ahnung, vielleicht per Rest API?

ibot1989
Beiträge: 99
Registriert: 30. Jul 2016 19:51
Wohnort: östlich von Hamburg, südlich von Lübeck, nördlich von Geesthacht

Re: HTTP / Dimmer

Beitrag 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


Benutzeravatar
udo1toni
Beiträge: 13860
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: HTTP / Dimmer

Beitrag 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)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Neuroplant
Beiträge: 28
Registriert: 13. Jul 2018 10:09

Re: HTTP / Dimmer

Beitrag 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

Benutzeravatar
udo1toni
Beiträge: 13860
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: HTTP / Dimmer

Beitrag 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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Neuroplant
Beiträge: 28
Registriert: 13. Jul 2018 10:09

Re: HTTP / Dimmer [Solved]

Beitrag 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

Antworten