Modbus SMA Register schreiben

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
tichu78
Beiträge: 11
Registriert: 6. Nov 2021 17:30

Modbus SMA Register schreiben

Beitrag von tichu78 »

Hallo,
ich würde gerne ein Register schreiben um die Sollwertbegrenzung meines Wechselrichters zu setzen.
Laut SMA Doku gibt es 2 Möglichkeiten:

Register: 40023
Länge: 1
Typ: S16
Datenformat: FIX2
Zugriff: WO
Einheit: %
Beschriebung: Anlagensteuerobjekt
Normierte Wirkleistungsbegrenzung durch Anlagensteuerung

Register: 40016
Länge: 1
Typ: S16
Datenformat: FIX0
Zugriff: WO
Einheit: %
Beschriebung: Anlagensteuerobjekt
Normierte Wirkleistungsbegrenzung durch Anlagensteuerung

Ich verwende 40023 da ich auf 73,50% begrenzen möchte.
Also habe ich eine Rule erstellt die das Register testweise auf 50% setzen soll

Code: Alles auswählen

	
	Bridge poller sma_poller_wirkleistung_soll_write [start=40023, length=1, refresh=500, type="holding" ] {
          Thing data sma_data_wirkleistung_soll_write "SMA Daten Sollwertbegrenzung schreiben" [writeType="holding", writeStart="40023", writeValueType="uint16" ]
    }
    
    Number sma_wirkleistung_soll_write "SMA Item Sollwertbegrenzung" { channel="modbus:data:sma:sma_poller_wirkleistung_soll_write:sma_data_wirkleistung_soll_write:number" }

rule "SMA Dynamische Sollwert Steuerung"
when 
    Item sma_aktuelle_erzeugung received command
then
    events.sendCommand("sma_wirkleistung_soll_write", "5000")
end
    
Das command scheint aber nicht versendet zu werden.

Weiß jemand Rat?
von udo1toni » 26. Jun 2022 10:15
received command heißt: hat einen Befehl empfangen. Nimm stattdessen changed als Trigger. Jedes Mal, wenn sich der Wert ändert, wird die Rule ausgelöst.
Gehe zur vollständigen Antwort

tichu78
Beiträge: 11
Registriert: 6. Nov 2021 17:30

Re: Modbus SMA Register schreiben

Beitrag von tichu78 »

Eine Rule die ich über das UI erstelle und manuell ausführe funktioniert.
Aber ich verstehe nicht warum der trigger nicht funktioniert?
das item wird jede sekunde refresht, also sollte doch jede Sekunde geprüft und geschrieben werden!?

Code: Alles auswählen

triggers:
  - id: "1"
    configuration:
      itemName: sma_aktuelle_erzeugung
    type: core.ItemCommandTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      itemName: sma_wirkleistung_soll_write
      command: "1111"
    type: core.ItemCommandAction

tichu78
Beiträge: 11
Registriert: 6. Nov 2021 17:30

Re: Modbus SMA Register schreiben - Rule triggered nicht

Beitrag von tichu78 »

Hat jemand eine Idee warum die Rule nicht automatisch triggered?

triggers:
- id: "1"
configuration:
itemName: sma_aktuelle_erzeugung
type: core.ItemCommandTrigger

2022-06-26 09:41:15.404 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'sma_aktuelle_erzeugung' changed from 2955 to 2947

ItemCommandTrigger - fires when the specified Item receives a Command
Das sollte doch passen, oder? Ist das ein command wenn der wert (state) sich ändert? Oder mache ich da einen Denkfehler?

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

Re: Modbus SMA Register schreiben

Beitrag von udo1toni »

received command heißt: hat einen Befehl empfangen. Nimm stattdessen changed als Trigger. Jedes Mal, wenn sich der Wert ändert, wird die Rule ausgelöst.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten