MQTT2+Shelly: erste Konfiguration und template-Entwicklung

Begonnen von miggun, 03 Dezember 2018, 21:05:34

Vorheriges Thema - Nächstes Thema

87insane

#480
Das meinte ich...auf die Ampel bezogen (devstateicon). Das geht auch bei ALLEN shellys. Getestet hatte ich das mit einem 1pm. Aber die möglichkeit des FW Updates in der Form, haben alle.

Beitrag 467

Aktuell fehlt das noch ganz.

Gesendet von meinem LG-H850 mit Tapatalk

Beta-User

Habe eben ein update ins svn geschubst mit der "Ampel", dem loadState für den pm und dem Washer-Example. Wenn da jemand noch Verbesserungsbedarf sieht: her damit.

Kann nur sagen, dass das auf meiner Testinstallation (ohne Hardware) jeweils fehlerfrei durchlief, nicht aber, ob es auch jeweils passende und optisch ansprechende Ergebnisse liefert... ::)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

#482
Hey...gucken / testen geht erst am WE. Aber da ich ja gerade was die Optik angeht immer was habe, werde ich mich auch melden. Kann das dann auch direkt mit einem shelly testen.

Danke für deine Akzeptanz der Ampel gegenüber. Bin gespannt wie du sie genau übernommen hast. Aber sehe ich dann ja alles.

Ps: die Ampel geht bei allen Shelly's.

Gesendet von meinem LG-H850 mit Tapatalk

Magic01

Hi,

ich habe das gerade mal versucht mit dem Washer Example zum laufen zu bekommen.
2 Anmerkungen schon mal:
a) Die Anmerkung mit dem Limit ist irreführend - es gibt kein $limit - da steht nur ein Wert den man ändern muss.
Habe lange gesucht bis ich gefunden habe was das sein soll.
b) In den User Readings wurde immer wieder ein Wert total abgefragt - total gibt es so nicht - muss das nicht relay_0_energy sein?

Ansonsten bin ich noch am testen...

87insane

Schick mal ein list deines Gerätes. Limit ist in der tat eher schwellwert. Aus umgekehrter Sicht wäre das limit. Aber du hast es ja geschafft.

Du brauchst einen Strompreis Dummy. Ich selber fand das auch eher semi, da ich das lieber im Gerät eingebe. Aber das würde ich bei mehreren Geräten auch in einem dummy lösen. Habe nur zwei und deswegen ist mir das egal.

Was total angeht bin ich gespannt was du genau meinst. Das list wird es auflösen.

Gesendet von meinem LG-H850 mit Tapatalk


Magic01

Hi,

gerne - also ich habe gerade noch mal einem device das template zugewiesen.
Raus kam das:


Internals:
   CID        shelly1pm-BA129A
   DEF        shelly1pm-BA129A
   DEVICETOPIC MQTT2_shelly1pm_BA129A
   FUUID      5d9a501e-f33f-06ad-c234-9c6763307952b990
   IODev      mqtt2Client
   LASTInputDev mqtt2Client
   MSGCNT     4408
   NAME       MQTT2_shelly1pm_BA129A
   NR         698
   STATE      on
   TYPE       MQTT2_DEVICE
   mqtt2Client_MSGCNT 4408
   mqtt2Client_TIME 2019-10-10 19:01:25
   Helper:
     DBLOG:
       command:
         DBLogging:
           TIME       1570726605.19086
           VALUE      announce
       fw_ver:
         DBLogging:
           TIME       1570726605.25411
           VALUE      20190821-095324/v1.5.2@4148d2b7
       id:
         DBLogging:
           TIME       1570726605.25411
           VALUE      shelly1pm-BA129A
       input0:
         DBLogging:
           TIME       1570726671.18166
           VALUE      0
       ip:
         DBLogging:
           TIME       1570726605.25411
           VALUE      10.0.0.41
       loadState:
         DBLogging:
           TIME       1570726680.03801
           VALUE      off
       mac:
         DBLogging:
           TIME       1570726605.25411
           VALUE      A4CF12BA129A
       new_fw:
         DBLogging:
           TIME       1570726605.25411
           VALUE      false
       online:
         DBLogging:
           TIME       1570726605.22177
           VALUE      true
       overtemperature:
         DBLogging:
           TIME       1570726671.34154
           VALUE      0
       price:
         DBLogging:
           TIME       1570726680.03801
           VALUE      0.00
       relay0:
         DBLogging:
           TIME       1570726671.14938
           VALUE      on
       relay_0_energy:
         DBLogging:
           TIME       1570726885.53332
           VALUE      21105
       relay_0_kWh:
         DBLogging:
           TIME       1570726885.53332
           VALUE      0.35
       relay_0_power:
         DBLogging:
           TIME       1570726885.50512
           VALUE      88.61
       state:
         DBLogging:
           TIME       1570726671.14938
           VALUE      on
       temperature:
         DBLogging:
           TIME       1570726671.27822
           VALUE      61.00
       temperature_f:
         DBLogging:
           TIME       1570726671.31159
           VALUE      141.80
       time:
         DBLogging:
           TIME       1570726680.03801
           VALUE      00:01
       total_temp:
         DBLogging:
           TIME       1570726581.13883
           VALUE      0
       wash:
         DBLogging:
           TIME       1570726680.03801
           VALUE      0
   OLDREADINGS:
   READINGS:
     2019-10-10 18:56:45   associatedWith  MQTT2_GeneralBridge
     2019-10-10 18:56:45   command         announce
     2019-10-10 18:56:45   fw_ver          20190821-095324/v1.5.2@4148d2b7
     2019-10-10 18:56:45   id              shelly1pm-BA129A
     2019-10-10 18:57:51   input0          0
     2019-10-10 18:56:45   ip              10.0.0.41
     2019-10-10 18:57:59   loadState       off
     2019-10-10 18:56:45   mac             A4CF12BA129A
     2019-10-10 18:56:45   new_fw          false
     2019-10-10 18:56:45   online          true
     2019-10-10 18:57:51   overtemperature 0
     2019-10-10 18:57:59   price           0.00
     2019-10-10 18:57:51   relay0          on
     2019-10-10 19:01:25   relay_0_energy  21105
     2019-10-10 19:01:25   relay_0_kWh     0.35
     2019-10-10 19:01:25   relay_0_power   88.61
     2019-10-10 18:57:51   state           on
     2019-10-10 18:57:51   temperature     61.00
     2019-10-10 18:57:51   temperature_f   141.80
     2019-10-10 18:57:59   time            00:01
     2019-10-10 18:56:21   total_temp      0
     2019-10-10 18:57:59   wash            0
Attributes:
   IODev      mqtt2Client
   alias      Spülmaschine
   comment    Adopt $limit in readingList to your needs to get appropriate loadState changes; using a seperate device named kWh_Price indicating actual energy price in state will lead to realistic price results.
   devStateIcon { my $amp = ReadingsVal($name,"online","false") eq "false" ? "rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen";; my $pic = ReadingsVal($name,"loadState","") eq "on"?'scene_laundry_room_fem@green':'scene_laundry_room_fem';; my $text = ReadingsVal($name,"loadState","") eq "on"?"Waschmaschine läuft - Aktuell: ".ReadingsVal($name,"power","")." W":'Standby';; my $show = "$amp" eq "gelb" ? "<a href=\"/fhem?cmd.dummy=set $name x_update&XHR=1\">".FW_makeImage("10px-kreis-".$amp)."</a>" : "<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage("10px-kreis-".$amp)."</a>";; "<div> $show ".FW_makeImage($pic)." $text </div>" }
   model      shelly1_w_energy_meassuring_washer_example
   readingList shellies/shelly1pm-BA129A/relay/0:.* state
  shellies/shelly1pm-BA129A/relay/0:.* relay0
  shellies/shelly1pm-BA129A/input/0:.* input0
  shellies/shelly1pm-BA129A/online:.* online
  shellies/announce:.* { $EVENT =~ m,..id...shelly1pm-BA129A...mac.*, ? json2nameValue($EVENT) : undef }
  shellies/shelly1pm-BA129A/announce:.* { json2nameValue($EVENT) }
  shellies/shelly1pm-BA129A/relay/0/power:.* relay_0_power
  shellies/shelly1pm-BA129A/relay/0/power:.* { my $compare = $EVTPART0 < 100 ? "off":"on"; ReadingsVal($NAME,"loadState","off") ne $compare ? { 'loadState' => $compare } : undef }
  shellies/shelly1pm-BA129A/temperature:.* temperature
  shellies/shelly1pm-BA129A/overtemperature:.* overtemperature
  shellies/shelly1pm-BA129A/relay/0/energy:.* relay_0_energy
  shellies/shelly1pm-BA129A/relay/0/energy:.* {'relay_0_kWh' => sprintf("%.2f",$EVENT/60/1000)}
  shellies/shelly1pm-BA129A/longpush/0:.* longpush_0
shellies/shelly1pm-BA129A/temperature_f:.* temperature_f
shellies/shelly1pm-BA129A/command:.* command
   room       Kueche
   setList    relay0:on,off,toggle shellies/shelly1pm-BA129A/relay/0/command $EVTPART1
  off:noArg shellies/shelly1pm-BA129A/relay/0/command off
  on:noArg shellies/shelly1pm-BA129A/relay/0/command on
  x_update:noArg shellies/shelly1pm-BA129A/command update_fw
  x_mqttcom shellies/shelly1pm-BA129A/command $EVTPART1
   userReadings total_temp:loadState:.on { ReadingsNum("$name","total",0) },wash:loadState:.off { ReadingsNum("$name","total",0) - ReadingsNum("$name","total_temp",0) },price:loadState:.off {sprintf("%.2f",ReadingsNum("$name","wash",1)*ReadingsNum("kWh_Price","state",0.30))},time:loadState:.off {strftime("%H:%M", localtime(ReadingsAge("$name","total_temp",0)-3600))}


Also im devStateIcon gibt es: ReadingsVal($name,"power","") -> Power gibt es nicht - höchstens relay_0_power
In den userReadings steht  ReadingsNum("$name","total",0) } -> liest also den Wert total - auch den gibt es nicht.

87insane

Spontan fällt mir auf...
Mach mal bei dem 1pm erst das 1pm Template drauf. Danach dann das washer Template.

Die readings die dir fehlen sind umrechnungen usw. Die kommen mit dem 1pm Template zb. Habe aktuell nur mein handy und nicht zu 100% im Kopf was in welchem Template steht. Teste erst mal so..

Morgen schaue ich mir das am pc an. Kann auch sein das da readings durcheinander gekommen sind. Beta-User macht das was wir ihm mit teilen. Er hat dafür keine Hardware. Ich benenne gerne um und habe eine leicht andere Struktur. Ich hoffe nicht das ich den Test schalter nicht zurück gesetzt hatte aber das sehe ich dann ja nach deinem Test oder aber morgen, wenn ich nochmal teste.

Ach ja...dein Firmware stand ist aktuell?

Gesendet von meinem LG-H850 mit Tapatalk


Guzzi-Charlie

Hi,
wenn man den Shelly im WEB-IF mit .../status aufruft, dann ist die Leistung [W] dort tatsächlich mit "power" und die Energie [kWh] mit "total" bezeichnet.
- RasPi 5: Cuno-V2 -2x KS300,JeeLink -13x EC3000
- Stromzähler: 6x SDM120M,9x XTM100A,38x DRS110M,3x eHz
- LAN: IT-GW 34x RMF-R1(Roll-Mot.),- 1x Loxone MSgo
- WLAN: 89x Shelly,12x Gosund SP111,16x D1-Mini,15x Sonoff Basic,85x 1wire T-Sens.
- DECT: 6x DECT200,11x DECT301,-HmIP: 3x FalmotC12,16x WTH2

87insane

#488
Nochmal ich...schreib mal in die userReadings anstelle von total -> relay_0_kWh

Dann sollte es passen. Zumindest am Handy sehe ich das so.

Nicht das die schon wieder was an den mqtt readings angepasst haben.

Edit: und wie du selber gesehen hast anstelle von Power eben relay_0_power im devstateicon. Die readings müssen natürlich überall passen. Ich selber teste wie gesagt morgen nochmal mit neuster FW. Du selber hast die Lösungen ja schon gefunden.

Gesendet von meinem LG-H850 mit Tapatalk

Magic01

 

Beim Modell shelly1_w_energy_meassuring wird zwar in devStateIcon total definiert, aber nur als lokale Variable (my ...)

devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "true"?"10px-kreis-gruen":"10px-kreis-rot";; my $light = ReadingsVal($name,"state","off");; my $cons = ReadingsVal($name,"relay_0_power","unknown");; my $total = ReadingsVal($name,"relay_0_kWh","unknown");; my $temp = ReadingsVal($name,"temperature","-100");;"<a href=\"http://".ReadingsVal($name,"ip","none")." \"target=\"_blank\">".FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a><div>Verbrauch: $cons / Total: $total/ Temp: $temp °C</div>"}

Wenn ich ein anderes Template anwende, sind die alten Readings im übrigen auch wieder gelöscht ..

Ja, ich weiß, dass ich das total ersetzten muss - war ja die Anmerkung aus meinem Post hier etwas früher heute.

Ps: FW und Fhem sind uptodate.


87insane

#490
Da du das alles ja gut nachvollziehen kannst, muss ich ja nix mehr testen. So brauche ich keinen neuen shelly Auspacken usw..

Poste doch einfach ein Beispiel in Form vom Template und teste das kurz. Dann kann Beta-User das direkt einchecken.

Hier kommen verschiedene Fakten zusammen. Verschiedene readings und auf unserer so wie shelly Seite Updates. Die änderungen hast du gefunden und darfst es gerne zuende bringen :)

Zudem kann man ggf $limit anders einbauen. Bei mir heist das einfach swert für schwellwert. Mir ist es am ende egal wie es heist. Ich selber habe eh auch andere readings und setter in der Wasch Maschine. Ist auch viel Geschmacks sache. Die templates sollen ja animieren und verständlich machen :) bei mir hatte das damals funktioniert

Bezüglich der Templates und dem "löschen" der readings. Ist normal. Zum testen kopiere ich mir sowas dann einfach aus der Template Datei heraus. Macht ja auch Sinn, weil sonst viel Müll nach dem x Template in einem Gerät stünde.

Danke für deine Unterstützung :)

Gesendet von meinem LG-H850 mit Tapatalk

Beta-User

#491
Habe eben (u.a.) ein update dazu ins svn geschoben, bitte um Rückmeldung, ob es jetzt tut wie erwartet...

(Und auch den überholten comment geändert; das mit "$limit" war zu lang für attrTemplate. Dazu gibt es den weiteren Hnweis, dass man für eine rein "lokale" Auswertung auch schlicht den default-Wert anpassen kann oder eine andere Info auswerten...
Ich finde es nicht gut, _eine_ Info, die sich zentral ändert, bei vielen Devices lokal vorzuhalten, sowas ist mMn nicht "best practice". Aber wer Argumente hat (außer: ich habe das aber bisher anders gemacht...), darf die gerne vortragen, sonst bitte ich schlicht um Stillschweigen :P ).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

Super!

Ich glaube sogar fast das ich mit an dem Debakel schuld bin. Ich meine es waren nur zwei Readings und Magic01 hat dies zum Glück auch selber erkennen können.
Vermutlich habe ich bei den ganzen Updates iwas durcheinander gehauen. Lustig ist das bei mir (ohne manuell Umbenennung) die Readings immer noch so rein flattern (wie sie anscheinend nun falsch sind).

Danke für die Unterstützung @Magic01 und danke @Beta-User für das schnelle handeln. So habe ich ein To-Do weniger auf der Liste für das WE :)

Beta-User

 :)

Unter "Debakel" verstehe ich allerdings was anderes... Ist nur "unschön", wenn es nicht auf's erste Mal funktioniert, aber es sind "neue", nicht lebenswichtige Funktionen, da darf schon mal nachgearbeitet werden, oder?

(Viele der templates sind genau so entstanden: erste Versuche, einige Schleifen, "blöde" Rückfragen und letztendlich große Zufriedenheit bei den vielen, die das dann am Ende "einfach so" verwenden können :) . Daher nehme ich auch hin und wieder was "unfertiges" auf, wie jüngst das OpenMQTTGateway; wer Bluetooth-Tags hat (oder eine Xiaomi-BT-Waage) könnte das mal ausprobieren und Rückmeldung geben... Man nimmt dafür am einfachsten einen ESP32 für ca. 5 €; auch für _manche_ RF-Devices scheint das die einfachste Lösung zu sein).

Als Anregung: meine Testbitten sind ernst gemeint, das geht in der Regel völlig  gefahrlos mit einer Kopie... ;D
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

87insane

Hey nochmal....

testen tue ich das selbstverständlich. Wenn aber zwischenzeitlich Änderungen eintreten oder aber mehrere Updates (wie nun mit Ampel, Washer usw.) kommen, kann mal was durcheinander geraten. Beim nächsten mal sollte ich eben nicht drei Sachen gleichzeitig machen. Ich gelobe Verbesserungen.

Anderes Thema...
Aktuell arbeite ich an einem Win MQTT Skript. Das ist auch erstmal fertig für meine Sache aber ich würde das aufbohren wollen. Ideen sammel ich noch. Das Forum dazu hattest du auch schon gesehen. Könnte ich dafür am Ende ggf. auch ein Template liefern? Bisher ist das noch nicht so wild, da ich noch nicht genug Ideen habe aber am Ende sollte es ggf. interessant werden für einige Personen. Gerade mit MQTT ist es (in meinen Augen) viel einfacher als über HTTP, Kommandos an FHEM zu senden.