Seite 1 von 1

Modbus SMA Register schreiben

Verfasst: 25. Jun 2022 18:19
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?

Re: Modbus SMA Register schreiben

Verfasst: 25. Jun 2022 18:46
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

Re: Modbus SMA Register schreiben - Rule triggered nicht

Verfasst: 26. Jun 2022 09:47
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?

Re: Modbus SMA Register schreiben

Verfasst: 26. Jun 2022 10:15
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.