@Udo_Hartmann: Thanks. Do I need the REGEX state? With this files I see the Wifi RSSI value in my sitemap, but their is no action on the Jinvoo curtain switch if I select a % value.
Interlock 1, Setoption80 0
Or does it works also in Rollershuter mode with one thing: …[stateTopic=“stat/JalloJin6/SHUTTER1” , commandTopic=“cmnd/JalloJin6/SHUTTERPOSITION”, on=“0”, off=“100” ]? I use some of this devices with this config, but without % value.
Thing topic JalloJin6 "JalloJin 6" {
Channels:
Type switch : ch1 "Power" [ stateTopic= "JalloJin6/stat/POWER1", commandTopic="JalloJin6/cmnd/POWER1", on="ON", off="OFF" ]
Type switch : ch2 "Power" [ stateTopic= "JalloJin6/stat/POWER2", commandTopic="JalloJin6/cmnd/POWER2", on="ON", off="OFF" ]
Type string : devicestate "Jallo-Test [%s]" [ stateTopic="tele/JalloJin6/LWT" ]
Type string : wifi-rssi "Wifi RSSI" [ stateTopic="tele/JalloJin6/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI" ]
}
Items:
```csv
Switch mqttJalloJin6_1 "JalloJin 6-1 [%s]" {channel="mqtt:topic:embedded-mqtt-broker:JalloJin6:ch1" }
Switch mqttJalloJin6_2 "JalloJin 6-2 [%s]" {channel="mqtt:topic:embedded-mqtt-broker:JalloJin6:ch2" }
String mqttJalloJin6LWT "JalloJin 6 LWT [%s]" {channel="mqtt:topic:embedded-mqtt-broker:JalloJin6:devicestate"}
String mqttJalloJin6state "JalloJin 6 WIFI [JSONPATH($.Wifi.RSSI):%s %%]" {channel="mqtt:topic:embedded-mqtt-broker:JalloJin6:wifi-rssi"}
Rollershutter JalloJin6 "JalloJin 6 [%d%%]" { autoupdate="false" }
added postcommand=“true”, OpenHab Log: Item ‘JalloJin6’ received command 50 (found it in the german forum, also written from you )
I think I have some failure in the rule that I have copied above or I have to add the “Log Debug”.
Is it correct that I have to use the following commands in the console via e.g. Putty for Openhab 2.4?
bash> openhab-cli console
openhab2> log:set DEBUG org.eclipse.smarthome.model.script.mylogger
openhab2> logout
var long intStartTime
var Timer tMqtt6 = null
var boolean lMqtt6 = false
rule "JalloJin6"
when
Item mqttJalloJin6_1 changed or
Item mqttJalloJin6_2 changed
then
logDebug("JalloJin","6: {} is {}",triggeringItem.name,triggeringItem.state)
if(triggeringItem.state==ON) {
intStartTime=now.millis
logDebug("JalloJin","6: StartTime= {}",intStartTime)
}
else {
val long myPercent = (now.millis - intStartTime)/200
logDebug("JalloJin","6: StopTime= {}; Duration= {}",now.millis, now.millis-intStartTime)
logDebug("JalloJin","6: Percent= {}",myPercent)
if (!(JalloJin6.state instanceof Number)) JalloJin6.postUpdate(0)
if (triggeringItem.name == "mqttJalloJin6_1") {
JalloJin6.postUpdate(if(((JalloJin6.state as Number)-myPercent) > 0 ) (JalloJin6.state as Number)-myPercent else 0)
}
else {
JalloJin6.postUpdate(if(((JalloJin6.state as Number)+myPercent) < 100 ) (JalloJin6.state as Number)+myPercent else 100)
}
}
end
rule "JalloJin6 2"
when
Item JalloJin6 received command
then
logDebug("JalloJin","6-2: received command: {}",receivedCommand)
if(receivedCommand instanceof Number) {
logDebug("JalloJin","6-2: received command is Number")
lMqtt6 = true
if(tMqtt6 !== null) tMqtt6.cancel
val Integer iDuration = (((receivedCommand as Number) - (JalloJin6.state as Number)) * if((receivedCommand as Number) > (JalloJin6.state as Number)) 200 else -200).intValue
logDebug("JalloJin","6-2: Duration: {} mSec",iDuration)
if((receivedCommand as Number) < (JalloJin6.state as Number)) {
logDebug("JalloJin","6-2: UP!")
mqttJalloJin6_1.sendCommand(ON)
}
else {
logDebug("JalloJin","6-2: DOWN!")
mqttJalloJin6_2.sendCommand(ON)
}
tMqtt6 = createTimer(now.plusMillis(iDuration), [
logDebug("JalloJin","6-2: STOP!")
if(mqttJalloJin6_1.state == ON) mqttJalloJin6_1.sendCommand(OFF)
if(mqttJalloJin6_2.state == ON) mqttJalloJin6_2.sendCommand(OFF)
tMqtt6 = null
lMqtt6 = false
] )
}
else if (!lMqtt6)
switch (receivedCommand) {
case UP: mqttJalloJin6_1.sendCommand(ON)
case DOWN:mqttJalloJin6_2.sendCommand(ON)
case STOP: {
if(mqttJalloJin6_1.state == ON) mqttJalloJin6_1.sendCommand(OFF)
if(mqttJalloJin6_2.state == ON) mqttJalloJin6_2.sendCommand(OFF)
}
}
end