Rule Werte kopieren

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
alfiner
Beiträge: 3
Registriert: 20. Aug 2019 12:31

Rule Werte kopieren

Beitrag von alfiner »

Hi ich möchte den Wert eine Wetter Items in ein Modbus Item kopieren und dann an meine SPS senden damit ich den Wetterwert dort auswerten kann.
Ich dachte mir mit einer Rule sollte es gehen aber ich weis nicht wie ich es programmieren muss.

Wetter Item:
Number Temperature "Temperature [%.1f °C]" {weather="locationId=home, type=temperature, property=current"}

Modbus Item:
Number Temperature1
"Temperature1 [%.1f °C]" <temperature1>
{ channel="modbus:data:CX5010:holding:Temperature1:number" }

Modbus Thing:
Thing data Temperature1 [
readStart="32778", readValueType="uint16",
writeStart="32778", writeValueType="uint16", writeType="holding" ]

Rule Test:
rule "Temperatur"
when
Item ModbusKomm1 changed from OFF to ON
then
sendCommand (Temperature1, 38)
end


Mit dieser Rule kann ich den Wert 38 übertragen aber ich weis nicht wie ich das Wetter Item Temperature angeben muss anstelle der 38. Der Wert kann auch zyklisch gesendet werden, das Item ModbusKomm1 ist nur zum testen da.

Muss ich eventuell das Datenformat ändern damit es funktioniert? Ich weis aber nicht wie und in welches Format.

Wenn ich noch mehr angeben muss bitte Bescheid geben, ich hoffe jemand kann mir da helfen, danke.

Gruss

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Rule Werte kopieren

Beitrag von peter-pan »

Ich kenne mich da zwar nicht so aus, aber wenn du den Wert übertragen willst, dann solltest du den Channel van deinem Item Temperature1 weglassen, weil dort immer wieder der Wert von deinem Channel ankommt !!?? oder
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

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

Re: Rule Werte kopieren

Beitrag von udo1toni »

Dazu braucht es - eine aktuelle Version von openHAB vorausgesetzt (mindestens testing, also OH2.5M3) - keine Rule. Es reicht in diesem Fall ein Profil (follow)
Items:

Code: Alles auswählen

Number Temperature "Temperature [%.1f °C]" {weather="locationId=home, type=temperature, property=current", channel="modbus:data:CX5010:holding:Temperature1:number" [profile="follow"]}
Der Channel bekommt bei jedem Update vom weather Binding automatisch den neuen Wert.

Falls das nicht funktioniert, weil z.B. die OH-Version nicht passt oder der Datentyp nicht passt, geht es einfach per Rule:

Code: Alles auswählen

Number Temperature "Temperature [%.1f °C]" {weather="locationId=home, type=temperature, property=current"}
Number Temperature1 "Temperature1 [%.1f °C]" <temperature1> { channel="modbus:data:CX5010:holding:Temperature1:number" }
Rule:

Code: Alles auswählen

rule "update modbus temperature"
when
    Item Temperature changed
then
    if(Temperature.state instanceof Number) {
        Temperature1.sendCommand(Temperature.state as Number)
    }
end
Natürlich ist es nicht sinnvoll, das Item auch zu verwenden, um Daten von Modbus aus zu schicken, es sollte also ausschließlich in Richtung Modbus konfiguriert sein, nicht bidirektional.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

alfiner
Beiträge: 3
Registriert: 20. Aug 2019 12:31

Re: Rule Werte kopieren

Beitrag von alfiner »

Danke, follow funktioniert. Hm das wusste ich bis jetzt nicht.

Die Temperatur hat 2 Kommastellen, die beim übertragen via Modbus (uint) abgeschnitten werden. Kann ich vor dem übertragen die Temperatur mit 10 multiplizieren damit ich in der sps die Temperatur in 1/10 °C habe oder braucht es da eine rule?

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

Re: Rule Werte kopieren

Beitrag von udo1toni »

Das geht per Rule.

Code: Alles auswählen

rule "update modbus temperature"
when
    Item Temperature changed
then
    if(Temperature.state instanceof Number) {
        Temperature1.sendCommand((Temperature.state as Number)*10)
    }
end
also bis auf den Faktor identisch mit der Variante von oben.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

alfiner
Beiträge: 3
Registriert: 20. Aug 2019 12:31

Re: Rule Werte kopieren

Beitrag von alfiner »

Danke werde ich testen. Eventuell kann ich es auch als float (32bit) via Modbus übertragen.

Die follow Funktion finde ich cooler als mit einer rule aber mal sehen , muss das heute oder morgen testen.

Gruss

Antworten