[gelöst] Shelly Plus 1 - Anbindung

Begonnen von smoudo, 26 Dezember 2021, 15:58:21

Vorheriges Thema - Nächstes Thema

87insane

Bevor alle im dunklen tappen....

Sinnig ist es eben die Werte auch sauber in FHEM zu haben. Ein gutes Beispiel ist z.B. ein Heizkörper Thermostat. Natürlich kann ich die vom Hersteller gesendeten Werte xyz darin belassen. Aber wenn diese für die gewünschte Temperatur nicht desired-temp oder desiredTemperature sind, würde ich diese entsprechend biegen. Dahinter steht noch eine ganze Latte die sonst wieder angepasst werden müsste. Allterco geht hier leider wieder einen (in meinen Augen) komplett eigenen Weg, der in einigen Szenarien echt nervt!

Ich denke Beta-User will hier nochmal aufzeigen das es mehr Sinn macht, die Werte direkt sauber zu machen und nicht einfach nur das devStateIcon an zu passen. Natürlich geht das aber ich glaubte das in meinen Beispielen seie das klar rüber gekommen. Die Probleme die hier alle hatten waren reine copy&paste Themen. Gebündelt mit nicht klaren attributen (RAW/nicht RAW).

Wenn wir alle nochmal ein paar Schritte zurück gehen und an die jsonmap denken, da wird das ganze doch ein wenig besser :) Auch die readingsList ist ggf zu überdenken.

ak323

#61
Zitat von: Helmi55 am 06 Januar 2022, 13:38:40
Hallo 87insane

Danke für das neue Template!
Habe soeben ein update in FHEM gemacht und nun sieht es super aus
Hier ein aktuelles RAW von meinem plus1pm
defmod PVAnlage MQTT2_DEVICE shellyplus1pm_44179394cab4
attr PVAnlage devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot': ReadingsVal($name,'new_fw','false') eq 'true' ? '10px-kreis-gelb' : '10px-kreis-gruen';; $onl = FW_makeImage($onl);; my $light = FW_makeImage(ReadingsVal($name,'state','off'));; my $cons = ReadingsNum($name,'apower',0);; my $total = round(ReadingsNum($name,'aenergy_total',0)/1000,1);; my $temp = ReadingsVal($name,'temperature','-100');; my $ip = ReadingsVal($name,'ip','none');; qq(<a href="http://$ip"target="_blank">${onl}</a><a href="/fhem?cmd.dummy=set $name toggle&XHR=1">${light}</a><div>Verbrauch: $cons W / Total: $total kwh / Temp: $temp °C</div>)}
attr PVAnlage devicetopic shellyplus1pm-44179394cab4
attr PVAnlage event-on-change-reading .*
attr PVAnlage icon message_socket
attr PVAnlage jsonMap switch_state:state params_switch_0_aenergy_total:aenergy_total switch_apower:apower switch_temperature_tC:temperature switch_temperature_tF:0 params_wifi_sta_ip:ip
attr PVAnlage model shellyPlus_1pm
attr PVAnlage readingList $DEVICETOPIC/online:.* online\
  $DEVICETOPIC/events/rpc:.* { json2nameValue($EVENT,'',$JSONMAP) }\
  $DEVICETOPIC/status/mqtt:.* { json2nameValue($EVENT, 'mqtt_', $JSONMAP) }\
  $DEVICETOPIC/status/sys:.* { json2nameValue($EVENT, 'sys_', $JSONMAP) }\
  $DEVICETOPIC/status/switch_0:.* { $EVENT =~ s/"output":true/"state":"on"/g;; $EVENT =~ s/"output":false/"state":"off"/g;; json2nameValue($EVENT, 'switch_', $JSONMAP) }\
  fhem2shelly/rpc:.* {}
attr PVAnlage room PV Anlage,MQTT2_DEVICE
attr PVAnlage setList toggle:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Toggle","params": {"id":0}}\
  off:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false}}\
  on:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true}}\
  on-for-timer $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true,"toggle_after":$EVTPART1}}\
  x_update:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Shelly.Update","params": {"stage":"stable"}}\
  x_reboot:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Shelly.Reboot"}
attr PVAnlage setStateList on off toggle
attr PVAnlage userReadings relay_0_energy_kWh:params_switch_0_aenergy_total.* monotonic {ReadingsVal($NAME,"params_switch_0_aenergy_total",0)/1000.0}, Ertrag:relay_0_energy_kWh.* { sprintf("%.2f",(ReadingsVal($NAME,"relay_0_energy_kWh",0) - 0.00)*.2);;;;}
attr PVAnlage webCmd :


Es erscheint auch die Weboberfläche des Shellies beim Klick auf den grünen Punkt

Danke für deine Zeit und Hilfe - vor allem Geduld mit den Unwissenden

Helmut

Hallo Helmut,
Dein RAW hat mir mit meinem 1pm weitergeholfen. Ich kann den Switch setzen (an/aus), jedoch bekomme ich scheinbar keine Readings. Auf meinem Mosquitto Server kommen die aber schön regelmäßig an ...

shellyplus1pm-3c1111111111111/status/switch:0 {"id":0, "source":"MQTT", "output":true, "apower":23.2, "voltage":227.3, "current":0.270, "aenergy":{"total":803.459,"by_minute":[385.636,393.934,403.697],"minute_ts":1664088419},"temperature":{"tC":46.0, "tF":114.8}}

Mir ist auch aufgefallen, daß mein ShellyPlus1pm das Topic "switch:0" sendet ... in der Definition aber "switch_0" definiert ist ...das passt auch irgendwie nicht.
Shelly hat die Firmware 0.11.1

Hat vielleicht jemand eine Idee ?
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

Beta-User

Zitat von: ak323 am 25 September 2022, 07:51:04
Mir ist auch aufgefallen, daß mein ShellyPlus1pm das Topic "switch:0" sendet ... in der Definition aber "switch_0" definiert ist ...das passt auch irgendwie nicht.
Jedenfalls bei MQTT2_SERVER  ist das nicht das Problem; MQTT2_DEVICE nutzt den Doppelpunkt, um CID, Topic und Payload zu trennen, daher werden Doppelpunkte im Topic vor dem Vergleichen mit den readingList-Einträgen ersetzt.
Und wenn MQTT2_CLIENT nicht speziell konfiguriert wurde, abonniert der auch "alles", so dass das ggf. nicht das Problem sein sollte...

Zitat
Hat vielleicht jemand eine Idee ?
Ja.
1. https://forum.fhem.de/index.php/topic,112327.0.html
2. Es gibt eine neuere Fassung des attrTemplate (das ist hier aber nicht das Problem). Also bei Fragen zu  sowas bitte nicht hergehen, und hier copy/paste irgendwas übernehmen, sondern schauen, was es neues gibt und ob das hilft...
(Sobald mal ein Device konfiguriert ist, müßte es auch mit attrTemplate bzw. dem Auflösen der diversen Variablen klappen, wenn MQTT2_CLIENT im Einsatz ist. Man muss nur aufpassen, dass das Device nicht vorher komplett kaputt war und derselbe Fehler wieder weiterkopiert wird).
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

ak323

Zitat von: Beta-User am 25 September 2022, 09:14:08
Jedenfalls bei MQTT2_SERVER  ist das nicht das Problem;

Darum geht es bei meiner Frage ja nicht ... sondern um Mosquitto ...
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

Beta-User

Zitat von: ak323 am 25 September 2022, 09:20:33
Darum geht es bei meiner Frage ja nicht ... sondern um Mosquitto ...
Das ist eine sehr aufschlussreiche Antwort auf die hinter dieser Aussage stehenden Frage:
Zitat von: Beta-User am 25 September 2022, 09:14:08
Und wenn MQTT2_CLIENT nicht speziell konfiguriert wurde, abonniert der auch "alles", so dass das ggf. nicht das Problem sein sollte...
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

ak323

ich sehe hier nix Spezielles ...

define meinMQTT2Client MQTT2_CLIENT 192.168.1.1:1883
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

Beta-User

a) Ersetze bitte den Unterstrich im Topic mit einem Punkt und
b) beobachte den MQTT-Verkehr an "meinMQTT2Client" ("Show MQTT traffic", das kannst du ggf. mit Filter-Argumenten beschränken auf das, was dieses MQTT2_DEVICE benötigt).

Es muss in b) was passendes reinkommen, und wenn das dann mit dem Punkt (beliebiges Zeichen) aus a) im Device sauber aufgelöst wird, muss ich mir mal den Code von CLIENT näher ansehen...

c) [OT] Code-Tags wären v.a. für längere Schnippsel hilfreich ;)
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

ak323

Ich kann den ShellyPlus1pm per MQTT schalten

zu a) Geändert auf . aber es passiert nix
zu b) Da sehe ich nichts
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

Beta-User

Zitat von: ak323 am 25 September 2022, 10:48:41
Ich kann den ShellyPlus1pm per MQTT schalten

zu a) Geändert auf . aber es passiert nix
zu b) Da sehe ich nichts
Klar ist, wenn b) nicht klappt, ist irgendwas faul, es kommt nichts zurück, dann bringt a) auch keine Verbesserung. Komisch ist dabei nur, dass das Schalten klappt, von daher _müßte_ die IODev-Zuweisung eigentlich passen.

Ansonsten ist meine Glaskugel blind...
Zitat von: Beta-User am 25 September 2022, 09:14:08
1. https://forum.fhem.de/index.php/topic,112327.0.html
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

maddhin

bei mir kommt als state beim Shelly Plus 1 immer "OK" und nicht on/off und das Glühbirnensymbol. Kann man das irgendwie ändern?

TomLee

Zitat von: maddhin am 02 Oktober 2022, 21:55:54
bei mir kommt als state beim Shelly Plus 1 immer "OK" und nicht on/off und das Glühbirnensymbol. Kann man das irgendwie ändern?

siehe vorheriges, letztes Zitat und die Bemerkung dazu ...