Hi i want to command a sonoff dual for a blind
but in addition to two switches to raise and lower the shutter I would like to put a dimmer to select the% opening or closing.
Can you help me pls?
i want to create a rule that when i set a value for the dimmer the rule calcolate the paramater for the command PulseTIME IF THE SONOFF
I did it but is wrong:
rule "apertura"
var % = item apertura * 0,24
if % < 11
then
x = % * 10
Item LivingRoom_Light1.sendCommand(PulseTime1 x)
end
if % > 11
then
x = % + 111
Item LivingRoom_Light1.sendCommand(PulseTime1 x)
end
if % < 11
then
x = % * 10
Item LivingRoom_Light2.sendCommand(PulseTime2 x)
end
if % > 11
then
x = % + 111
Item LivingRoom_Light2.sendCommand(PulseTime2 x)
end
Read through the rule docs first, what you have posted is far from the right syntax.
But how can i send a command (as i insert in the console of a sonoff) ?
Lots of resources here on the forum, try searching:
But do a dimmer returns a value?
Example
Item dimmer is e number?
That depends very much on your specific setup. You NEED to read and understand the docs, both for openhab in general, and the specifics of the binding and devices you use, and search the forum. I canât do that for you.
Sorry for being harsh, but I canât even begin to explain things if you donât have an understanding of the basic OH concepts, and I wonât use my time to explain those, since they are already in the docs.
look that
rule "apertura1"
when
item LivingRoom_Light1 changed to ON
then
x = (apertura.state * 24)
thread::sleep(x)
LivingRoom_Light1.sendCommand(OFF)
end
24 because the time to closed my shutter is 24 sec.
I want to use the dimmer to detrmine the % of closure
But it doesnât work
But the âXâ of the command âsleepâ is in seconds?
when i save the rules i have:
2019-03-19 15:14:38.820 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model âapertura.rulesâ
2019-03-19 15:14:38.827 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model âapertura.rulesâ is either empty or cannot be parsed correctly!
2019-03-19 15:14:39.946 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model âapertura.rulesâ has errors, therefore ignoring it: [5,1]: no viable alternative at input âitemâ
This looks better, I can see you are trying now. The error is because item
needs no be capitalized: Item
.
Then thereâs some other small errors:
rule "apertura1"
when
Item LivingRoom_Light1 changed to ON
then
var x = (apertura.state * 24)
Thread::sleep(x)
LivingRoom_Light1.sendCommand(OFF)
end
However, using Thread::sleep
for long periods of time (>1 second) is a bad idea because it can block other rules from running, see here for more info. Instead use a timer
rule "apertura1"
when
Item LivingRoom_Light1 changed to ON
then
var x = (apertura.state * 24)
createTimer(now.plusSeconds(x)) [|
LivingRoom_Light1.sendCommand(OFF)
]
end
It has the same result, but is safer to use.
I canât guarantee everything is correct, typing on my phone and cannot test the rules.
I tried but when i save the file. rules on the log i have this:
2019-03-19 18:44:27.846 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model âapertura.rulesâ
2019-03-19 18:44:27.859 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model âapertura.rulesâ is either empty or cannot be parsed correctly!
2019-03-19 18:44:29.209 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model âapertura.rulesâ
This is expected behavior if you are using samba to access the rule files. Java is trying to load the file before it is fully written, hence the warningâŠand the last log message that is logged when the complete file finally is read, tells you that all went well eventually.
No it doesnât work.
But is it possible to do the debug?
In the Timer function la x is in sec?
Unfortunately, this statement gives no information as to what exactly does not workâŠhence makes it not possible to help you.
maye a few more pointers for your to read: How to ask a good question / Help Us Help You
Yes you can add logInfo
statements; the docs are your friend: Actions | openHAB
Using logInfo
statements can be used to log the values of all variables and Item.state and also, if well done, tell you exactly at which line your rule is failing. Use them generously.
Sorry, I don;t understand even the questionâŠwhat is âla xââŠbut here a guess: the argument x for the timer is represented in seconds.
Look that
2019-03-19 20:13:01.873 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule âaperturaâ: Unknown variable or command â*â; line 9, column 10, length 19
it seems that the symbol â*â (moltiplication) is not recognized
what is the right symbol for moltiplication?
i report all part:
rule "apertura"
when
Item LivingRoom_Light1 changed to ON
then
var x = (Apertura.state * 24)
createTimer(now.plusSeconds(x)) [|
LivingRoom_Light1.sendCommand(OFF)
]
end
I see a few issues with your rule.
First, a dimmer item has a value between 0 and 100 (where 0 also means OFF and 100 also stands for ON for most devices). You should divide the value by 100 to get a time between 0-24 seconds.
However, Iâm not sure this works like you expect. Letâs say you move the Apertura slider to 50% and hit the switch, the value 50 wll be used in the rule and the shutter will move to halfway, in 12 seconds. Then you move the slider to 70% and the value 70 will be used in the rule, activating the switch for ~17 seconds.
This is probably because the DSL rules engine doesnât know how to convert the types and assumes they ar strings (which cannot be multiplied). Try this:
var x = (apertura.state as Number) * 0.24
You have unerstood.
But i doesnât work
rule "apertura"
when
Item LivingRoom_Light1 changed to ON
then
var x = (apertura.state as Number * 0.24)
createTimer(now.plusSeconds(x)) [|
LivingRoom_Light1.sendCommand(OFF)
]
end
The rule seems good.
I do not uderstand where is the problem
now i have this error
2019-03-19 20:59:28.134 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule âaperturaâ: The name âaperturaâ cannot be resolved to an item or type; line 9, column 10, length 8
Thatâs because the item name is Apertura, not apertura as I noticed in the screenshots you showed.
When i set a value (ex 37) of the dimmer i have:
2019-03-19 22:33:14.495 [ome.event.ItemCommandEvent] - Item âDimmerCamâ received command 37
2019-03-19 22:33:14.508 [nt.ItemStatePredictedEvent] - DimmerCam predicted to become 37
2019-03-19 22:33:14.531 [vent.ItemStateChangedEvent] - DimmerCam changed from UNDEF to 37
2019-03-19 22:33:14.543 [vent.ItemStateChangedEvent] - DimmerCam changed from 37 to UNDEF
I donât uderstand why DimmerCam go to 37 and then go automatically to UNDEF
Infact now if i push on OPEN i have
2019-03-19 22:33:38.896 [ome.event.ItemCommandEvent] - Item âLivingRoom_Light1â received command ON
2019-03-19 22:33:38.913 [vent.ItemStateChangedEvent] - LivingRoom_Light1 changed from OFF to ON
==> /var/log/openhab2/openhab.log <==
2019-03-19 22:33:39.105 [ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule âaperturaâ: Could not cast UNDEF to java.lang.Number; line 11, column 11, length 25
rule "apertura"
when
Item LivingRoom_Light1 changed to ON
then
var x = (DimmerCam.state as Number * 0.24)
createTimer(now.plusSeconds(x)) [|
LivingRoom_Light1.sendCommand(OFF)
]
end