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

Beta-User

Zitat von: Beta-User am 25 Januar 2022, 09:56:49
Thx. Dann werde ich mal bei Gelegenheit den aktuellen Zwischenstand in ein (split-) attrTemplate übernehmen.
...ist via update unter dem Namen "tasmota_NSPanel_split" verfügbar...
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

Zitat von: hackepeter am 24 Januar 2022, 19:11:04
...hängt m.E. davon ab, ob das Problem des Einfrierens noch gelöst wird oder nicht


Habe ich gerade in der Anleitung gelesen:
Zitat
When initially drawing widgets you need to send commands for all 8 indexes, if you want to keep an index empty send a delete command for that index.

Man muss also ggf. "leere" Widgets zeichnen im alle 8 indizes zu füllen. Habe ich aber noch nicht getestet.

hackepeter

Nabend,

ich habe das "tasmota_NSPanel_split" getestet,POWER1 und POWER2 funktionieren, von den widgets kommen noch keine readings an, x_NSPSend_delete und x_NSPSend_json hast du sicher absichtlich nicht mit ins template gepackt...

Die 4 Konfigurationsdialoge sind für mich etwas verwirrend. Ich habe aus Unwissenheit folgendes eingetragen:


Specify the unknown parameters for MQTT2_DVES_0C89FC/tasmota_NSPanel_split:
Command topic prefix, without trailing /
/SmartHome/Kueche/cmnd/NSPanelKueche
ack topic prefix, without trailing /
/SmartHome/Kueche/stat/NSPanelKueche


Specify the unknown parameters for MQTT2_DVES_0C89FC/tasmota_2channel_split:
/Command topic prefix, without trailing /
/SmartHome/Kueche/cmnd/NSPanelKueche
ack topic prefix, without trailing /
/SmartHome/Kueche/stat/NSPanelKueche


Specify the unknown parameters for MQTT2_DVES_0C89FC/tasmota_basic_state_power1:
Command topic prefix, without trailing /
/SmartHome/Kueche/cmnd/NSPanelKueche
info topic prefix, without trailing /
/SmartHome/Kueche/tele/NSPanelKueche
ack topic prefix, without trailing /
/SmartHome/Kueche/stat/NSPanelKueche

Specify the unknown parameters for MQTT2_DVES_0C89FC/tasmota_set_lowercase_texts_and_state1:
Command topic prefix, without trailing /
/SmartHome/Kueche/cmnd/NSPanelKueche


Ich glaube wenn während der Konfiguration des attrTemplates autocreate aktiv ist, kommt es zu folgender Fehlermeldung:
defmod MQTT2_DVES_0C89FC_CH2: Cannot change the TYPE of an existing definition


CH1:

defmod MQTT2_DVES_0C89FC MQTT2_DEVICE DVES_0C89FC
attr MQTT2_DVES_0C89FC autocreate 0
attr MQTT2_DVES_0C89FC comment NOTE: For on-for-timer SetExtensions are used. You may add on-for-timer option running on the device. The following is limited to 1h max duration, but will not affect future simple "on" commands:<br>on-for-timer {my $duration = $EVTPART1*10;; 'cmnd//SmartHome/Kueche/cmnd/NSPanelKueche/Backlog POWER1 1;; delay '.$duration.';; POWER1 0'}<br>See the "Praxisbeispiele" in the wiki for "pulseTime1" alternative option and it's restrictions.
attr MQTT2_DVES_0C89FC devStateIcon Online:10px-kreis-gruen Offline:10px-kreis-rot
attr MQTT2_DVES_0C89FC icon tradfri_filled_floalt
attr MQTT2_DVES_0C89FC jsonMap POWER1:0 POWER2:0 POWER3:0 POWER4:0 Dimmer:0 Channel_0:0 Channel_1:0 Channel_2:0 Channel_3:0 Channel_4:0 HSBColor:0 Color:0
attr MQTT2_DVES_0C89FC model tasmota_basic_state_power1
attr MQTT2_DVES_0C89FC readingList /SmartHome/Kueche/tele/NSPanelKueche/LWT:.* LWT\
  /SmartHome/Kueche/tele/NSPanelKueche/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  /SmartHome/Kueche/tele/NSPanelKueche/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  /SmartHome/Kueche/tele/NSPanelKueche/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
  /SmartHome/Kueche/tele/NSPanelKueche/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  /SmartHome/Kueche/stat/NSPanelKueche/POWER1:.* state\
  /SmartHome/Kueche/stat/NSPanelKueche/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr MQTT2_DVES_0C89FC setList off:noArg    /SmartHome/Kueche/cmnd/NSPanelKueche/POWER1 0\
  on:noArg     /SmartHome/Kueche/cmnd/NSPanelKueche/POWER1 1\
  toggle:noArg /SmartHome/Kueche/cmnd/NSPanelKueche/POWER1 2\
  setOtaUrl:textField /SmartHome/Kueche/cmnd/NSPanelKueche/OtaUrl $EVTPART1\
  upgrade:noArg   /SmartHome/Kueche/cmnd/NSPanelKueche/upgrade 1
attr MQTT2_DVES_0C89FC setStateList on off toggle
attr MQTT2_DVES_0C89FC stateFormat <a href="http://IPAddress" target="_blank">\
LWT\
</a>\
state
attr MQTT2_DVES_0C89FC webCmd :

setstate MQTT2_DVES_0C89FC <a href="http://IPAddress" target="_blank">\
LWT\
</a>\
on
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 ANALOG_Temperature1 31.0
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Berry_HeapUsed 19
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Berry_Objects 423
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 ESP32_Temperature 83.9
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Heap 134
setstate MQTT2_DVES_0C89FC 2022-01-26 19:44:48 IODev myBroker
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 LoadAvg 999
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 MqttCount 2
setstate MQTT2_DVES_0C89FC 2022-01-26 19:54:24 SaveData on
setstate MQTT2_DVES_0C89FC 2022-01-26 19:54:24 SetOption26 on
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Sleep 0
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 SleepMode Dynamic
setstate MQTT2_DVES_0C89FC 2022-01-26 19:54:23 StateText1 off
setstate MQTT2_DVES_0C89FC 2022-01-26 19:54:23 StateText2 on
setstate MQTT2_DVES_0C89FC 2022-01-26 19:54:23 StateText3 toggle
setstate MQTT2_DVES_0C89FC 2022-01-26 19:54:23 StateText4 hold
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 TempUnit C
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Time 2022-01-26T20:02:40
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Uptime 0T00:35:09
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 UptimeSec 2109
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Wifi_AP 1
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Wifi_BSSId 00:A0:57:42:CE:39
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Wifi_Channel 11
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Wifi_Downtime 0T00:00:06
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Wifi_LinkCount 1
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Wifi_Mode 11n
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Wifi_RSSI 94
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Wifi_SSId Komisch Elektronisch
setstate MQTT2_DVES_0C89FC 2022-01-26 20:02:40 Wifi_Signal -53
setstate MQTT2_DVES_0C89FC 2022-01-26 19:49:48 associatedWith MQTT2_DVES_0C89FC_CH2
setstate MQTT2_DVES_0C89FC 2022-01-26 19:53:07 attrTemplateVersion 20210523
setstate MQTT2_DVES_0C89FC 2022-01-26 19:54:34 state on


CH2:
defmod MQTT2_DVES_0C89FC_CH2 MQTT2_DEVICE DVES_0C89FC
attr MQTT2_DVES_0C89FC_CH2 comment Channel 2 for MQTT2_DVES_0C89FC
attr MQTT2_DVES_0C89FC_CH2 devStateIcon Online:10px-kreis-gruen Offline:10px-kreis-rot
attr MQTT2_DVES_0C89FC_CH2 icon tradfri_filled_floalt
attr MQTT2_DVES_0C89FC_CH2 jsonMap POWER2:0 Dimmer:pct POWER1:0 Heap:0 LedTable:0 LoadAvg:0 MqttCount:0 SaveData:0 Scheme:0 SetOption26:0 Sleep:0 SleepMode:0 Speed:0 StateText1:0 StateText2:0 StateText3:0 StateText4:0 Time:0 Uptime:0 UptimeSec:0 Wifi_SSId:0 Wifi_RSSI:0 Wifi_LinkCount:0 Wifi_Downtime:0 Wifi_Channel:0 Wifi_BSSId:0 Wifi_AP:0 ANALOG_A0:0 SetOption26:0 Sleep:0 SleepMode:0 Speed:0 StateText1:0 StateText2:0 StateText3:0 StateText4:0 Time:0 Uptime:0 UptimeSec:0 Wifi_SSId:0 Wifi_RSSI:0 Wifi_LinkCount:0 Wifi_Downtime:0 Wifi_Channel:0 Wifi_BSSId:0 Wifi_AP:0
attr MQTT2_DVES_0C89FC_CH2 model tasmota_2channel_split
attr MQTT2_DVES_0C89FC_CH2 readingList /SmartHome/Kueche/stat/NSPanelKueche/POWER2:.* state\
DVES_0C89FC:/SmartHome/Kueche/tele/NSPanelKueche/RESULT:.* { json2nameValue($EVENT) }
attr MQTT2_DVES_0C89FC_CH2 setList off:noArg    /SmartHome/Kueche/cmnd/NSPanelKueche/POWER2 0\
  on:noArg     /SmartHome/Kueche/cmnd/NSPanelKueche/POWER2 1\
  toggle:noArg /SmartHome/Kueche/cmnd/NSPanelKueche/POWER2 2
attr MQTT2_DVES_0C89FC_CH2 setStateList on off toggle
attr MQTT2_DVES_0C89FC_CH2 stateFormat <a href="http://IPAddress" target="_blank">\
LWT\
</a>\
state
attr MQTT2_DVES_0C89FC_CH2 webCmd :

setstate MQTT2_DVES_0C89FC_CH2 <a href="http://IPAddress" target="_blank">\
LWT\
</a>\
off
setstate MQTT2_DVES_0C89FC_CH2 2022-01-26 19:49:48 IODev myBroker
setstate MQTT2_DVES_0C89FC_CH2 2022-01-26 19:54:47 NSPanel_ctype group
setstate MQTT2_DVES_0C89FC_CH2 2022-01-26 19:54:47 NSPanel_id 1
setstate MQTT2_DVES_0C89FC_CH2 2022-01-26 19:54:47 NSPanel_params_switch on
setstate MQTT2_DVES_0C89FC_CH2 2022-01-26 19:54:47 NSPanel_params_switches_1_outlet 0
setstate MQTT2_DVES_0C89FC_CH2 2022-01-26 19:54:47 NSPanel_params_switches_1_switch on
setstate MQTT2_DVES_0C89FC_CH2 2022-01-26 19:49:48 associatedWith MQTT2_DVES_0C89FC
setstate MQTT2_DVES_0C89FC_CH2 2022-01-26 19:49:48 attrTemplateVersion 20211030
setstate MQTT2_DVES_0C89FC_CH2 2022-01-26 20:04:11 state off
setstate MQTT2_DVES_0C89FC_CH2 2022-01-26 19:49:48 subscriptions /SmartHome/Kueche/cmnd/NSPanelKueche/# /SmartHome/Kueche/cmnd/tasmotas/# cmnd/DVES_0C89FC_fb/#


ZitatMan muss also ggf. "leere" Widgets zeichnen im alle 8 indizes zu füllen. Habe ich aber noch nicht getestet.

Nach dem Neustarten (default config) sind alle Widgets belegt. Ich habe zum testen nur id1 gelöscht und neu angelegt. Dennoch das Problem des Einfrierens.

mike1969bln

Hallo in die Runde,

ich war hier ein paar Tage nicht am Lesen und bin jetzt erstaunt, wieviel hier passiert ist. Super.

Ich habe für zwei Widgets mal die JSON-Antworten bei einer Veränderung am Panel rausgesucht. Vielleicht hilft das dann noch weiter.

1.  # 4 = toggle switch quad horizontal
{"NSPanel":{"ctype":"group","id":"4","params":{"switches":[{"switch":"off","outlet":0},{"switch":"on","outlet":1},{"switch":"off","outlet":2},{"switch":"on","outlet":3}]}}}

2.  # 52 = CCT bulb
{"NSPanel":{"ctype":"group","id":"1","params":{"switch":"on"}}}
{"NSPanel":{"ctype":"group","id":"1","params":{"ltype":"white","white":{"br":86,"ct":124}}}}


Die ID ist jeweils die Position auf dem Panel.


Beta-User

Hallo zusammen
Zitat von: hackepeter am 26 Januar 2022, 20:28:38
x_NSPSend_delete und x_NSPSend_json hast du sicher absichtlich nicht mit ins template gepackt...
Jein. Die sind drin, aber der Code läuft nicht bis zu dieser Stelle durch, wegen eines Fehlers an einer ganz anderen Stelle:
ZitatIch glaube wenn während der Konfiguration des attrTemplates autocreate aktiv ist, kommt es zu folgender Fehlermeldung:
defmod MQTT2_DVES_0C89FC_CH2: Cannot change the TYPE of an existing definition
Und nein, das hat nichts mit autocreate zu tun...

Passende updates sind in Vorbereitung.

ZitatDie 4 Konfigurationsdialoge sind für mich etwas verwirrend.
Die erscheinen nur, wenn man ein Device hat, das attrTemplate nicht auswerten kann (hier: es war kein LWT-Topic in der readingList).

ZitatNach dem Neustarten (default config) sind alle Widgets belegt. Ich habe zum testen nur id1 gelöscht und neu angelegt. Dennoch das Problem des Einfrierens.
Vermutlich ist es erforderlich, die Konfiguration in der .be zu machen, bis ein update für den Treiber erhältlich ist. MAn. ist es trotzdem sinnvoll, gleich hier bei der attrTemplate-Entwicklung die Werkzeuge vorzusehen, dass man das recht easy von FHEM aus machen kann.

Zitat von: mike1969bln am 26 Januar 2022, 23:51:18
ich war hier ein paar Tage nicht am Lesen und bin jetzt erstaunt, wieviel hier passiert ist. Super.
Nun ja, bis hierhin sind es eigentlich eher "basics"...

Zitat
Ich habe für zwei Widgets mal die JSON-Antworten bei einer Veränderung am Panel rausgesucht. Vielleicht hilft das dann noch weiter.
Unterstellt, die gezeigten Payloads kommen bei "tele"-SENSOR an, beginnt jetzt die "Kür"  ;) ...

Als ersten Schritt könnte man mal sowas basteln, um die Reading-Namen zu verkürzen:
TELETOPIC/SENSOR:.* { $EVENT =~ m,\A..NSPanel.+id...(\d+).+params..(.+)..\z, ? json2nameValue($2,"Pan_${1}_",$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }Der nächste Schritt wäre dann, "json2nameValue($2,"Pan_${1}_",$JSONMAP)" durch einen passenden myUtils-Aufruf zu ersetzen, und/oder wenigstens den Teil rauszufiltern, den man nicht braucht (z.B. die "outlet"-Infos kommen mir überflüssig vor)...

update folgen, wie bereits erwähnt :) .
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

Zitat von: hackepeter am 26 Januar 2022, 20:28:38
Nach dem Neustarten (default config) sind alle Widgets belegt. Ich habe zum testen nur id1 gelöscht und neu angelegt. Dennoch das Problem des Einfrierens.

Du musst immer alle 8 Positionen ansprechen. Ich habe es getestet, indem ich z.B. an Position 3 und 6 ein Widget erstellt habe. Für die restlichen sende ich ein delete (auch wenn die leer sind). So läuft es bei mir.

Gruß

Beta-User

Vielleicht vorneweg nochmal:
Zitat von: Beta-User am 22 Januar 2022, 08:06:15
Vorschläge:
- Verschieben nach MQTT (kann jeder TE selbst)

Zitat von: darkness am 27 Januar 2022, 12:43:55
Du musst immer alle 8 Positionen ansprechen. Ich habe es getestet, indem ich z.B. an Position 3 und 6 ein Widget erstellt habe. Für die restlichen sende ich ein delete (auch wenn die leer sind). So läuft es bei mir.
...dann kommt mit dem nächsten update auch ein Beispiel, wie man via "Online"-Topic-Auswertung eine direkte Konfiguration machen könnte...
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

mike1969bln

Zitat von: Beta-User am 27 Januar 2022, 12:03:34
Unterstellt, die gezeigten Payloads kommen bei "tele"-SENSOR an, beginnt jetzt die "Kür"  ;) ...

Dazu eine Ergänzung: der Payload kommt bei tele/RESULT an.

Beta-User

Zitat von: mike1969bln am 27 Januar 2022, 22:10:26
Dazu eine Ergänzung: der Payload kommt bei tele/RESULT an.
Danke.

Update ist im svn, am einfachsten (braucht auch keinen Neustart) zu bekommen via:
{ Svn_GetFile("FHEM/lib/AttrTemplate/mqtt2.template", "FHEM/lib/AttrTemplate/mqtt2.template", sub(){ AttrTemplate_Initialize() }) }
Vor dem Anwenden aber bitte ggf. das Device für den 2. Kanal löschen.

Zitat von: Beta-User am 27 Januar 2022, 13:08:58
...dann kommt mit dem nächsten update auch ein Beispiel, wie man via "Online"-Topic-Auswertung eine direkte Konfiguration machen könnte...
Das ist in der vorliegenden Form erst mal eher als Test gedacht, ob das so funktioniert wie gedacht. Wird noch ergänzt um ein paar Auswahlmöglichkeiten, damit man seine eigenen, angepaßten Vorgaben dann nicht jedes Mal wieder reinkopieren muss...
Aber vorher muss es erst mal grundsätzlich auch im wirklichen Leben funktionieren :) .
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

fhem-challenge

#24
Hi,

schön zu lesen, dass jetzt auch weitere Mitstreiter das NSPanel in fhem einbinden wollen.

Ich hatte es im November bekommen (die US Variante, ist aber erstmal egal).

Ich musste hier auch durch diverse Höhen und Tiefen gehen, bis ich es sinnvoll bei mir einsetzen kann.

Restrictions gibt es noch einige (die Widgets, selbst Widgets schreiben ist aufwendig, also nutzt man die vorgegebenen, die nicht alle "schön" sind).

Was ich nun  mache:

1.) Ich habe den NSPanel via MQTT si eingerichtet, dass ein "klick" auf das letzte rechte Widget eine ganze neue Reihe Widgets erzeugt. Und ja, es müssen immer! alle 8 Widgets erzeugt werden/oder gelöscht werden.
2.) Das ist aber via MQTT und in FHEM alles möglich (hatte ich erst so), nur recht langsam, ich habe stattdessen in der nspanel.be die Menus hardcoded vorgegeben (also 3-4 Menüseiten mit jeweils 8 Widgets). Die Umschaltung der einzelnen Menüseiten geht also im NSPanel selbst und die Notification, welche Menuseite ich habe, schicke ich via MQTT an FHEM
3.) Der Menüseiten Aufbau geht im nspanel selbst viel schneller, als immer alle 8 Widgets via MQTT darzustellen (war auch zu erwarten war).
4.) Aktuell ist alle noch ein Testaufbau

Anbei meine nspanel.be (mit 3-4 testmenüs)

Sowie meine Config in FHEM zum Panel:

setlist:
on1:noArg cmnd/NSPanel/POWER1 ON
off1:noArg cmnd/NSPanel/POWER1 OFF
on2:noArg cmnd/NSPanel/POWER2 ON
off2:noArg cmnd/NSPanel/POWER2 OFF
menu_a:noArg cmnd/NSPanel/menu_a
menu_b:noArg cmnd/NSPanel/menu_b
menu:a,b,c,d,e cmnd/NSPanel/menu_$EVTPART1
widget1:noArg cmnd/NSPanel/nspsend {"HMI_resources":[{"index":7,"ctype":"group","id":"Licht","uiid":6}]}
mach1 cmnd/NSPanel/nspsend $EVTPART1
mach cmnd/NSPanel/nspsend $EVTPART1


sowie readinglist:

DVES_DB0100:stat/170pic/LOGGING:.* LOGGING
DVES_DB0100:stat/170pic/RESULT:.* { json2nameValue($EVENT, 'RESULT_', $JSONMAP) }
DVES_DB0100:stat/170pic/POWER2:.* POWER2
DVES_DB0100:stat/170pic/POWER1:.* POWER1
DVES_DB0100:tele/170pic/LWT:.* LWT
DVES_DB0100:cmnd/170pic/POWER:.* POWER
DVES_DB0100:tele/170pic/INFO1:.* { json2nameValue($EVENT, 'INFO1_', $JSONMAP) }
DVES_DB0100:tele/170pic/INFO2:.* { json2nameValue($EVENT, 'INFO2_', $JSONMAP) }
DVES_DB0100:tele/170pic/INFO3:.* { json2nameValue($EVENT, 'INFO3_', $JSONMAP) }
DVES_DB0100:tele/170pic/RESULT:.* { json2nameValue($EVENT, 'RESULT_', $JSONMAP) }
DVES_DB0100:tele/170pic/STATE:.* { json2nameValue($EVENT, 'STATE_', $JSONMAP) }
DVES_DB0100:tele/170pic/SENSOR:.* { json2nameValue($EVENT, 'SENSOR_', $JSONMAP) }
DVES_DB0100:tasmota/discovery/C4DD57DB0100/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }
DVES_DB0100:tasmota/discovery/C4DD57DB0100/sensors:.* { json2nameValue($EVENT, 'sensors_', $JSONMAP) }
DVES_DB0100:NSPanel/RESULT:.* { json2nameValue($EVENT, 'RESULT_', $JSONMAP) }
DVES_DB0100:NSPanel/LOGGING:.* LOGGING
DVES_DB0100:NSPanel/LWT:.* LWT
DVES_DB0100:NSPanel/cmnd/POWER:.* POWER
DVES_DB0100:NSPanel/INFO1:.* { json2nameValue($EVENT, 'INFO1_', $JSONMAP) }
DVES_DB0100:NSPanel/INFO2:.* { json2nameValue($EVENT, 'INFO2_', $JSONMAP) }
DVES_DB0100:NSPanel/INFO3:.* { json2nameValue($EVENT, 'INFO3_', $JSONMAP) }
DVES_DB0100:NSPanel/POWER1:.* POWER1
DVES_DB0100:NSPanel/POWER2:.* POWER2
DVES_DB0100:NSPanel/STATE:.* { json2nameValue($EVENT, 'STATE_', $JSONMAP) }
DVES_DB0100:NSPanel/SENSOR:.* { json2nameValue($EVENT, 'SENSOR_', $JSONMAP) }
DVES_DB0100:stat/NSPanel/RESULT:.* { json2nameValue($EVENT, 'RESULT_', $JSONMAP) }
DVES_DB0100:stat/NSPanel/LOGGING:.* LOGGING
DVES_DB0100:tele/NSPanel/LWT:.* LWT
DVES_DB0100:cmnd/NSPanel/POWER:.* POWER
DVES_DB0100:tele/NSPanel/INFO1:.* { json2nameValue($EVENT, 'INFO1_', $JSONMAP) }
DVES_DB0100:tele/NSPanel/INFO2:.* { json2nameValue($EVENT, 'INFO2_', $JSONMAP) }
DVES_DB0100:tele/NSPanel/INFO3:.* { json2nameValue($EVENT, 'INFO3_', $JSONMAP) }
DVES_DB0100:stat/NSPanel/POWER1:.* POWER1
DVES_DB0100:stat/NSPanel/POWER2:.* POWER2
DVES_DB0100:tele/NSPanel/RESULT:.* { json2nameValue($EVENT, 'RESULT_', $JSONMAP) }
DVES_DB0100:tele/NSPanel/STATE:.* { json2nameValue($EVENT, 'STATE_', $JSONMAP) }
DVES_DB0100:tele/NSPanel/SENSOR:.* { json2nameValue($EVENT, 'SENSOR_', $JSONMAP) }
DVES_DB0100:stat/NSPanel/UPGRADE:.* { json2nameValue($EVENT, 'UPGRADE_', $JSONMAP) }



meine webcmd:

on1:off1:on2:off2:menu a:menu b:menu c:menu d:menu e



Ich will in FHEM halt wissen, welches Menü auf dem NSPanel gerade "aktiv" ist, damit ich in FHEM auf die MQTT Events auch passend im Kontext reagieren kann -> Klappt

Und ich wechsele die Menüs auf dem NSPanel ...


Und wie gesagt, bei mir noch "beta".... bis mich die  Sinnhaftigkeit des NSPanel überzeugt hat (die Hardware ist gut), die Integration etwas hakelig.


Viele Grüße!

Andreas

Gisbert

Hallo zusammen,

ich beginne mich mit diesem Gerät auseinanderzusetzen. Mit dem Schalten von einem oder zwei Verbrauchern, deren Kabel in der ausgewählten UP-Dose enden, gibt es über die Wigets virtuelle Schalter.

Hierzu wäre es schön, wenn ich 3 Rollläden unabhängig an einer Stelle (eben diesem NSPanel) hoch, runter und stoppen könnte (Befehle dazu gibt es in Fhem). Hat das schon jemand umgesetzt, oder hat jemand dazu eine Idee, ob das gut funktionieren kann? Dieses Panel würde auf jeden Fall den WAF stark erhöhen.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Beta-User

Zitat von: fhem-challenge am 01 Februar 2022, 18:55:02
2.) Das ist aber via MQTT und in FHEM alles möglich (hatte ich erst so), nur recht langsam, ich habe stattdessen in der nspanel.be die Menus hardcoded vorgegeben (also 3-4 Menüseiten mit jeweils 8 Widgets). Die Umschaltung der einzelnen Menüseiten geht also im NSPanel selbst und die Notification, welche Menuseite ich habe, schicke ich via MQTT an FHEM
Das mit den Menüs ist interessant, falls Unterstützung gewünscht ist, wäre interessant, wie die Infos aus den einzelnen Menüseiten und die Seitenwechsel per MQTT vermeldet werden (am besten den MQTT-Traffic mit Topic und payload).

Was die readingList angeht, würde ich das mind. in diese Richtung ändern, da scheint noch einiges an "Altlasten" aus vorherigen Versuchen drin zu sein, außerdem sind die "discovery" und "cmnd"-Topics mAn. was, was man ignorieren sollte (am besten via ignoreRegexp am IO, hier über die rL):
stat/NSPanel/RESULT:.* { json2nameValue($EVENT, 'RESULT_', $JSONMAP) }
stat/NSPanel/LOGGING:.* LOGGING
tele/NSPanel/LWT:.* LWT
tele/NSPanel/INFO1:.* { json2nameValue($EVENT, 'INFO1_', $JSONMAP) }
tele/NSPanel/INFO2:.* { json2nameValue($EVENT, 'INFO2_', $JSONMAP) }
tele/NSPanel/INFO3:.* { json2nameValue($EVENT, 'INFO3_', $JSONMAP) }
stat/NSPanel/POWER1:.* POWER1
stat/NSPanel/POWER2:.* POWER2
tele/NSPanel/RESULT:.* { json2nameValue($EVENT, 'RESULT_', $JSONMAP) }
tele/NSPanel/STATE:.* { json2nameValue($EVENT, 'STATE_', $JSONMAP) }
tele/NSPanel/SENSOR:.* { json2nameValue($EVENT, 'SENSOR_', $JSONMAP) }
stat/NSPanel/UPGRADE:.* { json2nameValue($EVENT, 'UPGRADE_', $JSONMAP) }
tasmota/discovery/C4DD57DB0100/config:.* {}
tasmota/discovery/C4DD57DB0100/sensors:.* {}
cmnd/NSPanel/POWER:.* {}


Weiter dürfte die "split"-Variante für die beiden button/relay besser in FHEM zu integrieren sein (SetExtensions, z.B.).

Zitat von: Gisbert am 13 Februar 2022, 15:46:10
ich beginne mich mit diesem Gerät auseinanderzusetzen. Mit dem Schalten von einem oder zwei Verbrauchern, deren Kabel in der ausgewählten UP-Dose enden, gibt es über die Wigets virtuelle Schalter.
Nach meinem Verständnis geht das zwar vielleicht auch über Widgets/virtuelle Schalter, aber dazu kann man auch einfach die zwei Tasten unten benutzen...

Zitat
Hierzu wäre es schön, wenn ich 3 Rollläden unabhängig an einer Stelle (eben diesem NSPanel) hoch, runter und stoppen könnte (Befehle dazu gibt es in Fhem). Hat das schon jemand umgesetzt, oder hat jemand dazu eine Idee, ob das gut funktionieren kann?
Prinzipiell ist das Panel wohl dazu gedacht, solche Szenarien umzusetzen, und um das zu vereinfachen, gibt es das attrTemplate, um wenigstens die Reading-Namen halbwegs "einzukürzen". Bisher allerdings ohne Rückmeldung, ob das funktioniert... (Und was deine Rollladen-Devices angeht: Die sind dafür nicht optimal, ich würde wetten, dass das Panel einen numerischen (Prozent-) Wert liefert, den du aber nicht ohne weiteres mit deiner Eigenbau-Firmware "verdauen" kannst). "Stop" ist vermutlich ein eher schwieriges Thema, denn dafür müßte man entweder ein separates Widget "verbraten" oder in einem "Rollladen-Widget" wissen, dass der Rollladen grade läuft.

Für den Rest scheint zu gelten:
Zitat
4.) Aktuell ist alle noch ein Testaufbau
Bisher habe ich im Forum nicht viel mehr gesehen wie "Machbarkeitsstudien", es dürfte aber nicht allzu schwierig sein, da was zusammenzuschustern (vorausgesetzt, man muss nicht allzuviel spezielles Coding drumrum bauen wie bei Gisbert's Rollläden).
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

Gisbert

Hallo Jörg,

ZitatUnd was deine Rollladen-Devices angeht: Die sind dafür nicht optimal, ich würde wetten, dass das Panel einen numerischen (Prozent-) Wert liefert, den du aber nicht ohne weiteres mit deiner Eigenbau-Firmware "verdauen" kannst. "Stop" ist vermutlich ein eher schwieriges Thema, denn dafür müßte man entweder ein separates Widget "verbraten" oder in einem "Rollladen-Widget" wissen, dass der Rollladen grade läuft.

Die Rollladenaktoren sind zwar Eigenkonstrukte, laufen aber mit Tasmota (teils mit unterschiedlich alten Firmwares, je nachdem, wann ich es installiert hatte).
Befehle in Fhem lauten für einen Rollladen:
set RollladenWohnzimmerTerrasse DriveDown
set RollladenWohnzimmerTerrasse DriveUp
set RollladenWohnzimmerTerrasse DriveSlit
set RollladenWohnzimmerTerrasse Stop

Könnte man 4 verschiedenen, virtuellen Schaltern (oder ggf. nur 2 Schaltern für hoch/runter) beibringen, dass sie die obigen Befehle zu Fhem schicken?

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Beta-User

...die (hier OT-) Frage ist: Warum nimmst du nicht die aktuelle Rollladen-Implementierung innerhalb Tasmota und "gut ist"...
Wie bereits an anderer Stelle angemerkt: Du kannst alle möglichen würgarounds bauen, aber ein Rollladen, der "pct spricht", ist einfach ein richtiger Rollladen, und alles andere ist Gemurkse :P ... (mir ist schon klar, dass du halt aus historischen Gründen mit MQTT_DEVICE rummachst, was eben keine sinnvolle JSON-Implementierung enthält => Umziehen).

In ein MQTT2_DEVICE dann einen "Kompabilitäts-Layer" einzubauen, der deine "althergebrachten" Kommandos mit implementiert, ist keine große Sache...
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

Gisbert

Hallo Jörg,

den Umzug nach MQTT2_DEVICE ist wohl machbar, muss aber wie du an verschiedenen Stellen geschrieben hast, gut geplant werden. Da hab ich mich bisher nicht dran getraut. Ich hab ingesamt 21 Devices vom Typ MQTT_DEVICE, u.a. hängt die komplette Heizungs- und Warmwassersteuerung dran. Das sollte immer noch kein Grund sein, nicht damit anzufangen, aber bei mir funktioniert meistens so gut wie nichts auf Anhieb (Ausnahme: ATtiny85 mit Dallas DS18B20 und 433 MHz-Sender).
Spätestens, wenn ich einen neuen Server mit Virtualisierung/Containern aufsetze, wird das ein Punkt sein, den ich umsetzen werde. Aber auch da sehe ich den Wald vor lauter Bäumen noch nicht. Virtualbox, Proxmox, Docker, LXC stehen zur Debatte, wobei ich nicht weiß, was für mich am besten geeignet ist.

Das war jetzt reichlich offtopic, zurück zum Thema. Vielleicht ist das falsch rüber gekommen, der Rollladen hängt nicht direkt am Sonoff NSPanel. Ich würde gerne zentral an einer Stelle verschiedene Rollläden manuell (über virtuelle Schalter) bedienen können, und dazu müssten Befehle vom NSPanel zu Fhem geschickt werden.

Viele​ Grüße​ Gisbert​

Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Beta-User

Zitat von: Gisbert am 14 Februar 2022, 12:22:17
Vielleicht ist das falsch rüber gekommen, der Rollladen hängt nicht direkt am Sonoff NSPanel.
Zumindest mir war das klar. Es geht darum, dass man auf dem Display im Prinzip beliebig viele andere Geräte fernsteuern können soll. Dazu muss man das passende Widget auswählen und die dann gesendeten Daten auswerten. Die sind nur "ziemlich kompliziert" verpackt. Spätestens dann will man kein MQTT_DEVICE mehr dafür hernehmen...

OT
Zitatden Umzug nach MQTT2_DEVICE ist wohl machbar, muss aber wie du an verschiedenen Stellen geschrieben hast, gut geplant werden.
"Jeder Weg beginnt mit dem ersten Schritt!"

Wie bereits an anderer Stelle vorgeschlagen: nimm einen "nackigen" ESP8266 (oder ein beliebiges Fertiggerät mit 2 Relays) und mache damit einen Testrollladen-Aktor auf MQTT2_DEVICE-Basis. Ich behaupte: deine paar Rollläden sind in weniger als 2-3h umgezogen, die erste Stunde brauchst du für's Prinzip, der Rest ist "Mechanik"...
(Aber bitte beachten: falls auch Rhasspy an deinen Mosquitto sendet, ist der "kaputt" für FHEM/MQTT2_CLIENT - wir brauchen einen "normalen" MQTT-Server ;) ).
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

#31
Guten Morgen,


@Gisbert

eine Möglichkeit der Rolladensteuerung wäre vielleicht das Widget "8 = toggle switch triple vertical". Damit könntest du ja dann die Werte Hoch,Runter, Stop abbilden. Aber wie bereits geschrieben ist eine direkte Steuerung mit Prozent nicht möglich.

Vielleicht wäre auch das "4 = toggle switch quad horizontal" Widget eine Option. Damit könntest du 0,25,50,75 abbilden (und mir fällt gerade auf das du 5 Werte bräuchtest um auf 100% zu kommen :) )
Für Widgets gibt es auch noch die Möglichkeit diese vom Typ "device = basic widget tracks online and offline status" anzulegen. Damit könntest du evtl. Rückmeldungen verarbeiten.

Das ist jetzt einfach erstmal losgedacht. Da ich selber das Panel noch nicht verbauen konnte, steht es hier noch als "Foruschungsobjekt" auf dem Tisch ;)
Ich kann auch gerne mal ein Testwidget erstellen und die Werte hier reinschreiben.

@Beta-User

ICh habe mich bisher noch nie ernsthaft mir MQTT-Templates beschäftigt.  :'(
Jetzt habe ich auf mein Panel mal tasmota_NSPanel_Split ausgeführt und es wurden die zwei devices angelegt. Gibt es dann noch ein weiteres Template, welches On/Off usw hinzufügt? ODer nutze ich da ein bestehendes Template?

Ach vergiss es. Die werden ja im Dropdown-Feld angelegt. Ich hatte die WebCmds vermisst.

Danke und Gruß

Beta-User

Zitat von: darkness am 15 Februar 2022, 07:06:58
ICh habe mich bisher noch nie ernsthaft mir MQTT-Templates beschäftigt.  :'(
Kein Problem; da du im wesentlichen ja alleine klarzukommen scheinst, brauchst du das Hilfsmittelchen vielleicht ja gar nicht. Ansonsten geht es eben darum, eine (oder mehrere) funktionierende Konfigurationsmöglichkeit(en) bereitzustellen und ggf. gemeinsam weiter zu optimieren.

Was webCmd angeht: Prinzipiell versuche ich immer, die Zahl der Bedienelemente eher klein zu halten. Für ein/aus genügt devStateIcon, daher ist es hier darauf reduziert.
Aber das ist eben nur ein Vorschlag, das kann man auch anders machen (selbst, wenn ich es dann ggf. anders (=reduziert) verteile) :) .

Interessieren würde mich jetzt aber schon, ob es sinnvoll erscheint, wie das JSON von den widgets ausgepackt wird. Dazu hat sich bisher noch keiner geäußert...
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

ZitatInteressieren würde mich jetzt aber schon, ob es sinnvoll erscheint, wie das JSON von den widgets ausgepackt wird. Dazu hat sich bisher noch keiner geäußert...

Aktuell erscheint die Rückmeldung des Widgets überhaupt nicht im Device. Dies kann jetzt aber auch durch die Mischung mit dem Template kommen.

Internals:
   CID        DVES_0C8DAC
   DEF        DVES_0C8DAC
   DEVICETOPIC SmartHome/02_Kueche/tasmota_0C8DAC/
   FUUID      61eb01ca-f33f-ed18-0794-c083ebcd73a5b0e5
   IODev      m2_Server
   LASTInputDev m2_Server
   MSGCNT     2703
   NAME       02_NSPanel_01
   NR         789
   STATE      <a href="http://172.16.20.10" target="_blank">
Online
</a>
off
   TYPE       MQTT2_DEVICE
   m2_Server_CONN m2_Server_172.16.20.10_49212
   m2_Server_MSGCNT 2703
   m2_Server_TIME 2022-02-15 07:59:15
   JSONMAP:
     Channel_0  0
     Channel_1  0
     Channel_2  0
     Channel_3  0
     Channel_4  0
     Color      0
     Dimmer     0
     HSBColor   0
     POWER1     0
     POWER2     0
     POWER3     0
     POWER4     0
   OLDREADINGS:
   READINGS:
     2022-02-15 07:56:10   ANALOG_Temperature1 27.8
     2022-02-15 07:56:10   Berry_HeapUsed  18
     2022-02-15 07:56:10   Berry_Objects   394
     2022-02-15 07:56:10   ESP32_Temperature 53.3
     2022-02-15 07:26:09   FallbackTopic   cmnd/DVES_0C8DAC_fb/
     2022-02-15 07:26:09   GroupTopic      SmartHome/02_Kueche/tasmotas/cmnd/
     2022-02-15 07:56:10   Heap            126
     2022-02-15 07:26:09   Hostname        tasmota-0C8DAC-3500
     2022-02-14 10:27:16   IODev           m2_Server
     2022-02-15 07:26:09   IPAddress       172.16.20.10
     2022-02-15 07:26:09   LWT             Online
     2022-02-15 07:56:10   LoadAvg         1003
     2022-02-15 07:26:09   Module          NSPanel
     2022-02-15 07:56:10   MqttCount       1
     2022-02-15 07:59:15   NSPSend         Done
     2022-02-15 07:26:09   RestartReason   Software reset CPU
     2022-02-15 06:53:29   SaveData        on
     2022-02-15 06:53:28   SetOption26     on
     2022-02-15 07:56:10   Sleep           0
     2022-02-15 07:56:10   SleepMode       Dynamic
     2022-02-15 06:53:27   StateText1      off
     2022-02-15 06:53:27   StateText2      on
     2022-02-15 06:53:28   StateText3      toggle
     2022-02-15 06:53:28   StateText4      hold
     2022-02-15 07:26:10   TelePeriod      300
     2022-02-15 07:56:10   TempUnit        C
     2022-02-15 07:56:10   Time            2022-02-15T07:56:10
     2022-02-15 07:56:10   Uptime          0T00:30:10
     2022-02-15 07:56:10   UptimeSec       1810
     2022-02-15 07:26:09   Version         10.1.0(tasmota)
     2022-02-15 07:26:09   WebServerMode   Admin
     2022-02-15 07:56:10   Wifi_AP         1
     2022-02-15 07:56:10   Wifi_BSSId      18:E8:29:57:46:15
     2022-02-15 07:56:10   Wifi_Channel    6
     2022-02-15 07:56:10   Wifi_Downtime   0T00:00:06
     2022-02-15 07:56:10   Wifi_LinkCount  1
     2022-02-15 07:56:10   Wifi_Mode       11n
     2022-02-15 07:56:10   Wifi_RSSI       100
     2022-02-15 07:56:10   Wifi_SSId       allnetIoT
     2022-02-15 07:56:10   Wifi_Signal     -46
     2022-02-15 06:53:26   associatedWith  02_NSPanel_01_CH2
     2022-02-15 06:53:27   attrTemplateVersion 20220128
     2022-02-15 07:26:09   state           off
     2022-02-15 06:53:26   subscriptions   SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/# SmartHome/02_Kueche/tasmotas/cmnd/# cmnd/DVES_0C8DAC_fb/#
     2022-02-15 07:26:09   x_NSPSend_delete set 8
     2022-02-15 07:26:09   x_NSPSend_json  set {"HMI_resources":[{"index":1,"ctype":"group","id":"1","uiid":1}]}
Attributes:
   autocreate 0
   comment    Initial configuration is just an example. You may delete these parts if not needed. For more info see Forum Thread (https://forum.fhem.de/index.php/topic,125423.0.html) and Tasmota Template Repository (https://templates.blakadder.com/sonoff_NSPanel.html).
   devStateIcon Online:10px-kreis-gruen Offline:10px-kreis-rot
   devicetopic SmartHome/02_Kueche/tasmota_0C8DAC/
   event-on-change-reading NSPanel_params_switches_1_switch,POWER1,POWER2
   event-on-update-reading LWT,ANALOG_Temperature1
   genericDeviceType switch
   group      DEV
   icon       tradfri_filled_floalt
   initConfig set 02_NSPanel_01 x_NSPSend_delete 1; set 02_NSPanel_01 x_NSPSend_delete 2; set 02_NSPanel_01 x_NSPSend_delete 3; set 02_NSPanel_01 x_NSPSend_delete 4; set 02_NSPanel_01 x_NSPSend_delete 5; set 02_NSPanel_01 x_NSPSend_delete 6; set 02_NSPanel_01 x_NSPSend_delete 7; set 02_NSPanel_01 x_NSPSend_delete 8; set 02_NSPanel_01 x_NSPSend_json {"HMI_resources":[{"index":1,"ctype":"group","id":"1","uiid":1}]};
   jsonMap    POWER1:0 POWER2:0 POWER3:0 POWER4:0 Dimmer:0 Channel_0:0 Channel_1:0 Channel_2:0 Channel_3:0 Channel_4:0 HSBColor:0 Color:0
   model      tasmota_NSPanel_split
   readingList SmartHome/02_Kueche/tasmota_0C8DAC/tele/LWT:.* LWT
  SmartHome/02_Kueche/tasmota_0C8DAC/tele/LWT:Online {my $cmds=AttrVal('02_NSPanel_01','initConfig','');fhem("$cmds"); undef}
  SmartHome/02_Kueche/tasmota_0C8DAC/tele/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
  SmartHome/02_Kueche/tasmota_0C8DAC/tele/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
  SmartHome/02_Kueche/tasmota_0C8DAC/tele/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
  SmartHome/02_Kueche/tasmota_0C8DAC/tele/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
  SmartHome/02_Kueche/tasmota_0C8DAC/stat/POWER1:.* state
  SmartHome/02_Kueche/tasmota_0C8DAC/stat/RESULT:.* { $EVENT =~ m,\A..NSPanel.+id...(\d+).+params..(.+)..\z, ? json2nameValue($2,"Pan_${1}_",$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
   room       01_Buero
   setList    off:noArg    SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/POWER1 0
  on:noArg     SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/POWER1 1
  toggle:noArg SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/POWER1 2
  setOtaUrl:textField SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/OtaUrl $EVTPART1
  upgrade:noArg   SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/upgrade 1
  x_NSPSend_json:textField { my $payload = $EVENT;$payload =~ s/$EVTPART0 //g; qq(SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/NSPSend $payload)}
  x_NSPSend_delete:selectnumbers,1,1,8,0,lin SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/NSPSend {"index":$EVTPART1, "type":"delete"}
   setStateList on off toggle
   stateFormat <a href="http://IPAddress" target="_blank">
LWT
</a>
state
   userattr   initConfig
   webCmd     :


Über MQTT kommt:

SmartHome/02_Kueche/tasmota_0C8DAC/tele/RESULT
{"NSPanel":{"ctype":"group","id":"5","params":{"switch":"on","switches":[{"switch":"on","outlet":0}]}}}


Im Detail kann ich es mit aber erst heute Abend anschauen

Beta-User

OK, mind. den falschen Topic habe ich da erwischt... "tele" statt "stat"
Änderung ist im svn (ab morgen per update).
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

Guten Morgen.

Ein Update zu deinem Template. Ich habe dir, wie ich gerade sehe, nur die Hälfte verraten  :'(

Die Widgets werden jetzt richtig dargestellt:

SmartHome/02_Kueche/tasmota_0C8DAC/tele/RESULT
{"NSPanel":{"ctype":"group","id":"8","params":{"switch":"off","switches":[{"switch":"off","outlet":0}]}}}


Aber die beiden internen Schalter/Relais werden nicht mehr angezeigt. Diese laufen unter:

SmartHome/02_Kueche/tasmota_0C8DAC/stat/POWER1 off bzw.
SmartHome/02_Kueche/tasmota_0C8DAC/stat/POWER2 off

Jeweils mit on/off und nicht als json




Internals:
   CID        DVES_0C8DAC
   DEF        DVES_0C8DAC
   DEVICETOPIC SmartHome/02_Kueche/tasmota_0C8DAC/
   FUUID      61eb01ca-f33f-ed18-0794-c083ebcd73a5b0e5
   IODev      m2_Server
   LASTInputDev m2_Server
   MSGCNT     28
   NAME       02_NSPanel_01
   NR         789
   STATE      <a href="http://IPAddress" target="_blank">
LWT
</a>
off
   TYPE       MQTT2_DEVICE
   m2_Server_CONN m2_Server_172.16.20.10_49239
   m2_Server_MSGCNT 28
   m2_Server_TIME 2022-02-16 06:34:27
   JSONMAP:
     Channel_0  0
     Channel_1  0
     Channel_2  0
     Channel_3  0
     Channel_4  0
     Color      0
     Dimmer     0
     HSBColor   0
     POWER1     0
     POWER2     0
     POWER3     0
     POWER4     0
   OLDREADINGS:
   READINGS:
     2022-02-16 06:31:18   ANALOG_Temperature1 28.4
     2022-02-16 06:31:18   Berry_HeapUsed  18
     2022-02-16 06:31:18   Berry_Objects   394
     2022-02-16 06:31:18   ESP32_Temperature 53.9
     2022-02-16 06:31:18   Heap            133
     2022-02-16 06:24:34   IODev           m2_Server
     2022-02-16 06:31:18   LoadAvg         999
     2022-02-16 06:31:18   MqttCount       2
     2022-02-16 06:27:11   Pan_5_switch    off
     2022-02-16 06:27:11   Pan_5_switches_1_outlet 0
     2022-02-16 06:27:11   Pan_5_switches_1_switch off
     2022-02-16 06:29:28   Pan_8_switch    off
     2022-02-16 06:29:28   Pan_8_switches_1_outlet 0
     2022-02-16 06:29:28   Pan_8_switches_1_switch off
     2022-02-16 06:31:18   Sleep           0
     2022-02-16 06:31:18   SleepMode       Dynamic
     2022-02-16 06:31:18   TempUnit        C
     2022-02-16 06:31:18   Time            2022-02-16T06:31:18
     2022-02-16 06:31:18   Uptime          0T23:05:17
     2022-02-16 06:31:18   UptimeSec       83117
     2022-02-16 06:31:18   Wifi_AP         1
     2022-02-16 06:31:18   Wifi_BSSId      18:E8:29:57:46:15
     2022-02-16 06:31:18   Wifi_Channel    6
     2022-02-16 06:31:18   Wifi_Downtime   0T00:00:06
     2022-02-16 06:31:18   Wifi_LinkCount  1
     2022-02-16 06:31:18   Wifi_Mode       11n
     2022-02-16 06:31:18   Wifi_RSSI       92
     2022-02-16 06:31:18   Wifi_SSId       allnetIoT
     2022-02-16 06:31:18   Wifi_Signal     -54
     2022-02-16 06:26:06   associatedWith  02_NSPanel_01_CH2
     2022-02-16 06:26:06   attrTemplateVersion 20220215
     2022-02-16 06:34:27   state           off
     2022-02-16 06:26:05   subscriptions   SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/# SmartHome/02_Kueche/tasmotas/cmnd/# cmnd/DVES_0C8DAC_fb/#
Attributes:
   autocreate 0
   comment    Initial configuration is just an example. You may delete these parts if not needed. For more info see Forum Thread (https://forum.fhem.de/index.php/topic,125423.0.html) and Tasmota Template Repository (https://templates.blakadder.com/sonoff_NSPanel.html).
   devStateIcon Online:10px-kreis-gruen Offline:10px-kreis-rot
   devicetopic SmartHome/02_Kueche/tasmota_0C8DAC/
   event-on-change-reading NSPanel_params_switches_1_switch,POWER1,POWER2
   event-on-update-reading LWT,ANALOG_Temperature1
   genericDeviceType switch
   group      DEV
   icon       tradfri_filled_floalt
   initConfig set 02_NSPanel_01 x_NSPSend_delete 1; set 02_NSPanel_01 x_NSPSend_delete 2; set 02_NSPanel_01 x_NSPSend_delete 3; set 02_NSPanel_01 x_NSPSend_delete 4; set 02_NSPanel_01 x_NSPSend_delete 5; set 02_NSPanel_01 x_NSPSend_delete 6; set 02_NSPanel_01 x_NSPSend_delete 7; set 02_NSPanel_01 x_NSPSend_delete 8; set 02_NSPanel_01 x_NSPSend_json {"HMI_resources":[{"index":1,"ctype":"group","id":"1","uiid":1}]};
   jsonMap    POWER1:0 POWER2:0 POWER3:0 POWER4:0 Dimmer:0 Channel_0:0 Channel_1:0 Channel_2:0 Channel_3:0 Channel_4:0 HSBColor:0 Color:0
   model      tasmota_NSPanel_split
   readingList SmartHome/02_Kueche/tasmota_0C8DAC/tele/LWT:.* LWT
  SmartHome/02_Kueche/tasmota_0C8DAC/tele/LWT:Online {my $cmds=AttrVal('02_NSPanel_01','initConfig','');fhem("$cmds"); undef}
  SmartHome/02_Kueche/tasmota_0C8DAC/tele/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
  SmartHome/02_Kueche/tasmota_0C8DAC/tele/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
  SmartHome/02_Kueche/tasmota_0C8DAC/tele/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
  SmartHome/02_Kueche/tasmota_0C8DAC/tele/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
  SmartHome/02_Kueche/tasmota_0C8DAC/stat/POWER1:.* state
  SmartHome/02_Kueche/tasmota_0C8DAC/tele/RESULT:.* { $EVENT =~ m,\A..NSPanel.+id...(\d+).+params..(.+)..\z, ? json2nameValue($2,"Pan_${1}_",$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
   room       01_Buero
   setList    off:noArg    SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/POWER1 0
  on:noArg     SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/POWER1 1
  toggle:noArg SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/POWER1 2
  setOtaUrl:textField SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/OtaUrl $EVTPART1
  upgrade:noArg   SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/upgrade 1
  x_NSPSend_json:textField { my $payload = $EVENT;$payload =~ s/$EVTPART0 //g; qq(SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/NSPSend $payload)}
  x_NSPSend_delete:selectnumbers,1,1,8,0,lin SmartHome/02_Kueche/tasmota_0C8DAC/cmnd/NSPSend {"index":$EVTPART1, "type":"delete"}
   setStateList on off toggle
   stateFormat <a href="http://IPAddress" target="_blank">
LWT
</a>
state
   userattr   initConfig


Gruß

Beta-User

#36
Die Relays finden sich als "state" wieder, POWER2 dabei in dem anderen Device (=> beide kennen SetExtensions). Sehe daher nicht, dass das ein Problem wäre. in josnMap braucht man es afaik trotzdem, um regelmäßige Statusupdates "abzuleiten".

Schön, dass das Auspacken der Panel-Info soweit "ordentlich" klappt :) .

Wie gesagt: Mein persönlicher Angang für das ganze ginge in die Richtung, dass man Perl-Code dazu baut, der direkt aus dem JSON die Daten extrahiert und unmittelbare Schaltaktionen ableitet, wo eine Zuordnung bekannt ist. Sowas ähnliches mache ich mit meinen MiLight-Remotes, Code (die attrTemplate-Variante) wäre in diesem Thread zu finden: https://forum.fhem.de/index.php/topic,103493.0.html. "Irgendwo" (in einem userattr) könnte man die eigentliche Konfig verstecken (Panel-Id zu widget-Type zu FHEM-Zieldevice-Mimik).
Weiß noch nicht, wie das aussieht, wenn man mehrere Menüseiten hat, aber auch das sollte prinzipiell möglich sein.

Ist halt eine Fleißaufgabe...

Nachtrag noch: Für die "Gegenrichtung" würde es sich vermutlich auch anbieten, eine "standardisierte Verpackungslogik" zu vercoden, die dann mit Unterstützung von MQTT_GENERIC_BRIDGE das Panel mit den darzustellenden Ist-Zuständen aus den FHEM-Devices "füttert".
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

Brad Majors

#37
Hey, ich habe mir testweise auch mal das NSP gegönnt. Einbinden in FHEM hat soweit funktioniert.

Jetzt wäre meine erster Wunsch:

Ich würde gerne den eigentlich sinnfreien Temperatur Eintrag mit einem Wert meiner PV-Anlage ersetzen.
Sprich ich sehe was die Anlage momentan an Leistung bringt.

Anstelle jetzt 30°C steht dann 4250W. Ist das machbar?

Auf die beiden Schalter (oder später als Widget) lasse ich dann 2 SONOFF POW R3 (die können 25A) schalten.
Damit kann ich dann den Plugin in hybrid von mir und meiner Frau laden lassen. Wenn der zweite plugin hybrid irgendwan mal geliefert wird......


Wenn das dann läuft beschäftige ich mich mit den Widgets :).

PS: Momentan lasse ich die POW über einen do if schalten. Da FHEM aber nicht weiss welche sonstigen Geräte, Waschmaschine, Trockner usw. am laufen sind würde ich das gerne manuell entscheiden.

Und das NSP ist schneller bedient wie den Rechner öffnen, FHEM schauen, usw.

Raspberry Pi. * Eigenbau Nano Cul 433 und 866 * EnOcean TCM_3 * Netatmo * Max! Thermostate * SMA PV Inverter * Zigbee über ConBeeII / Phoscon

eszych

Hallo Zusammen!
Auch ich hatte mir das NS-Panel über die Kickstarter Kampagne besorgt. Ich hatte vor einiger Zeit schon einmal TASMOTA geflasht, aber dann keine Zeit und keine Muße mehr weiter zu machen.
Auch weil ich noch keinen wirklich guten Platz bei uns im Haus für das Teil gefunden hatte...
Einen Platz habe ich immer noch nicht, aber ich habe es inzwischen geschafft das Teil einigermaßen sinnvoll in FHEM einzubinden.
Eins vorweg, auch ich habe noch nicht auf das MQTT2 Module umgestellt, sondern nutze noch das alte MQTT Modul.
Eingebunden habe ich das Teil also über das MQTT-Modul als MQTT_Device:

defmod NS_Panel MQTT_DEVICE
attr NS_Panel DbLogExclude .*
attr NS_Panel IODev Mosquitto
attr NS_Panel autoSubscribeReadings /FHEM/nspanel/tele/+
attr NS_Panel genericDeviceType switch
attr NS_Panel group NS_Panel
attr NS_Panel icon max_wandthermostat
attr NS_Panel qos 2
attr NS_Panel retain 0
attr NS_Panel room Erdgeschoss,MQTT
attr NS_Panel stateFormat [$name:ANALOG_Temperature1] °C, [$name:Time:t]
attr NS_Panel subscribeReading_INFO1 /FHEM/nspanel/tele/INFO1
attr NS_Panel subscribeReading_INFO2 /FHEM/nspanel/tele/INFO2
attr NS_Panel subscribeReading_INFO3 /FHEM/nspanel/tele/INFO3
attr NS_Panel subscribeReading_LWT /FHEM/nspanel/tele/LWT
attr NS_Panel subscribeReading_RESULT /FHEM/nspanel/tele/RESULT
attr NS_Panel subscribeReading_SENSOR /FHEM/nspanel/tele/SENSOR
attr NS_Panel subscribeReading_STATE /FHEM/nspanel/tele/STATE


Die Readings bekomme ich über eine Expand-JSON:

defmod EXPJS_NSPANEL expandJSON NS_Panel:.*
attr EXPJS_NSPANEL DbLogExclude .*
attr EXPJS_NSPANEL group EXP-JSON
attr EXPJS_NSPANEL room FHEM


Das Schalten der beiden eingebauten Relais kann direkt erfolgen, dazu habe ich einfach zwei MQTT Devices angelegt - hier die Definition eines der beiden:

defmod NS_Panel_Power_1 MQTT_DEVICE
attr NS_Panel_Power_1 DbLogExclude .*
attr NS_Panel_Power_1 IODev Mosquitto
attr NS_Panel_Power_1 devStateIcon OFF:light_ceiling@white ON:light_ceiling@yellow
attr NS_Panel_Power_1 genericDeviceType light
attr NS_Panel_Power_1 group NS_Panel
attr NS_Panel_Power_1 icon light_ceiling
attr NS_Panel_Power_1 publishSet on off toggle /FHEM/nspanel/cmnd/POWER1
attr NS_Panel_Power_1 qos 2
attr NS_Panel_Power_1 retain 0
attr NS_Panel_Power_1 room Erdgeschoss,MQTT
attr NS_Panel_Power_1 subscribeReading_INFO2 /FHEM/nspanel/stat/RESULT
attr NS_Panel_Power_1 subscribeReading_state /FHEM/nspanel/stat/POWER1
attr NS_Panel_Power_1 webCmd on:off:toggle


Die Widgets waren eine Herausforderung! Ich hatte mit Node-Red experimentiert, bin dann aber wieder auf ein Notify zurück.
Da ich die ganzen Readings schon über das EXP-JSON im MQTT-Device habe, kann ich im Notify auf die ID des Widgets triggern:

NS_Panel:NSPanel_id:.* {
my $SwitchID = (ReadingsVal("NS_Panel", "NSPanel_id", 0));;
my $SwitchState = (ReadingsVal("NS_Panel", "NSPanel_params_switch", 0));;
my $Switch01State = (ReadingsVal("NS_Panel", "NSPanel_params_switches_01_switch", 0));;
my $Switch02State = (ReadingsVal("NS_Panel", "NSPanel_params_switches_02_switch", 0));;
my $Switch03State = (ReadingsVal("NS_Panel", "NSPanel_params_switches_03_switch", 0));;
my $Switch04State = (ReadingsVal("NS_Panel", "NSPanel_params_switches_04_switch", 0));;

{Log 1, "Das Device $NAME hat ausgeloest, der Event sah so aus: $EVENT"};
{Log 1, "Das Device $NAME hat ausgeloest, Switch-ID: $SwitchID"};
{Log 1, "Das Device $NAME hat ausgeloest, Switch-State: $SwitchState"};


fhem("set NS_Panel inactive");;

if ( "$SwitchID" eq "1") {
}

if ( "$SwitchID" eq "2") {
}

if ( "$SwitchID" eq "3") {
}

if ( "$SwitchID" eq "4") {
}

if ( "$SwitchID" eq "5") {
{Log 1, "Das Device $NAME hat ausgeloest, Switch-01-State: $Switch01State"};
{Log 1, "Das Device $NAME hat ausgeloest, Switch-02-State: $Switch02State"};
{Log 1, "Das Device $NAME hat ausgeloest, Switch-03-State: $Switch03State"};
{Log 1, "Das Device $NAME hat ausgeloest, Switch-04-State: $Switch04State"};
my $mqttstring = '{"NSPanel":{"ctype":"group","id":"' . $SwitchID . '","params":{"switches":[{"switch":"' . $Switch01State . '","outlet":0},{"switch":"' . $Switch02State . '","outlet":1},{"switch":"' . $Switch03State . '","outlet":2},{"switch":"' . $Switch04State . '","outlet":3}]}}}';
# {Log 1, "Das Device $NAME hat ausgeloest, MQQT Response: $mqttstring"};
if ( "$Switch01State" eq "on") {
fhem("set HM_AKT_Steckdose on");;
fhem("set Mosquitto publish /FHEM/nspanel/cmnd/nspsend $mqttstring");;
}
if ( "$Switch01State" eq "off") {
fhem("set HM_AKT_Steckdose off");;
fhem("set Mosquitto publish /FHEM/nspanel/cmnd/nspsend $mqttstring");;
}
if ( "$Switch02State" eq "on") {
fhem("set HP_Akt_Steckdose on");;
fhem("set Mosquitto publish /FHEM/nspanel/cmnd/nspsend $mqttstring");;
}
if ( "$Switch02State" eq "off") {
fhem("set HP_Akt_Steckdose off");;
fhem("set Mosquitto publish /FHEM/nspanel/cmnd/nspsend $mqttstring");;
}
}

if ( "$SwitchID" eq "6") {
}

if ( "$SwitchID" eq "7") {
}

if ( "$SwitchID" eq "8:") {
}
#
fhem("set NS_Panel active");;
}


Wie ihr seht ist das ganze noch nicht fertig und ich habe erst einen Mehrfach-Schalter umgesetzt.
Wichtig ist es den Status an das NS-Panel zurück zu schicken, sonst springt bei einem Mehrfach-Schalter-Widget die Anzeige wieder auf "off".
Was mir noch fehlt ist ein Automatismus, der bei "manuellem" Schalten der eingebundenen Devices - in meinem Fall die Steckdosen - auch der Status im NS-Panel aktualisiert wird.
Das läßt sich natürlich auch mit einem Notify lösen - aber irgendwann verliert man so wohl den Überblick über alles...

Verbesserungsvorschläge sind herzlich wilkommen!

Viel Spaß beim "nachbauen"  ;)
Raspberry Pi 2 - FHEM 5.7
HM-LAN, HM-CFG-USB-2
HM-Sec-SCo, HM-Sec-SC-2, HM-TC-IT-WM-W-EU,
HM-LC-SW4-DR, HM-LC-Sw1-DR, HM-ES-PMSw1-DR,    
HM-ES-PMSw1-Pl - Rademacher Hompilot DuoFern

guck123

Hallo zusammen,

ich arbeite da mit zwei Doif. Einen für die Steuerung aller Geräte und einen für den Widget Status aller Geräte. Ist recht übersichtlich so.

Als Beispiel:

doif_steuerung

([MQTT2_DVES_E8187C:Pan_1_switch] eq "on") (set MQTT2_shelly1_F42015 on)
DOELSEIF
([MQTT2_DVES_E8187C:Pan_1_switch] eq "off") (set MQTT2_shelly1_F42015 off)
DOELSEIF
([MQTT2_DVES_E8187C:Pan_2_switch] eq "on") (set HM_6A472D on)
DOELSEIF
([MQTT2_DVES_E8187C:Pan_2_switch] eq "off") (set HM_6A472D off)

Doif_status Update:

   
([MQTT2_shelly1_F42015:state] eq "on") (set MQTT2_DVES_E8187C x_NSPSend_json {"relation":{"id":"1","params":{"switch":"on"}}})
DOELSEIF
([MQTT2_shelly1_F42015:state] eq "off") (set MQTT2_DVES_E8187C x_NSPSend_json {"relation":{"id":"1","params":{"switch":"off"}}})

Grüße,

Denis