Werte umrechnen und Aktion auslösen

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

EmptySoft
Beiträge: 188
Registriert: 7. Jan 2020 14:45
Answers: 2
Kontaktdaten:

Re: Werte umrechnen und Aktion auslösen

Beitrag von EmptySoft »

Du benötigst dazu das httpbindung

In Deiner Rule wird deine gewünschte Url nur in eine Variable geschrieben richtig wäre

Code: Alles auswählen

sendHttpGetRequest("http://192.168.178.45/PW/sw/0/on")
wobei ich über MQTT mit den Geräten kommuniziere...
BYe
Harald

loewes
Beiträge: 31
Registriert: 10. Jan 2023 09:52
Answers: 2

Re: Werte umrechnen und Aktion auslösen

Beitrag von loewes »

jetzt bekomme ich im Log:

Code: Alles auswählen

2023-01-16 11:26:03.101 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'steckdose' failed: ReferenceError: "sendHttpGetRequest" is not defined in <eval> at line number 5
Oder kann ich das irgendwie als "Schalter" anlegen? Mein Problem war: ich kann das ja als HTTP Binding anlegen, aber dann ruft er die Adresse ja in regelmäßigen Abständen auf, ich möchte das ja nur bei Anforderung...

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

Re: Werte umrechnen und Aktion auslösen

Beitrag von oh73 »

wie das gesendet wird hatte ich schon im 2. Beitrag geschrieben.

du hast nur nicht alles übernommen, den Befehl schon in die Variable geschrieben aber den eigentlichen sende Befehl vergessen!

Code: Alles auswählen

var result =sendHttpGetRequest(senden, 1000)
wichtig ist auch das ",1000" im senden Befehl, damit vermeidest du Timeout Probleme!

wenn du dann noch mit Loginfo die Variable result ausgibst, findest du auch schnell eventuelle Fehler.
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

loewes
Beiträge: 31
Registriert: 10. Jan 2023 09:52
Answers: 2

Re: Werte umrechnen und Aktion auslösen

Beitrag von loewes »

Sorry, stimmt, das hattest Du schon so geschrieben.
Ich hab das jetzt so eingefügt und bekomme immer noch den gleichen Fehler:

Code: Alles auswählen

2023-01-16 11:45:24.354 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'steckdose' failed: ReferenceError: "sendHttpGetRequest" is not defined in <eval> at line number 5
Muss ich da vorher noch irgendwas definieren?

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

Re: Werte umrechnen und Aktion auslösen

Beitrag von oh73 »

hast du das http Binding installiert?

meine Befehle sind ja alle in einer Text Rule,

könnte sein das bei bei ECMA Scripten der Befehl etwas anders ist, weiß ich nicht, deshalb hab ich mich da auch raus gehalten!
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

loewes
Beiträge: 31
Registriert: 10. Jan 2023 09:52
Answers: 2

Re: Werte umrechnen und Aktion auslösen

Beitrag von loewes »

Ja, das HTTP Binding ist installiert.
Text-Rule wäre dann in der Oberfläche "Rule DSL"? Ich schreibe es auch gern einfach in eine Text-Datei. Aber dann muss ich jetzt die Syntax anpassen, oder? Das ist ja dann nicht mehr Java?
Im Wesentlichen will ich ja nur diese Abfrage hier machen:

Code: Alles auswählen

var grenzwert = 0;

if (itemRegistry.getItem('Reststrom').getState() > grenzwert && itemRegistry.getItem('HomeWizardInfo_Steckdose_1').getState() == 'off') {
  var senden = "http://192.168.178.45/PW/sw/0/on"} else if (itemRegistry.getItem('Reststrom').getState() < grenzwert && itemRegistry.getItem('HomeWizardInfo_Steckdose_1').getState() == 'on') {
    var senden = "http://192.168.178.45/PW/sw/0/off"
  };
  var result =sendHttpGetRequest(senden, 1000)

EmptySoft
Beiträge: 188
Registriert: 7. Jan 2020 14:45
Answers: 2
Kontaktdaten:

Re: Werte umrechnen und Aktion auslösen

Beitrag von EmptySoft »

Ruke im DSL Format

Ich probiere es einmal aus dem Gedächtnis, die Rule wird jede Minute um 5 nach gestartet. Bitte when Bedingung und Rest an Deine Wünsche anpassen. Im Logfile siehst Du auch schön was passiert (oder welche Fehlermeldung kommt)

Code: Alles auswählen

val grenzwert = 0
rule "RuleNameLasDirEinenEinfallen"
 when 
  Time cron "5 * * * * ?"
 then
  val fName="NameFuersLoggingAmBestenWieDerRuleName"
  logInfo(fName,"-started")
  if(Reststrom.getState() > grenzwert)
   {
   logInfo(fName," RestStrom {} > grenzwert {}",RestStrom,grenzwert)
   var result =sendHttpGetRequest("http://192.168.178.45/PW/sw/0/off", 1000)
   logInfo(fName,"  result: {}",result)
   }
  logInfo(fName,"-ended")
 end 

BYe
Harald

loewes
Beiträge: 31
Registriert: 10. Jan 2023 09:52
Answers: 2

Re: Werte umrechnen und Aktion auslösen

Beitrag von loewes »

Perfekt! Vielen Dank! Das funktioniert jetzt!
Ich hab das jetzt als "Rule DSL" definiert und es funktioniert! :D
Hier meine Umsetzung:

Code: Alles auswählen

val fName="steckdose"
val grenzwert = 0  
  logInfo(fName,"-started")
  if(Reststrom.getState() > grenzwert && HomeWizardInfo_Steckdose_1.getState() == 'off')
   {
   logInfo(fName," Reststrom {} > grenzwert {}",Reststrom.getState(),grenzwert)
   var result =sendHttpGetRequest("http://192.168.178.45/PW/sw/0/on", 1000)
   logInfo(fName,"  result: {}",result)
   }
else if(Reststrom.getState() < grenzwert && HomeWizardInfo_Steckdose_1.getState() == 'on')
  {
   logInfo(fName," Reststrom {} < grenzwert {}",Reststrom.getState(),grenzwert)
   var result =sendHttpGetRequest("http://192.168.178.45/PW/sw/0/off", 1000)
   logInfo(fName,"  result: {}",result)
   }
  logInfo(fName,"-ended")

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

Re: Werte umrechnen und Aktion auslösen

Beitrag von udo1toni »

Zur Ergänzung: sendHttpGetRequest ist eine Funktion im Core, das heißt, das http Binding ist dazu nicht notwendig!
Das Problem wird hier sein (deshalb half der Umstieg auf die DSL), dass man die Funktion in JavaScript erst bekannt machen muss.
Da ich mich aber nicht mit JavaScript beschäftige, kann ich außer dieser Vermutung keinen weiteren Tipp geben, wie das genau funktioniert.

Fakt ist aber: es wird mit JavaScript genauso funktionieren, wenn Du raus findest, wie es korrekt aufgerufen wird.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: Werte umrechnen und Aktion auslösen

Beitrag von oh73 »

ich hab hier :

https://community.openhab.org/t/syntax- ... t/111863/4

was gefunden wie das mit JavaScript funktionieren soll,
ist mir aber zu kompliziert!
OH 4.0.3 auf HP 26o G1 Dm Mini Pc mit MX_Linux

Antworten