Сейчас при коротком нажатии опенхаб выдает ошибку - он ведь ищет m, а его просто нет.
Можно ввести чтобы при коротком нажатии чтобы m=1 тоже было в выдаче по MQTT?
UPD Переписал с условием прямо в JSONPATH, то есть не надо правил, и опенхаб опознает длинное нажатие сразу соотнеся значение m, но, из-за того что m нерегулярно в выдаче - это сыпет ошибками.
Код: Выделить всё
Switch P2_ALL "ВЫКЛ всё [%s]" { mqtt="<[mosquitto:megad/60/2:state:JSONPATH($.value)]" } //{channel ="megad:device:14in:P2_ALL:in"}
String P2_ALL_hold "ВКЛ всё [%s]" { mqtt="<[mosquitto:megad/60/2:state:JSONPATH($.[?(@.m=='2')].value)]" }
Код: Выделить всё
megad/60/2 {"port":"2","m":"2","value":"ON","cnt":"1"}
megad/60/2 {"port":"2","m":"1","value":"OFF","cnt":"2"}
megad/60/2 {"port":"2","value":"ON","cnt":"3"}
megad/60/2 {"port":"2","m":"1","value":"OFF","cnt":"4"}
megad/60/2 {"port":"2","value":"ON","cnt":"5"}
megad/60/2 {"port":"2","m":"2","value":"ON","cnt":"5"}
megad/60/2 {"port":"2","m":"1","value":"OFF","cnt":"6"}
megad/60/2 {"port":"2","value":"ON","cnt":"7"}
megad/60/2 {"port":"2","m":"2","value":"ON","cnt":"7"}
megad/60/2 {"port":"2","m":"1","value":"OFF","cnt":"8"}
Код: Выделить всё
2018-01-22 16:51:36.056 [ERROR] [org.influxdb.impl.BatchProcessor ] - Batch could not be sent. Data will be lost
java.lang.RuntimeException: {"error":"partial write: field type conflict: input field \"value\" on measurement \"P2_ALL_hold\" is type string, already exists as type float dropped=1"}
at org.influxdb.impl.InfluxDBErrorHandler.handleError(InfluxDBErrorHandler.java:19) [231:org.openhab.persistence.influxdb:1.11.0]
at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:242) [231:org.openhab.persistence.influxdb:1.11.0]
at org.influxdb.impl.$Proxy141.writePoints(Unknown Source) [231:org.openhab.persistence.influxdb:1.11.0]
at org.influxdb.impl.InfluxDBImpl.write(InfluxDBImpl.java:151) [231:org.openhab.persistence.influxdb:1.11.0]
at org.influxdb.impl.BatchProcessor.write(BatchProcessor.java:171) [231:org.openhab.persistence.influxdb:1.11.0]
at org.influxdb.impl.BatchProcessor$1.run(BatchProcessor.java:144) [231:org.openhab.persistence.influxdb:1.11.0]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
at java.lang.Thread.run(Thread.java:748) [?:?]
==> /var/log/openhab2/events.log <==
2018-01-22 16:51:36.667 [vent.ItemStateChangedEvent] - CPU_Uptime changed from 343.4 to 343.7
2018-01-22 16:51:36.696 [vent.ItemStateChangedEvent] - CPU_Threads changed from 346 to 341
2018-01-22 16:51:36.943 [vent.ItemStateChangedEvent] - P2_ALL_hold changed from [] to ["ON"]