Internorm Jalousien über http-Binding

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

ollyins
Beiträge: 49
Registriert: 17. Jul 2022 23:34
Answers: 0

Re: Internorm Jalousien über http-Binding

Beitrag von ollyins »

Jo, also mit deinem Befehl direkt im Browser hat sich eine Jalousie geöffnet, also die Lamellen geöffnet. Mit ...000D fuhr sie runter... 0007 stop, 000C hoch.. 00C ist wohl nur jalousie-lamellen öffnen. Also das tut es! aber natürlich keinerlei rückmeldung im openhab log wenn ich es so mache. wie und wo soll ich den den Code oben testen in openhab?

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

Re: Internorm Jalousien über http-Binding

Beitrag von udo1toni »

oh73 hat geschrieben: 15. Mär 2023 20:53

Code: Alles auswählen

logInfo("request = "," "+request)
Möächtest Du gesteinigt werden?

logInfo(string,string) erwartet exakt zwei Parameter, und zwar zwei Strings. Dabei ist der erste Parameter der Loggername. Leerzeichen haben im Loggernamen nichts zu suchen! Sonderzeichen haben im Loggernamen nichts zu suchen!
Streng genommen ist es auch nur ein Teil des Loggernamens, denn openHAB stellt automatisch ein "org.openhab.core.model.script." voran.
Der zweite String ist die eigentliche Meldung, die geloggt wird. Die log-Befehle beherrschen Substitution, also Ersetzung einer festgelegten Zeichenfolge durch den Inhalt einer Variablen.Fügt man {} in die Meldung ein, so wird das mit der nächsten angegebenen Variablen ersetzt. Dabei wird die Variable automatisch nach String gewandelt.

Ein korrekter logInfo-Befehl sieht also eher so aus:

Code: Alles auswählen

logInfo("request","Reqquest = {}",request)
Über den Loggernamen kann man das Logging zur Laufzeit recht genau steuern, denn es gibt nicht nur logInfo(), sondern auch logDebug(), logWarn() und logError(). Diese Befehle führen nicht nur zu einer anderen Darstellung im Log (was natürlich an der Konfiguration von frontail liegt), die Stufe gibt die Dringlichkeit der Information an. Mit einem Befehl log:set WARN org.openhab.core.model.script.request kann man dann dafür sorgen, dass die logInfo-Zeile von weiter oben einfach gar nicht mehr ausgegeben wird. eine entsprechende logWarn("request","...") Meldung wird aber weiterhin ausgegeben, erst wenn das Loglevel auf ERROR gesetzt wird, werden entsprechende Meldungen nicht mehr ausgegeben. Mit DEBUG hingegen wird dann noch mehr ausgegeben (vorausgesetzt, es gibt entsprechende Anweisungen, natürlich) Man kann also prima steuern, wie geschwätzig openHAB bezüglich einer selbst gebauten Rule ist, und man muss dafür weder eine Datei bearbeiten noch das System anhalten oder gar neu booten.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

oh73
Beiträge: 302
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Internorm Jalousien über http-Binding

Beitrag von oh73 »

nein, ich möchte nicht gesteinigt werden :oops:

deshalb halte ich mich besser da raus?

aber die Befehle sind in der InternormApi.pdf genau beschrieben!

die ersten zwei Ziffern für die Adresse und 4 Ziffern für den Befehl!

01 = 1. Gerät,

000C = Befehl auf
000D = Befehl ab
0007 = Stop

den Code kannst du in einer Rule einbauen und testen!
OH 4.3.0 auf HP 26o G1 Dm Mini Pc mit MX_Linux

ollyins
Beiträge: 49
Registriert: 17. Jul 2022 23:34
Answers: 0

Re: Internorm Jalousien über http-Binding

Beitrag von ollyins »

Moin, also wie gehts nun weiter, dass die Befehle auch über die rule in oh ausgeführt werden? Ich kann der Konversation über die loginfo nicht ganz folgen, bzw. das löst ja nicht das Problem oder ?

oh73
Beiträge: 302
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Internorm Jalousien über http-Binding

Beitrag von oh73 »

im Prinzip sollte die Rule von Udo so funktionieren,

wenn das auch mit den Schaltern in der Gruppe für mich etwas komplex ist!

ich versuche sowas immer erst mit einem Schalter.

aber ein Hinweis, versuche erst mal im Thing den Abschnitt "mode" zu ändern.

irgendwas war da auch bei mir, hat nur mit

mode = "WRITEONLY", funktioniert !

wenn das nicht funktioniert,

noch mal ein Beispiel von mir mit einem Schalter,
das Thing:

Code: Alles auswählen

Thing  http:url:mediola "Aio Gateway http"  [baseURL="http://192.168.0.5/command?", authMode= "BASIC", commandMethod="GET", ignoreSSLErrors = true , bufferSize = "2048", timeout = "3000", refresh=60 ] 
	{
    Channels: 
		
		Type rollershutter: P4RL1_01 "Rollershutter 01" 	[mode = "WRITEONLY", upValue = "XC_FNC=SendSC&type=IN&data=0100C", downValue = "XC_FNC=SendSC&type=IN&data=0100D", stopValue = "XC_FNC=SendSC&type=IN&data=01007",commandExtension = "%2$s" ]
	
	}
das Item dazu:

Code: Alles auswählen

Rollershutter P4RL1_01	"Küche"		<roolershutter>		{ channel="http:url:mediola:P4RL1_01"}	
"mediola" eventuell in beiden anpassen!

wenn ich nicht wieder ein Fehler eingebaut habe, :) sollte das funktionieren!
OH 4.3.0 auf HP 26o G1 Dm Mini Pc mit MX_Linux

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

Re: Internorm Jalousien über http-Binding

Beitrag von udo1toni »

Das mit der Gruppe ist nicht weiter schwer :) der wichtigste Punkt ist, dass man benötigte Informationen aus dem Itemnamen herleiten kann (wie in diesem Fall eben die Adresse als HEX-Zahl), so dass man die Rule um das Ganze herum nicht mehrfach schreiben muss.
Die Rule an sich sollte nicht das Problem sein, die Funktion kann man ja leicht raus loggen. Aber offensichtlich funktioniert die Anbindung über das http Binding nicht wie erwartet.

Du könntest noch versuchen, statt der http Bindings das http/j Binding zu installieren. J-N-K betreibt einen 3rd-Party-Marketplace, so dass er seine Bindings schneller zur Verfügung stellen kann. In den meisten Fällen sind das, soweit ich es verstanden habe, Forks von bestehenden Bindings, die fehlerbereinigt sind. Speziell beim http Binding gab es auch irgendein Problem, ich habe aber keinen Schimmer, ob das hier zum Tragen kommen könnte, oder ob es am Ende eh auch schon im openHAB Addons Repository gefixt ist.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

oh73
Beiträge: 302
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Internorm Jalousien über http-Binding

Beitrag von oh73 »

zum versuchen hätte ich auch noch eine ganz einfache Rule für einen Schalter.

Code: Alles auswählen

rule "Internorm Rollershutter 1"
when 
	Item P4RL1_01 changed
then
	var strCommand = ""
    if (P4RL1_01.state==ON) { strCommand = "0100C" }
	if (P4RL1_01.state==OFF) { strCommand = "0100D" }
	if (P4RL1_01.state==STOP) { strCommand = "01007" }
	
	var senden = "http://192.168.0.5/command?XC_FNC=SendSC&type=IN&data="+strCommand
	var request = sendHttpGetRequest (senden,11001)
	logInfo("request","Request = {}",request)
end
aber wie schon gesagt, würde erst mal im Thing beim senden das in
mode = "WRITEONLY" ändern

Edit:

sehe gerade das im Thing noch mehr anders als bei mir ist:
ignoreSSLErrors: true
channelTypeUID: steht bei dir String, vermute da müsste dann channelTypeUID: Rollershutter hin.
OH 4.3.0 auf HP 26o G1 Dm Mini Pc mit MX_Linux

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

Re: Internorm Jalousien über http-Binding

Beitrag von udo1toni »

NEIN!

Der Channel wird zum Senden eines Strings verwendet und hat nichts mit einem Rollershutter zu tun!

Grundsätzlich kann man natürlich auch mit der Action arbeiten (sendHttpGetRequest), aber schöner wäre es schon, das über ein Thing zu erledigen, sonst muss man die Konfiuguration splitten, also der Sende-Teil in der Rule, der Empfangsteil in den Things, das ist fehleranfällig.

Übrigens stimmt der Aufruf nicht, sendHttpGetRequest nutzt entweder einen oder drei Parameter, das wäre dann als zweiter Parameter der Header und als dritter Parameter der Timeout. Siehe offizielle Doku.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

ollyins
Beiträge: 49
Registriert: 17. Jul 2022 23:34
Answers: 0

Re: Internorm Jalousien über http-Binding

Beitrag von ollyins »

Hi Udo, das andere Binding finde ich nicht. Aber es muss doch irgendwie anders gehen.. vielleicht mal einige debug schritte einbauen, um zu sehen wie die Commandos aussehen etc. ?

oh73
Beiträge: 302
Registriert: 7. Mär 2021 14:49
Answers: 1

Re: Internorm Jalousien über http-Binding

Beitrag von oh73 »

hab jetzt mal die Rule mit der Gruppe von Udo nachgebaut,
zum testen meine FS20 Schalter eingesetzt.

funktioniert einwandfrei !

nur den Befehl :

Code: Alles auswählen

 val strAdr = triggeringItem.name.split("_").get(2)
habe ich geändert auf :

Code: Alles auswählen

 val strAdr = triggeringItem.name.split("_").get(1)
kommt aber darauf an wie deine Items aussehen mit 1 oder 2 Unterstriche?

der Fehler kann eigentlich nur noch an einem Parameter vom Thing liegen!
OH 4.3.0 auf HP 26o G1 Dm Mini Pc mit MX_Linux

Antworten