[Gelöst] Gibt es eine Funktion um ein JSON String zu generieren?

Begonnen von Nielsiwilsi, 19 August 2019, 22:44:21

Vorheriges Thema - Nächstes Thema

Nielsiwilsi

Guten Abend Zusammen,

ich steh gerade vor dem Problem, dass ich ein HUE Lampe via zigbee2mqtt steuern will. Google hat mir heute wieder nicht geholfen.
Am Besten funktioniert das, indem ich ein JSON auf das "set" Topic schreibe.
So was: {"state":"ON","brightness":254,"color_temp":153}

Dazu hab ich mir Testweise ein Dummy gebaut, der die Attribute als Readings enthält. Kann man irgendwie das JSON-Reading generieren lassen? Im Code hab ich das manuell eingetragen. Der Plan ist es, das JSON per notify auf das Topic zu schreiben?
defmod JSON_Test dummy
attr JSON_Test readingList brightness color_temp JSON
attr JSON_Test room SAMPLES
attr JSON_Test setList brightness color_temp JSON
attr JSON_Test stateFormat JSON

setstate JSON_Test {"state":"ON","brightness":254,"color_temp":153}
setstate JSON_Test 2019-08-19 22:10:24 JSON {"state":"ON","brightness":254,"color_temp":153}
setstate JSON_Test 2019-08-19 22:10:24 brightness 254
setstate JSON_Test 2019-08-19 22:10:24 color_temp 153
setstate JSON_Test 2019-08-19 22:10:24 state ON


Gibt es so eine Funktion in FHEM, oder evtl sogar eine noch einfachere Lösung.

Viele Grüße
Niels



chanky

Am einfachsten ist, wenn du das Gerät als mqtt2_device anlegst. Danach ist eine passende template auszuwählen und alle andern attribute inkl. Json format werden automatisch erstellt.

Sent from my SM-G930F using Tapatalk


Nielsiwilsi

Hi chanky,
ja, die Templates kenne ich, hab ein paar Shellies. Aber die passen dann aber auch nicht immer 100%. Ne Lampe am Shelly ist anders als ein Ventilator.

Und, ich hab noch keine JSON Codierung im Template gesehen, eine Decodierung schon. Müsste ja dann in der setList stehen.
Falls jemand so etwas schon gemacht hat, bitte um Hinweis(e). Ich kopiere mir gerne was aus anderen Templates.

VG
Niels

chanky

Hi
Ich hab was ähnliches, aber sollte gleich funktioniert:
Internals: CID zigbee DEF zigbee DEVICETOPIC zIkeaLightBulb01 FUUID 5cd737a1-f33f-ccf0-739d-410eff6cc79f12a4 IODev MQTT_Broker NAME zIkeaLightBulb01 NR 112 STATE ON TYPE MQTT2_DEVICE READINGS: 2019-08-10 23:16:58 brightness 1 2019-05-11 23:18:59 color_temp set 492 2019-08-10 23:16:58 linkquality 28 2019-08-10 23:16:58 state ON Attributes: IODev MQTT_Broker alias Guest Room Lamp devStateIcon {zigbee2mqtt_devStateIcon255($name)} icon light_control model L_02a_zigbee2mqtt_light_dimmer readingList zigbee2mqtt/zIkeaLightBulb01:.* { json2nameValue($EVENT) } room MQTT setList on:noArg zigbee2mqtt/zIkeaLightBulb01/set {"state":"ON"} off:noArg zigbee2mqtt/zIkeaLightBulb01/set {"state":"OFF"} brightness:colorpicker,BRI,0,5,255 zigbee2mqtt/zIkeaLightBulb01/set {"state":"on","$EVTPART0":"$EVTPART1"} setStateList on off webCmd toggle:on:off:brightness
LG

Sent from my SM-G930F using Tapatalk


Nielsiwilsi

Hi, nachdem ich dies hier gelesen hab, hab ich eine brauchbare Lösung gefunden.
Zitat von: chanky am 20 August 2019, 20:02:41
brightness:colorpicker,BRI,0,5,255 zigbee2mqtt/zIkeaLightBulb01/set {"state":"on","$EVTPART0":"$EVTPART1"}

Dummy Device:
defmod JSON_Test dummy
attr JSON_Test event-on-change-reading .*
attr JSON_Test readingList brightness color_temp JSON
attr JSON_Test room SAMPLES
attr JSON_Test setList brightness color_temp JSON
attr JSON_Test stateFormat JSON


Notify:
defmod JSON_Test_CreateJSON notify JSON_Test:..* set JSON_Test JSON {"state":"[JSON_Test:state]","brightness":"[JSON_Test:brightness]","color_temp":"[JSON_Test:color_temp]"}
attr JSON_Test_CreateJSON room SAMPLES


Als nächstes überlege ich mir, wie ich das in das MQTT device direkt einbauen kann.

Danke,
Niels