MQTT2+Shelly: erste Konfiguration und template-Entwicklung

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

Vorheriges Thema - Nächstes Thema

draddy

mehrfach, das spiel kannte ich ja vom "in_mode" noch zugenüge ^^
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

Beta-User

Hmm, ist dieser Topic in ignoreRegexp am IO zu finden?
Es gibt mind eine weitere M2D-Instanz, die diesen Topic abonniert :-[ .

Da müßte man also auch noch was bauen, was individuell pro Shelly ist, M...!! Unschön. Muss vermutlich mal drüber nachdenken, was da die beste Lösung sein könnte, aber vielleicht fällt noch jemand anderem was ein?
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

draddy

da hab ich wieder was ausgelöst ...

wenn du was von meiner seite brauchst, meld dich, wenn mir noch was ein oder auffällt meld ich mich - sonst hoffen wir mal auf die anderen klugen köpfe ^^

irgendwie mit nem mapping können wir das nicht fixen oder?
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

Beta-User

Zitat von: draddy am 14 März 2022, 14:38:48
da hab ich wieder was ausgelöst ...
Es ist nicht soooo dramatisch, eher eine Fleiß-Aufgabe...

Zitat
irgendwie mit nem mapping können wir das nicht fixen oder?
Nein, jedenfalls nicht direkt.

Das "Problem": Wir können angeben, wohin wir eine Antwort haben wollen, wenn eine Anweisung per MQTT an so einen 2nd gen. Shelly rausgeht. Siehe auch die Beispiele in https://shelly-api-docs.shelly.cloud/gen2/HOWTO/MQTTSetup.
Bisher verwenden wir dafür einen "Einheits-Kenner", weil wir die Antwort an sich nicht brauchen - jedenfalls dann nicht, wenn wirklich geschaltet wird. Dann bekommen wir nämlich die Info über einen anderen Topic.

Jetzt stellt sich raus, dass wir in einigen sehr begrenzten Fällen die Infos doch brauchen könnten.
Ergo müßte man
- einen "unique"-Topic festlegen, auf dem die Antwort jeweils kommen soll, und
- die Auswertung für die sehr eng begrenzten Fälle machen, in denen man diese Infos eben doch braucht.

Fleißaufgabe eben... Just do it ;) .
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

seule3008

Guten Morgen

Ich wollte mir den neuen Shelly plus 2pm bestellen und frage deshalb hier erstmal nach, ob es dazu schon ein template gibt oder ob ich einfach das vom 2.5 nutzen kann.

Vielen dank schonmal.

Christian

draddy

moin,

für den plus 1 pm gibts wohl eins, auf dem könnte man dann vermutlich aufbauen.

das für den 2.5 wird nicht klappen, da zwischen gen1 und gen2 Geräten größere Änderungen vom Hersteller erfolgt sind.
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

Beta-User

Vermutlich eher auf das 4-er. Sollte jedenfalls zu machen sein...
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

seule3008

Was bedeutet es das template anzupassen? Die setlist und readingslist anpassen oder ist das sehr aufwendig?

Meine Kenntnisse bei sowas sind nicht sonderlich ausgeprägt. Sollte ich evtl doch lieber den 2,5 nehmen? Ich tendiere zu dem neuen Plus 2 pm, weil der angeblich nicht so warm wird. Oder ist evtl schon jemand an einem passenden template dran?

Viele Grüße

Christian

draddy

also, meine Erfahrung ist, das hier sehr gut geholfen wird.
das es noch kein Template gibt, liegt vermutlich daran, dass den plus 2 noch keiner hat, hilft also am ende auch anderen wenn man den Entwicklern zum testen und Infos liefern zur Verfügung steht ;)
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

seule3008

Ich bestelle erstmal einen und versuche es mal. Bei den 6 die ich brauche ist mir das Investment zu hoch falls ich das doch nicht hinbekomme.


draddy

OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

fredje

Hallo,
bin gerade dabei ein Shelly Plug S einzurichten. Nach Umstellen des Shelly auf MQTT wird dies im Fhem angezeigt.
Wenn ich nun das Template "shelly1_w_energy_measuring" auswähle bekomme ich folgenden Fehler:

ERROR executing perl-code { my $old =  AttrVal("MQTT2_shellyplug_s_C554B8","userReadings",undef);; !defined $old ? 'relay_0_energy_total:relay_0_energy:.* monotonic {ReadingsNum($name,'relay_0_energy',0)}' : $old =~ m,relay_0_energy_total:relay_0_energy.*, ? $old : $old.', relay_0_energy_total:relay_0_energy:.* monotonic {ReadingsNum($name,'relay_0_energy',0)}' } for param NEWUSERREADINGS: Bad name after relay_0_energy' at (eval 30714) line 1.

Kann mir jemand weiterhelfen?

Beta-User

#897
Zitat von: fredje am 07 April 2022, 10:05:55
Kann mir jemand weiterhelfen?
Kann sein, dass mir beim Überarbeiten des attrTemplate-Satzes zu Shelly ein Fehler unterlaufen ist. Kannst du bitte sagen, wann du das letzte Update von FHEM gemacht hattest (bzw. welche template-Version in der setreading-Anweisung am Ende des Info-Textes angezeigt wird, wenn du das attrTemplate aus der Dropdown-List auswählst) und hier ein RAW-List einstellen, damit ich das kurz selbst durchspielen kann?

EDIT: Fehler vermutlich gefunden, update folgt bei Gelegenheit...
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

fredje

Hallo Beta_User,
vielen Dank für deine Hilfe. Einen fhem update habe ich gerade gemacht, hat nicht geholfen.
Anbei die Infos ..

###########################################
# $Id: mqtt2.template 25920 2022-04-05 05:38:54Z Beta-User $
#
# Comments start with #. Empty lines are ignored.
# Syntax of one entry: name: line, one optional filter: line, zero or more par: lines,  FHEM-Commands
# filter:INTERNAL=VALUE (optional)
# par: name of the parameter; comment; perl_code (optional)
# perl_code returns a value for the parameter, or undef.
# If undef, the user has to specify them (the comment is shown to the user)


Applies to single relay Shelly devices offering energy measuring like Shelly 1PM or Shelly Plug S
attr DEVICE setList\
  relay0:on,off,toggle shellies/DEVNAME/relay/0/command $EVTPART1\
  toggle:noArg shellies/DEVNAME/relay/0/command toggle\
  off:noArg shellies/DEVNAME/relay/0/command off\
  on:noArg shellies/DEVNAME/relay/0/command on\
  x_update:noArg shellies/DEVNAME/command update_fw\
  x_mqttcom shellies/DEVNAME/command $EVTPART1
attr DEVICE readingList \
  shellies/DEVNAME/relay/0:.* {{ state => $EVENT, relay0 => $EVENT}}\
  shellies/DEVNAME/input/0:.* input0\
  shellies/DEVNAME/online:.* online\
  shellies/announce:.* { $EVENT =~ m,..id...DEVNAME...mac.*, ? json2nameValue($EVENT) : return }\
  shellies/DEVNAME/announce:.* { json2nameValue($EVENT) }\
  shellies/DEVNAME/relay/0/power:.* relay_0_power\
  shellies/DEVNAME/relay/0/power:.* { my $compare = $EVTPART0 < 100 ? 'off':'on'; ReadingsVal($NAME,'loadState','off') ne $compare ? { loadState => $compare } : return }\
  shellies/DEVNAME/temperature:.* temperature\
  shellies/DEVNAME/temperature_f:.* {}\
  shellies/DEVNAME/input_event/0:.* { json2nameValue($EVENT) }\
  shellies/DEVNAME/overtemperature:.* overtemperature\
  shellies/DEVNAME/relay/0/energy:.* { relay_0_energy => $EVENT, relay_0_kWh => sprintf("%.2f",$EVENT/60/1000)}\
  shellies/DEVNAME/longpush/0:.* longpush_0
attr DEVICE 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'; 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'); "".FW_makeImage($onl)." ".FW_makeImage($light)."
Verbrauch: $cons / Total: $total/ Temp: $temp °C
"}
attr DEVICE comment To get appropriate loadState values: Change the default limit "100" in readingList to your needs.
attr DEVICE webCmd :
attr DEVICE setStateList on off toggle
deletereading -q DEVICE (?!associatedWith|IODev).*
set DEVICE x_mqttcom announce
attr DEVICE model shelly1_w_energy_measuring
setreading DEVICE attrTemplateVersion 20220404
option:{ CALLSPEECHRECOGN } 
set DEVICE attrTemplate speechcontrol_type_switch
option:{ RADIO_SETUSERREADING }
attr DEVICE userReadings NEWUSERREADINGS

Beta-User

Zitat von: Beta-User am 07 April 2022, 10:32:20
EDIT: Fehler vermutlich gefunden, update folgt bei Gelegenheit...

#2688 in der Datei sollte wohl eher so aussehen (nach Änderung reicht ein {AttrTemplate_Initialize()} aus):
par:NEWUSERREADINGS;NEWUSERREADINGS as set if relay_0_energy_total is included, otherwise it will be added;{ my $old = AttrVal('DEVICE','userReadings',undef); !defined $old ? 'relay_0_energy_total:relay_0_energy:.* monotonic {ReadingsNum($name,'relay_0_energy',0)}' : $old =~ m,relay_0_energy_total:relay_0_energy.*, ? $old : $old . q(, relay_0_energy_total:relay_0_energy:.* monotonic {ReadingsNum($name,'relay_0_energy',0)}) }
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