ich kriege gerade in meiner rule zur Ansteuerung eines Shelly Dimmers die Übergabe eines Wertes als Variable nicht hin
Angebunden via MQTT (das soll auch so bleiben)
Die Ansteuerung An/Aus funktioniert..
rule "Ein"
when
Item Test1 received command ON
then
Shelly13cmd.sendCommand("on")
end
ebenso das Aussschalten. Probleme tun sich bei der Übertragung des Helligkeitswert auf.. konstante Werte lassen sich als string übertragen, der Dimmer reagiert auch.
Wie bekomme ich nun in dem string eine variable eingebunden? Hier die rule dazu mit der Konstanten..
rule "Value"
when
Item Test3 received command ON
then
Shelly13Value.sendCommand("{brightness: 99}")
end
Also konkret: wie ersetze ich den Wert (hier 99) durch eine Variable??
schon mal Dank im voraus für eure Anregungen
Gruss
Mattes
Warum steuerst Du den Shelly so kompliziert? Du könntest einfach entsprechende Channel anlegen, über die Du dann die Helligkeit direkt steuerst, nicht als String, sondern als Number.
Du kannst natürlich auch einen String so zusammensetzen, dass er passt, so z.B.:
danke für die Antwort... werde ich direkt mal ausprobieren.
Warum so kompliziert? ich habe für die brightness keinen anderen Weg gefunden um den ShellyDimmer zu verstellen, habe alles mögliche per MQTT ausprobiert - es funzt aber ausschlieslich diese syntax. Zum verstellen will ich ja später ein Signal vom Schalter nutzen um die var in +/- zu verändern. Also keine direkte Eingabe per Wert, Slider etc...
Aber ich denke genau das habe ich gesucht - einen String aus mehreren Teilen zusammen setzen.
Danke und Gruss
Mattes
Der Punkt ist, Du kannst einen Dimmer Channel anlegen, in dem Du das commandTopic setzt und eine outgoing Transformation definieren. Da wird dann die Zahl direkt in das Payload eingebaut. Wie Du den Dimmer ansteuerst, ob nun über einen Slider oder über Setpoint, spielt keine Rolle.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
ich habe mal versucht deinen Vorschlag umzusetzen...
var myNumber = 99
val myString = "{brightness: "+ myNumber.toString +"}"
rule "Value"
when
Item Test3 received command ON
then
Shelly13Value.sendCommand(myString)
end
leider klappt es nicht im log steht folgender Eintrag: 2021-02-09 11:48:19.803 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'Value.rules'
2021-02-09 11:48:26.083 [WARN ] [me.internal.engine.RuleContextHelper] - Variable 'myString' on rule file 'Value.rules' cannot be initialized with value '<XBinaryOperationImplCustom> + <XStringLiteralImpl>': An error occurred during the script execution: Could not invoke method: java.lang.Integer.toString() on instance: myNumber (Type=NumberItem, State=NULL, Label=myNumber, Category=null)
2021-02-09 11:48:26.101 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Value': An error occurred during the script execution: Could not invoke method: org.eclipse.smarthome.model.script.actions.BusEvent.sendCommand(org.eclipse.smarthome.core.items.Item,java.lang.String) on instance: null
hast du noch eine Idee wie ich den Wert mit dem string an den Shelly Dimmer senden kann?
Du kannst doch nicht ernsthaft eine Konstante global definieren und erwarten, dass die Konstante dann innerhalb einer Rule dynamisch geändert wird?
Bitte verwende immer die Code-Tags, nicht irgendwelche Farben.
rule "Value"
when
Item Test3 received command ON
then
var myNumber = 99
val myString = "{brightness: "+ myNumber.toString +"}"
Shelly13Value.sendCommand(myString)
end
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet