Sonoff NSPanel, geflasht mit Tasmota, Einbindung in FHEM

Begonnen von mike1969bln, 14 Januar 2022, 13:02:57

Vorheriges Thema - Nächstes Thema

mike1969bln

Hallo in die Runde,

ich habe mir das neuen Sonoff NSPanel (https://sonoff.tech/product/smart-wall-swtich/nspanel/) gekauft und bereits erfolgreich mit Tasmota geflasht.

https://bangertech.de/sonoff-nspanel-tasmota-flash-konfiguration/

Jetzt geht es an die Einbindung in FHEM via MQTT und Definition der Notifys, die die bestehenden Geräte mit den Topics aus dem NSPanel synchronisieren.

Hat da schon jemand erfolgreich umgesetzt? Ich wäre sehr an einem Austausch interessiert.

BM030

Hi, auch wenn ich dir gerade keine Hilfe bin, stehe ich wie du an der selben Stelle. Leider fehlt mir aktuell die Zeit mir dieses Thema genauer anzuschauen. Hatte mir schon zum Jahreswechsel Homeassistent installiert, da dort schon jemand ein Video erstellt hat mit einer Anbindung sowie Verteilung der Oberfläche. Ich habe hier im Forum noch nichts gefunden.
Eventuell geht fhempy in diese Richtung, zumindest gibt es dort einen ESPcontroller, leider startet die Sache bei mir nicht. Deshalb weiß ich nicht, ob das schon der richtige Weg wäre.
Bin auch über jeden Ansatz dankbar.

Greetings

Beta-User

Hmm, zumindest auf den ersten Blick sieht das doch nicht nach einem unlösbaren Problem aus...

Vorschläge:
- Verschieben nach MQTT (kann jeder TE selbst)
- MQTT2_SERVER als IO benutzen, RAW-list wegspeichern und liefern, mal das Tasmota-basic-attrTemplate drauf los lassen, wieder (nach einem reboot) das RAW-list einstellen;

Dann sollte man zumindest schon mal soweit sein, dass das Relay 1 schaltbar ist und in FHEM einen vernünftigen Wert anzeigt, außerdem sollte alles, was das Panel an "Anweisungen" raushaut auch als Reading im MQTT2_DEVICE erscheinen. Darauf könnte man dann reagieren...

Um es mit Werten aus FHEM-Geräten zu befüllen, scheint es mir evtl. sinnvoll, eine MQTT_GENERIC_BRIDGE (zusätzlich?) anzulegen. Vermutlich braucht es dann noch etwas Code, um zu versendende Werte passend zu verpacken. Aber eines nach dem anderen...

Evtl. sollte man sich zumindest für die Findungsphase einigen, welcher Modus genutzt werden soll (es gibt da 2 NSPSend-Varianten, wenn ich https://templates.blakadder.com/sonoff_NSPanel.html richtig interpretiere).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

hackepeter

#3
Moin, ich habe auch ein NSPanel und mithilfe folgender Dokumentation Tasmota zum fliegen bekommen:
https://templates.blakadder.com/sonoff_NSPanel.html
Das Anlegen im FHEM (mittels MQTT) hat geklappt, (siehe List im Anhang). Die beiden Hardware-Tasten lassen sich wie bei anderen Tasmota-Devices steuern (POWER1 POWER2).
Herausforderung sind die frei konfigurierbaren Widgets. Startet das NSPanel neu, so befinden sich die Widgets im Auslieferungszustand. Mit einem JSON-Payload müssen diese zuersteinmal gelöscht werden und anschließend je nach Bedarf neu angelegt werden:

NSPSend {"index":1, "type":"delete"}
NSPSend {"index":2, "type":"delete"}
...
NSPSend {"index":8, "type":"delete"}

Das klappt auf der Tasmota-Konsole, mit FHEM bekomme ich es noch nicht hin (siehe list im Anhang(INIT))
Neu anlgegen eines Buttons klappt z.B. so:
NSPSend {"HMI_resources":[{"index":1,"ctype":"group","id":"1","uiid":1}]}
Das setzen der Temperatur so:
NSPSend {"temperature":12}
Dokumentation der JSON payloads: https://blakadder.github.io/nspanel/

Frage: Wie ist die richtige Syntax um ein JSON payload an Tasmota zu senden?

Beta-User

Mit einem RAW-list wäre es einfacher (aka Raw-Definition)...

In den tasmota-attrTemplate taucht u.A. sowas auf:
setOtaUrl:textField CMNDTOPIC/OtaUrl $EVTPART1\
  upgrade:noArg   CMNDTOPIC/upgrade 1

Das erste wäre z.B. für einen "Einwort-JSON" (dein Button-Anlege-Beispiel) so passend, das zweite für die deletes:x_NSPSend_json:textField CMNDTOPIC/NSPSend $EVTPART1\x_NSPSend_delete:selectnumbers,1,1,8,0,lin CMNDTOPIC/NSPSend {"index":$EVTPART1, "type":"delete"}

Wenn ich das richtig interpretiere, gibt es zwei Relays (mit denen man wirklich was externes schalten kann, also nicht: sceen on/off)? Dann würde ich das "split" als Basis vorschlagen. Der zweite Kanal wäre dann schon mal erledigt...?

Für "mehr-Wort-JSON" (mit Leerzeichen dazwischen, wie die gezeigten delete-Befehle) kann man auch den "setter" aus dem "$EVENT" löschen, wenn man folgende Konstruktion wählt (Topic muss angepaßt werden):
x_send_mcucommand:textField { my $payload = $EVENT;$payload =~ s/$EVTPART0 //g; qq(CMNDTOPIC/things/thermostat/mcucommand $payload)}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

BM030

Zitat von: Beta-User am 22 Januar 2022, 19:41:35
Mit einem RAW-list wäre es einfacher (aka Raw-Definition)...


Wenns nur das ist, kann ich gerne aushelfen.
Dieser Export ist ohne Templatezuordnung.

defmod MQTT2_DVES_0CCAC4 MQTT2_DEVICE DVES_0CCAC4
attr MQTT2_DVES_0CCAC4 readingList DVES_0CCAC4:tasmota/discovery/E0E2XXXXXXXX/config:.* { json2nameValue($EVENT) }\
DVES_0CCAC4:tasmota/discovery/E0E2XXXXXXXX/sensors:.* { json2nameValue($EVENT) }\
DVES_0CCAC4:stat/tasmota_0CCAC4/RESULT:.* { json2nameValue($EVENT) }\
DVES_0CCAC4:stat/tasmota_0CCAC4/POWER1:.* POWER1\
DVES_0CCAC4:stat/tasmota_0CCAC4/POWER2:.* POWER2\
DVES_0CCAC4:tele/tasmota_0CCAC4/STATE:.* { json2nameValue($EVENT) }\
DVES_0CCAC4:tele/tasmota_0CCAC4/SENSOR:.* { json2nameValue($EVENT) }\
DVES_0CCAC4:tele/tasmota_0CCAC4/RESULT:.* { json2nameValue($EVENT) }\
DVES_0CCAC4:tele/tasmota_0CCAC4/LWT:.* LWT\
DVES_0CCAC4:cmnd/tasmota_0CCAC4/POWER:.* POWER\
DVES_0CCAC4:tele/tasmota_0CCAC4/INFO1:.* { json2nameValue($EVENT) }\
DVES_0CCAC4:tele/tasmota_0CCAC4/INFO2:.* { json2nameValue($EVENT) }\
DVES_0CCAC4:tele/tasmota_0CCAC4/INFO3:.* { json2nameValue($EVENT) }\
DVES_0CCAC4:stat/tasmota_0CCAC4/UPGRADE:.* { json2nameValue($EVENT) }
attr MQTT2_DVES_0CCAC4 room MQTT2_DEVICE

setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:44 ANALOG_Temperature1 18.2
setstate MQTT2_DVES_0CCAC4 2022-01-04 19:00:42 AdcParam1_1 2
setstate MQTT2_DVES_0CCAC4 2022-01-04 19:00:42 AdcParam1_2 13000
setstate MQTT2_DVES_0CCAC4 2022-01-04 19:00:42 AdcParam1_3 10000
setstate MQTT2_DVES_0CCAC4 2022-01-04 19:00:42 AdcParam1_4 3950
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Berry_HeapUsed 18
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Berry_Objects 384
setstate MQTT2_DVES_0CCAC4 2022-01-01 15:17:13 Command Unknown
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:44 ESP32_Temperature 68.3
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Heap 182
setstate MQTT2_DVES_0CCAC4 2022-01-21 17:01:06 IODev myBroker
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:41 Info1_FallbackTopic cmnd/DVES_0CCAC4_fb/
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:41 Info1_GroupTopic cmnd/tasmotas/
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:41 Info1_Module NSPanel
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:41 Info1_Version 2022.01.1(tasmota)
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:41 Info2_Hostname tasmota-0CCAC4-2756
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:41 Info2_IPAddress 192.168.X.XX
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:41 Info2_WebServerMode Admin
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:41 Info3_RestartReason Vbat power on reset
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:41 LWT Online
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 LoadAvg 392
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 MqttCount 1
setstate MQTT2_DVES_0CCAC4 2022-01-09 17:20:14 NSPanel_ATCEnable -1
setstate MQTT2_DVES_0CCAC4 2022-01-09 17:20:06 NSPanel_ATCExpect0 27
setstate MQTT2_DVES_0CCAC4 2022-01-09 17:20:14 NSPanel_ATCMode 0
setstate MQTT2_DVES_0CCAC4 2022-01-04 19:01:34 NSPanel_Energy-saving 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 NSPanel_ctype device
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 NSPanel_id thermostat
setstate MQTT2_DVES_0CCAC4 2021-12-30 18:52:06 NSPanel_params_switch on
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 NSPanel_resourcetype ATC
setstate MQTT2_DVES_0CCAC4 2022-01-09 17:08:34 OtaUrl https://github.com/tasmota/install/raw/main/firmware/unofficial/tasmota32-nspanel.bin
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:41 POWER
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:45:20 POWER1 off
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 POWER2 off
setstate MQTT2_DVES_0CCAC4 2022-01-01 15:20:30 SetOption8 off
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Sleep 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 SleepMode Dynamic
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 TelePeriod 300
setstate MQTT2_DVES_0CCAC4 2022-01-02 18:32:04 TempOffset 0.0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:44 TempUnit C
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:44 Time 2022-01-23T10:44:44
setstate MQTT2_DVES_0CCAC4 2022-01-09 17:08:34 Upgrade Version 2022.01.1 from https://github.com/tasmota/install/raw/main/firmware/unofficial/tasmota32-nspanel.bin
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Uptime 0T00:00:11
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 UptimeSec 11
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Wifi_AP 1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Wifi_BSSId E0:63:XX:XX:XX:XX
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Wifi_Channel 5
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Wifi_Downtime 0T00:00:06
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Wifi_LinkCount 1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Wifi_Mode 11n
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Wifi_RSSI 90
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Wifi_SSId XXXXX
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:43 Wifi_Signal -55
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 btn_1 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 btn_2 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 btn_3 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 btn_4 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 btn_5 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 btn_6 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 btn_7 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 btn_8 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 dn Tasmota
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 fn_1 Tasmota
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 fn_2
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 ft %prefix%/%topic%/
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 hn tasmota-0CCAC4-2756
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 if 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 ip 192.168.X.XXX
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 lk 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 lt_st 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 mac E0E2XXXXXXXX
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 md NSPanel
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 ofln Offline
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 onln Online
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_1 1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_10 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_11 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_12 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_13 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_14 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_15 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_16 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_17 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_18 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_19 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_2 1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_20 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_21 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_22 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_23 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_24 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_25 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_26 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_27 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_28 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_3 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_4 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_5 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_6 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_7 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_8 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 rl_9 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 sho_1 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 sho_2 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 sho_3 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 sho_4 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 sn_ANALOG_Temperature1 18.3
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 sn_ESP32_Temperature 69.4
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 sn_TempUnit C
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 sn_Time 2022-01-23T10:44:52
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 so_11 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 so_114 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 so_117 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 so_13 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 so_17 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 so_20 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 so_30 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 so_4 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 so_68 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 so_73 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 so_82 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 state_1 off
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 state_2 on
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 state_3 toggle
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 state_4 hold
setstate MQTT2_DVES_0CCAC4 2021-12-30 18:31:55 subscriptions cmnd/DVES_0CCAC4_fb/# cmnd/tasmota_0CCAC4/# cmnd/tasmotas/#
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 sw 2022.01.1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_1 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_10 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_11 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_12 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_13 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_14 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_15 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_16 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_17 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_18 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_19 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_2 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_20 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_21 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_22 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_23 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_24 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_25 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_26 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_27 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_28 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_3 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_4 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_5 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_6 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_7 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_8 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 swc_9 -1
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 t tasmota_0CCAC4
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 tp_1 cmnd
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 tp_2 stat
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 tp_3 tele
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 ty 0
setstate MQTT2_DVES_0CCAC4 2022-01-23 10:44:52 ver 1


hackepeter

ZitatDer zweite Kanal wäre dann schon mal erledigt
richtg, das passt.

ZitatMit einem RAW-list wäre es einfacher (aka Raw-Definition)...
define MQTT2_DVES_0C89FC MQTT2_DEVICE DVES_0C89FC
attr MQTT2_DVES_0C89FC IODev myBroker
attr MQTT2_DVES_0C89FC alias NSPanel Küche
attr MQTT2_DVES_0C89FC autocreate 0
attr MQTT2_DVES_0C89FC devStateIcon Online:10px-kreis-gruen Offline:10px-kreis-rot 1.on:on:POWER1+off 1.off:off:POWER1+on 2.on:on:POWER2+off 2.off:off:POWER2+on
attr MQTT2_DVES_0C89FC icon tradfri_filled_floalt
attr MQTT2_DVES_0C89FC model tasmota_2ch_unified
attr MQTT2_DVES_0C89FC readingList /SmartHome/Kueche/tele/NSPanelKueche/LWT:.* LWT\
  /SmartHome/Kueche/tele/NSPanelKueche/STATE:.* { json2nameValue($EVENT) }\
  /SmartHome/Kueche/tele/NSPanelKueche/SENSOR:.* { json2nameValue($EVENT) }\
  /SmartHome/Kueche/tele/NSPanelKueche/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
  /SmartHome/Kueche/stat/NSPanelKueche/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  /SmartHome/Kueche/tele/NSPanelKueche/UPTIME:.* { json2nameValue($EVENT) }\
  /SmartHome/Kueche/stat/NSPanelKueche/POWER1:.* POWER1\
  /SmartHome/Kueche/stat/NSPanelKueche/POWER2:.* POWER2
attr MQTT2_DVES_0C89FC room Küche
attr MQTT2_DVES_0C89FC setList POWER1:on,off,toggle /SmartHome/Kueche/cmnd/NSPanelKueche/POWER1 $EVTPART1\
POWER2:on,off,toggle /SmartHome/Kueche/cmnd/NSPanelKueche/POWER2 $EVTPART1\
INIT:on /SmartHome/Kueche/cmnd/NSPanelKueche/NSPSend {"index":1, "type":"delete"}\
x_send_mcucommand:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(SmartHome/Kueche/cmnd/NSPanelKueche/NSPSend $payload)}\

attr MQTT2_DVES_0C89FC setStateList on off toggle
attr MQTT2_DVES_0C89FC stateFormat LWT\
1:POWER1\
2:POWER2\
<br>\
<a href="http://192.168.178.75/" target="_blank">http://192.168.178.75/</a>
attr MQTT2_DVES_0C89FC webCmd POWER1:POWER2

setstate MQTT2_DVES_0C89FC Offline\
1:off\
2:off\
<br>\
<a href="http://192.168.178.75/" target="_blank">http://192.168.178.75/</a>
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 ANALOG_Temperature1 30.0
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Berry_HeapUsed 19
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Berry_Objects 423
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 ESP32_Temperature 83.9
setstate MQTT2_DVES_0C89FC 2022-01-23 10:35:14 FallbackTopic cmnd/DVES_0C89FC_fb/
setstate MQTT2_DVES_0C89FC 2022-01-23 10:21:15 FullTopic /Smarthome/Kueche/%prefix%/%topic%/
setstate MQTT2_DVES_0C89FC 2022-01-23 10:35:14 GroupTopic /Smarthome/Kueche/cmnd/tasmotas/
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Heap 130
setstate MQTT2_DVES_0C89FC 2022-01-23 10:35:14 Hostname NSPanelKueche-2556
setstate MQTT2_DVES_0C89FC 2022-01-23 10:52:25 INIT set
setstate MQTT2_DVES_0C89FC 2022-01-19 18:17:23 IODev myBroker
setstate MQTT2_DVES_0C89FC 2022-01-23 10:35:14 IPAddress 192.168.178.75
setstate MQTT2_DVES_0C89FC 2022-01-23 10:37:04 LWT Offline
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 LoadAvg 999
setstate MQTT2_DVES_0C89FC 2022-01-23 10:35:14 Module NSPanel
setstate MQTT2_DVES_0C89FC 2022-01-23 10:37:03 MqttClient DVES_%06X
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 MqttCount 1
setstate MQTT2_DVES_0C89FC 2022-01-23 10:37:02 MqttHost 192.168.178.6
setstate MQTT2_DVES_0C89FC 2022-01-23 10:37:03 MqttPassword ****
setstate MQTT2_DVES_0C89FC 2022-01-23 10:37:02 MqttPort 1883
setstate MQTT2_DVES_0C89FC 2022-01-23 10:37:03 MqttUser DVES_USER
setstate MQTT2_DVES_0C89FC 2022-01-23 11:01:19 NSPSend Done
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 POWER1 off
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 POWER2 off
setstate MQTT2_DVES_0C89FC 2022-01-23 10:35:14 RestartReason Software reset CPU
setstate MQTT2_DVES_0C89FC 2022-01-22 16:11:49 SaveData on
setstate MQTT2_DVES_0C89FC 2022-01-22 16:11:49 SetOption26 on
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Sleep 0
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 SleepMode Dynamic
setstate MQTT2_DVES_0C89FC 2022-01-22 16:11:48 StateText1 off
setstate MQTT2_DVES_0C89FC 2022-01-22 16:11:48 StateText2 on
setstate MQTT2_DVES_0C89FC 2022-01-22 16:11:48 StateText3 toggle
setstate MQTT2_DVES_0C89FC 2022-01-22 16:11:48 StateText4 hold
setstate MQTT2_DVES_0C89FC 2022-01-23 10:35:16 TelePeriod 300
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 TempUnit C
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Time 2022-01-23T11:12:18
setstate MQTT2_DVES_0C89FC 2022-01-23 10:37:03 Topic NSPanelKueche
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Uptime 0T00:35:11
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 UptimeSec 2111
setstate MQTT2_DVES_0C89FC 2022-01-23 10:35:14 Version 10.1.0(tasmota)
setstate MQTT2_DVES_0C89FC 2022-01-23 10:35:14 WebServerMode Admin
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Wifi_AP 1
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Wifi_BSSId 00:A0:57:42:CE:39
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Wifi_Channel 11
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Wifi_Downtime 0T00:00:06
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Wifi_LinkCount 1
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Wifi_Mode 11n
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Wifi_RSSI 70
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Wifi_SSId Komisch Elektronisch
setstate MQTT2_DVES_0C89FC 2022-01-23 11:12:18 Wifi_Signal -65
setstate MQTT2_DVES_0C89FC 2022-01-22 16:11:48 attrTemplateVersion 20210515
setstate MQTT2_DVES_0C89FC 2022-01-23 10:38:19 subscriptions /SmartHome/Kueche/cmnd/NSPanelKueche/# /SmartHome/Kueche/cmnd/tasmotas/# cmnd/DVES_0C89FC_fb/#
setstate MQTT2_DVES_0C89FC 2022-01-23 11:02:19 x_send_mcucommand set {"HMI_resources":[{"index":1,"ctype":"group","id":"1","uiid":1}]}


ZitatFür "mehr-Wort-JSON" (mit Leerzeichen dazwischen, wie die gezeigten delete-Befehle) kann man auch den "setter" aus dem "$EVENT" löschen, wenn man folgende Konstruktion wählt (Topic muss angepaßt werden):
Das habe ich ausprobiert, funktioniert leider noch nicht (siehe list oben).

Beta-User

Zitat von: hackepeter am 23 Januar 2022, 11:20:06
richtg, das passt.
:)
Zitat
Das habe ich ausprobiert, funktioniert leider noch nicht (siehe list oben).
Weiß nicht, ob diese Schlussfolgerung richtig ist: Das kann man aus dem Reading mAn. nicht ableiten, da sieht man nur, was gesetzt wurde, aber nicht, wie das rausging.
Die Kommunikation kann man mit mosquitto_sub mithören, hier sollte es reichen, die Tasmota-Konsole aufzumachen und zu sehen, was da ankommt bzw. als Reaktion auftaucht.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

hackepeter

Mist, jetzt war es zum Beitrag editieren zu spät.

Folgendes funktioniert einwandfrei:

Widget löschen (im Textfeld muss nur die ID eingetragen werden):
x_NSPSend_json:textField /SmartHome/Kueche/cmnd/NSPanelKueche/NSPSend {"index":$EVTPART1, "type":"delete"}

Widget anlegen:
x_send_mcucommand:textField { my $payload = $EVENT;$payload =~ s/$EVTPART0 //g; qq(/SmartHome/Kueche/cmnd/NSPanelKueche/NSPSend $payload)}

Im Textfeld muss eingetragen werden: {"HMI_resources":[{"index":1,"ctype":"group","id":"1","uiid":1}]}

Kann man verhindern, dass im Textfeld immer set davor geschrieben wird?

Der nächste Schritt wäre, auf die events der zuvor angelegten widgets zu reagieren. Ich denke dass sollte kein Problem sein, ich teste es nachher.

hackepeter

Basierend auf obigen Erkenntnissen habe ich nun zwei widgets (Switches) mit der ID 1 und 2 angelegt.

Hier ein Auszug was der MQTT_Explorer ausspuckt:
eche
stat
NSPanelKueche
RESULT = {"NSPSend":"Done"}
POWER1 = off
POWER2 = off
tele
NSPanelKueche
LWT = Online
INFO1 = {"Info1":{"Module":"NSPanel","Version":"10.1.0(tasmota)","FallbackTopic":"cmnd/DVES_0C89FC_fb/","GroupTopic":"/SmartHome/Kueche/cmnd/tasmotas/"}}
INFO2 = {"Info2":{"WebServerMode":"Admin","Hostname":"NSPanelKueche-2556","IPAddress":"192.168.178.75"}}
INFO3 = {"Info3":{"RestartReason":"Vbat power on reset"}}
RESULT = {"NSPanel":{"ctype":"group","id":"1","params":{"switch":"off","switches":[{"switch":"off","outlet":0}]}}}
STATE = {"Time":"2022-01-23T19:15:23","Uptime":"0T00:55:11","UptimeSec":3311,"Heap":121,"SleepMode":"Dynamic","Sleep":0,"LoadAvg":999,"MqttCount":1,"Berry":{"HeapUsed":19,"Objects":417},"POWER1":"off","POWER2":"off","Wifi":{"AP":1,"SSId":"Komisch Elektronisch","BSSId":"00:A0:57:42:CE:39","Channel":11,"Mode":"11n","RSSI":94,"Signal":-53,"LinkCount":1,"Downtime":"0T00:00:06"}}
SENSOR = {"Time":"2022-01-23T19:15:23","ANALOG":{"Temperature1":29.8},"ESP32":{"Temperature":82.8},"TempUnit":"C"}
cmnd
NSPanelKueche
POWER1 = off
POWER2 = off
NSPSend = {"HMI_resources":[{"index":2,"ctype":"group","id":"2","uiid":1,"name":"test"}]}


RESULT liefert beim drücken des Widget-Buttons u.a. die id, die zuvor beim anlegen vergeben wurde und den status.
Nach Erweiterung von readingslist um:
/SmartHome/Kueche/tele/NSPanelKueche/RESULT:.* { json2nameValue($EVENT) }
kommen die readings an. Ein reading (NSPanel_id) mit der ID des widgets, welches betätigt wurde und der status des widgets in anderen readings.
NSPanel_ctype   group
NSPanel_id   2
NSPanel_params_switch   on
NSPanel_params_switches_1_outlet   0
NSPanel_params_switches_1_switch    on


Offen sind nun noch folgende Punkte:
1. das Gerät verliert beim Neustart seine Konfiguration und muss neu initialisiert werden oder es muss ein anderer Weg gefunden werden, die Konfiguration zu hinterlegen
2. ich habe des öftern beobachtet, dass eine Bedienung über Touch (das wechseln der Bedien-Seiten) nicht mehr möglich war und musste neu starten. Bin ich der einzige mit dem phänomen?

Beta-User

Zitat von: hackepeter am 23 Januar 2022, 12:16:19
Widget löschen (im Textfeld muss nur die ID eingetragen werden):
x_NSPSend_json:textField /SmartHome/Kueche/cmnd/NSPanelKueche/NSPSend {"index":$EVTPART1, "type":"delete"}
Mist, da ist in meinem Beitrag ein Zeilenumbruch verloren gegangen... War eher so gemeint, damit auch die setter "sprechendere" Namen haben:
x_NSPSend_json:textField { my $payload = $EVENT;$payload =~ s/$EVTPART0 //g; qq(/SmartHome/Kueche/cmnd/NSPanelKueche/NSPSend $payload)}\
x_NSPSend_delete:selectnumbers,1,1,8,0,lin CMNDTOPIC/NSPSend {"index":$EVTPART1, "type":"delete"}

Damit sollte sich das "set" für die Lösch-Befehle erledigt haben.
Für das Anlegen der Panels nicht, aber da hat man nur die Wahl, dass die Anweisung in state landet (wenn man das attr setStateList löscht), oder man eben das set davor akzeptiert. Finde letzteres besser, weil man dann leichter weitereditieren können sollte.

Zitat von: hackepeter am 23 Januar 2022, 19:35:58
Basierend auf obigen Erkenntnissen habe ich nun zwei widgets (Switches) mit der ID 1 und 2 angelegt.

Hier ein Auszug was der MQTT_Explorer ausspuckt:
:) Damit habe ich zumindest schon mal eine Vorstellung, wie das in etwa ausschaut.

ZitatRESULT liefert beim drücken des Widget-Buttons u.a. die id, die zuvor beim anlegen vergeben wurde und den status.
Nach Erweiterung von readingslist um:
/SmartHome/Kueche/tele/NSPanelKueche/RESULT:.* { json2nameValue($EVENT) }
kommen die readings an.
Sieht eigentlich so aus, als könnte man dann auf diese Events recht direkt einen Eventhandler ansetzen (bei mir gäbe das vermutlich ein "dispatch"-notify).

Würde nur empfehlen, da noch jsonMap/$JSONMAP zu ermöglichen, indem das erweitert wird zu:
/SmartHome/Kueche/tele/NSPanelKueche/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
Dann kann man zum einen die "typischen Tasmota"-Infos sauber (mit den an anderer Stelle schon verfügbaren defaults) entweder "erden" oder umbenennen, z.B. auch die "analog-Temperatur" nach "temperature".

ZitatOffen sind nun noch folgende Punkte:
1. das Gerät verliert beim Neustart seine Konfiguration und muss neu initialisiert werden oder es muss ein anderer Weg gefunden werden, die Konfiguration zu hinterlegen
2. ich habe des öftern beobachtet, dass eine Bedienung über Touch (das wechseln der Bedien-Seiten) nicht mehr möglich war und musste neu starten. Bin ich der einzige mit dem phänomen?
Da das ganze recht neu zu sein scheint, wäre es vermutlich das beste mal nachzufragen, wie man diese beiden Themen am besten löst. 2 wäre ohne 1 schon nicht mehr so dramatisch, und vermutlich gibt es irgendeine Lösung, um die Konfiguration irgendwie abzuspeichern.

Offen wären dann m.E. noch ein paar andere Punkte:
- evtl. Optionen, die "Standard-widget-templates" (die Nummern wie in https://raw.githubusercontent.com/blakadder/nspanel/main/nspanel.be nach "var widget = {" aufgeführt) direkt per setList auszuwählen?
- ein (beispielhaftes) "dispatcher"-notify (für z.B. einen on/off-Aktor, eine dimmbare (farbige?) Leuchte sowie einen Thermostat;
- den Rückweg für diese Beispiel-Geräte (mAn. via MQTT_GENERIC_BRIDGE), damit der Status auf dem Display auch stimmt, wenn man von FHEM aus schaltet.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

darkness

#11
Hallo,

ich habe das NSPanel auch Testweise im Einsatz.

Zitat1. das Gerät verliert beim Neustart seine Konfiguration und muss neu initialisiert werden oder es muss ein anderer Weg gefunden werden, die Konfiguration zu hinterlegen

Ursprünlich habe ich es so gelöst, das ich auf das Reading LWT:Online reagiere.

Sobald dieses aktualisiert wird, rufe ich eine Routine aus der 99_MyUtils.pm auf.

Man kann auch die nspanel.be anpassen. Dort kann man die Widgets entsprechend konfigurieren.

Vielleicht auch ein Ansatz....

  var widget = {
# 1 = toggle switch horizontal
# 2 = toggle switch double horizontal
# 3 = toggle switch triple horizontal
# 4 = toggle switch quad horizontal
# 6 = toggle switch vertical
# 7 = toggle switch double vertical
# 8 = toggle switch triple vertical
# 9 = toggle switch quad vertical
# 33 = RGB light strip
# 52 = CCT bulb
# 69 = RGB+CCT bulb
# leave empty brackets if you don't want a widget there
# ctype scene doesn't have an uiid
# index "name   ", "ctype", uiid | name max 8 characters, rest will be truncated)
  1: ["Licht", "group", 1],
  #2: ["Index 2", "group", 2],
  #3: ["Index 3", "group", 3],
  #4: ["Index 4", "group", 4],
  #5: ["Index 5", "group", 33],
  #6: ["Index 6", "device", 52],
  #7: ["Index 7", "device", 69],
  #8: ["Index 8", "scene"],
  2: [],
  3: [],
  4: [],
  5: [],
  6: [],
  7: [],
  8: [],
}


Zitat2. ich habe des öftern beobachtet, dass eine Bedienung über Touch (das wechseln der Bedien-Seiten) nicht mehr möglich war und musste neu starten. Bin ich der einzige mit dem phänomen?

Das Problem habe ich auch. Sobald ich die Widgets per MQTT verändere, tritt dieses verhalten auf. Daher nutze ich die Variante mittels nspanel.be

Beta-User

Danke für die Info!

Vielleicht mal ins Unreine meine Gedanken dazu:
- Es ist anscheinend recht "tricky", die Gesamtkonfiguration "konsistent" zu machen, also vom Panel über das MQTT2_DEVICE bis hin zum passenden notify;
- Es gibt eine gewisse (beschränkte) Anzahl von Optionen für widgets (auf dem Panel);
- an sich ist das ganze nur gut nutzbar, wenn alle Stellen zueinander passen.

MAn. läge es daher nahe, zumindest für die Konfiguration MQTT2_DEVICE<->Panel eine myUtils zu schreiben, die dann in der Lage ist, Konfgurationsdaten (z.B. aus einem userattr) zu lesen, das eine Device:Reading-Kombi einem bestimmten widget zuordnet - und dann auch empfangsseitig in der Lage ist, gleich den entsprechenden set-Befehl zu generieren...? Dann könnte man direkt aus dem "Online"-Event (nein, eigentlich aus einem Aufruf via readingList) die Konfiguration machen, aktuelle Werte übergeben, ...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

hackepeter

#13
ZitatDamit sollte sich das "set" für die Lösch-Befehle erledigt haben.
Für das Anlegen der Panels nicht, aber da hat man nur die Wahl, dass die Anweisung in state landet (wenn man das attr setStateList löscht), oder man eben das set davor akzeptiert. Finde letzteres besser, weil man dann leichter weitereditieren können sollte.
Funktioniert beides einwandfrei, das löschen per dropdown klappt super!

ZitatWürde nur empfehlen, da noch jsonMap/$JSONMAP zu ermöglichen, indem das erweitert wird zu:
Code: [Auswählen]
/SmartHome/Kueche/tele/NSPanelKueche/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
Dann kann man zum einen die "typischen Tasmota"-Infos sauber (mit den an anderer Stelle schon verfügbaren defaults) entweder "erden" oder umbenennen, z.B. auch die "analog-Temperatur" nach "temperature".
Klappt auch einwandfrei!!

ZitatOffen wären dann m.E. noch ein paar andere Punkte:
- evtl. Optionen, die "Standard-widget-templates" (die Nummern wie in https://raw.githubusercontent.com/blakadder/nspanel/main/nspanel.be nach "var widget = {" aufgeführt) direkt per setList auszuwählen?
- ein (beispielhaftes) "dispatcher"-notify (für z.B. einen on/off-Aktor, eine dimmbare (farbige?) Leuchte sowie einen Thermostat;
- den Rückweg für diese Beispiel-Geräte (mAn. via MQTT_GENERIC_BRIDGE), damit der Status auf dem Display auch stimmt, wenn man von FHEM aus schaltet.
Stimmt, ob die Verfahrensweise der Widget-Erstellung über:
- die Anpassung der nspanel.be oder
- MQTT
erfogt, hängt m.E. davon ab, ob das Problem des Einfrierens noch gelöst wird oder nicht

Ich habe von einem kommeden Firmware-Update gehört, vielleicht ist behebt es ja das Problem:
We received feedback about the user experience and extensible functionality from our users, so we plan to make the following update in NSPanel's firmware V1.2.0:

Support temp. calibration and deviation setup
Widgets support adding DUALR3, DUALR3 Lite and D1
Converting between 12-hour and 24-hour format
Customized temp. range of ±5℃
Indoor temperature icon display
Multi-channel device name changed
Location issue optimization

What's more, both the problem of widgets is uncontrollable and device offline frequently in the firmware V1.1.0 is fixed in the V1.1.1. Attention your NSPanel version and make updating once the V1.1.1 is available to you.

PS: Firmware 1.2.0 is expected to be released at the end of March or early April. Because of the Gray Release way, the time the update is available will vary. Thank you for your patience.

After the release of 1.2.0, we will plan the update of the next version. We have already received some suggestions. Welcome to give us feedback, we will continue to optimize.

Thanks again for your support of NSPanel.


ZitatDas Problem habe ich auch. Sobald ich die Widgets per MQTT verändere, tritt dieses verhalten auf. Daher nutze ich die Variante mittels nspanel.be
Danke, das kann ich bestätigen - und es tritt auch bei Änderung über die Tasmota Console auf. Ich werde auch erstmal die Variante mittels nspanel.be nutzen.

ZitatVielleicht mal ins Unreine meine Gedanken dazu:
- Es ist anscheinend recht "tricky", die Gesamtkonfiguration "konsistent" zu machen, also vom Panel über das MQTT2_DEVICE bis hin zum passenden notify;
- Es gibt eine gewisse (beschränkte) Anzahl von Optionen für widgets (auf dem Panel);
- an sich ist das ganze nur gut nutzbar, wenn alle Stellen zueinander passen.

MAn. läge es daher nahe, zumindest für die Konfiguration MQTT2_DEVICE<->Panel eine myUtils zu schreiben, die dann in der Lage ist, Konfgurationsdaten (z.B. aus einem userattr) zu lesen, das eine Device:Reading-Kombi einem bestimmten widget zuordnet - und dann auch empfangsseitig in der Lage ist, gleich den entsprechenden set-Befehl zu generieren...? Dann könnte man direkt aus dem "Online"-Event (nein, eigentlich aus einem Aufruf via readingList) die Konfiguration machen, aktuelle Werte übergeben, ...
Ich sehe es auch so. Hilft es, wenn ich die readings aller Widgets dokumentiere? 

Beta-User

Zitat von: hackepeter am 24 Januar 2022, 19:11:04
Funktioniert beides einwandfrei, das löschen per dropdown klappt super!
Klappt auch einwandfrei!!
Thx. Dann werde ich mal bei Gelegenheit den aktuellen Zwischenstand in ein (split-) attrTemplate übernehmen.

Zitat
Stimmt, ob die Verfahrensweise der Widget-Erstellung über:
- die Anpassung der nspanel.be oder
- MQTT
erfogt, hängt m.E. davon ab, ob das Problem des Einfrierens noch gelöst wird oder nicht
Na ja, wenn ein update in der pipeline ist, sollte man es m.E. zumindest so vorbereiten, dass alles aus FHEM heraus gemacht werden kann. So oder so wäre es aber sinnvoll, die Schaltanweisungen aus dem Panel heraus "nach FHEM" zu mappen. Ob dann die Konfiguration versandt werden soll oder nicht, könnte man im Code über ein separates Attribut oder Reading steuern.

Zitat
Ich sehe es auch so. Hilft es, wenn ich die readings aller Widgets dokumentiere?
...darüber müßte ich erst nachdenken...

Prinzipiell vielleicht mal der Hinweis: Ich habe das Ding nicht und kann daher nur eher "von quer" meine Erfahrungen mit diversen Sachen einbringen, aber die eigentliche Hauptarbeit muss jemand anderes machen.
MAn. wäre es super, wenn man an der Schnittstelle von und zu dem Panel eine gewisse Standardisierung vornehmen könnte, so dass es insgesamt für alle leichter nutzbar wird, aber eine leichte Aufgabe ist das nicht unbedingt. Ich würde das so angehen, dass man ein userattribut einführt, in dem das "mapping" von (anderen) FHEM-Devices zu widgets vorgenommen werden kann (also auch sowas wie ein "Grund-Type") festgelegt wird. Das Versenden der Konfig-Info an das Panel ist nur ein Teil bzw. eine optionale Folge, aber an sich braucht man das rückwärts auch, wenn man direkt via MQTT2_DEVICE Schaltanweisungen aus Tastendrücken generieren will.

Von daher wäre es sicher sinnvoll, wenn man auch die JSON-Struktur direkt im Auge behält, die das Teil für die diversen widget-Ereignisse so versendet (die Reading-Namen sind nur eine Folge davon, die Auswertung geht uU. einfacher, wenn man die Struktur z.B. mit "decode_json" innerhalb myUtils gar nicht so flach aufbricht).
Falls nicht klar ist, was ich damit meine: Einfach mal die JSON (zusätzlich) "einfangen" wie in https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt erklärt und dann die Strukturen in einem Tool wie https://jsoneditoronline.org betrachten.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files