Hallo zusammen,
ich habe einen ShellyPlug im Wohnzimmer an dem eine Stehlampe hängt. Ich hätte gerne eine Benachrichtigung über Telegram wenn diese Lampe eingeschaltet wird. Ich wollte das mit einem DOIF realisieren. Leider klappt das gar nicht...
([shelly_wohnzimmer_stehlampe:"on"])
(set telebot message @xxxxxx stehlampe an)
Telegram an sich funktioniert d.h. wenn ich den Set Befehl
set telebot message @xxxxxx stehlampe an
absetze kommt diese Nachricht auch an.
Auch den Shelly Plug kann ich ohne Probleme schalten.
Ich vermute dass das DOIF einfach nicht mitbekommt wenn ich die Stehlampe einschalte weil es einfach das Event "on" nicht bekommt. Könnt ihr mir bitte weiterhelfen? Ich weiss nicht wo der Fehler liegt. Vielen Dank für eure Hilfe im Voraus.
Grüße
sxx128
Hallo.
Was passiert, wenn Du dies versuchst?
([shelly_wohnzimmer_stehlampe] eq "on")
(set telebot message @xxxxxx stehlampe an)
Oder ggf. so?
(["shelly_wohnzimmer_stehlampe:on"])
(set telebot message @xxxxxx stehlampe an)
Viele Grüße
rob
Hi,
Ein list shelly_wohnzimmer_stehlampe könnte beim spekulieren helfen.
Oder Du schaust im Eventmonitor ob es den Event wirklich gibt.
Gruß Otto
Hallo vielen Dank für euere Hinweise,
ich schau so bald wie möglich danach und melde mich.
Grüße
sxx128
Hallo
leider funtioniert das DOIF immer noch nicht. Ich habe zunächst folgendes versucht:
(["shelly_wohnzimmer_stehlampe:on"])
(set telebot message @xxxxxx stehlampe an)
so sieht das List des Devices aus:
nternals:
CID shellyplug_s_DBEE19
DEF shellyplug_s_DBEE19
DEVICETOPIC shelly_wohnzimmer_stehlampe
FUUID 5eb9246f-f33f-65e3-f3b0-338db9d9d1f4c33b
IODev MQTT2
LASTInputDev MQTT2
MQTT2_MSGCNT 51918
MQTT2_TIME 2020-10-04 11:23:50
MSGCNT 51918
NAME shelly_wohnzimmer_stehlampe
NR 84
STATE off
TYPE MQTT2_DEVICE
READINGS:
2020-10-01 12:22:12 fw_ver 20200827-070306/v1.8.3@4a8bc427
2020-10-01 12:22:12 id shellyplug-s-DBEE19
2020-10-01 12:22:12 ip 192.168.2.226
2020-10-01 12:22:12 mac D8BFC0DBEE19
2020-10-01 12:22:12 model SHPLG-S
2020-10-01 12:22:12 new_fw false
2020-10-01 12:22:12 online true
2020-10-04 11:23:50 overtemperature 0
2020-10-04 11:23:50 relay0 off
2020-10-04 11:23:50 relay_0_energy 53488
2020-10-04 11:23:50 relay_0_kWh 0.89
2020-10-04 11:23:50 relay_0_power 0.00
2020-10-04 11:23:50 state off
2020-10-04 11:23:50 temperature 28.89
2020-10-04 11:23:50 temperature_f 84.00
Attributes:
DbLogExclude .*
IODev MQTT2
alexaName TV
comment To get appropriate loadState values: Change the default limit "100" in readingList to your needs.
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");;"<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>"}
event-on-change-reading on,off
genericDeviceType switch
model shelly1_w_energy_meassuring
readingList shellies/shellyplug-s-DBEE19/relay/0:.* state
shellies/shellyplug-s-DBEE19/relay/0:.* relay0
shellies/shellyplug-s-DBEE19/input/0:.* input0
shellies/shellyplug-s-DBEE19/online:.* online
shellies/announce:.* { $EVENT =~ m,..id...shellyplug-s-DBEE19...mac.*, ? json2nameValue($EVENT) : return }
shellies/shellyplug-s-DBEE19/announce:.* { json2nameValue($EVENT) }
shellies/shellyplug-s-DBEE19/relay/0/power:.* relay_0_power
shellies/shellyplug-s-DBEE19/relay/0/power:.* { my $compare = $EVTPART0 < 100 ? "off":"on"; ReadingsVal($NAME,"loadState","off") ne $compare ? { 'loadState' => $compare } : return }
shellies/shellyplug-s-DBEE19/temperature:.* temperature
shellies/shellyplug-s-DBEE19/overtemperature:.* overtemperature
shellies/shellyplug-s-DBEE19/relay/0/energy:.* relay_0_energy
shellies/shellyplug-s-DBEE19/relay/0/energy:.* {'relay_0_kWh' => sprintf("%.2f",$EVENT/60/1000)}
shellies/shellyplug-s-DBEE19/longpush/0:.* longpush_0
shellyplug_s_DBEE19:shellies/shellyplug-s-DBEE19/temperature_f:.* temperature_f
room Steckdosen,Wohnzimmer
setList relay0:on,off,toggle shellies/shellyplug-s-DBEE19/relay/0/command $EVTPART1
off:noArg shellies/shellyplug-s-DBEE19/relay/0/command off
on:noArg shellies/shellyplug-s-DBEE19/relay/0/command on
x_update:noArg shellies/shellyplug-s-DBEE19/command update_fw
x_mqttcom shellies/shellyplug-s-DBEE19/command $EVTPART1
userReadings relay_0_energy_total:relay_0_energy:.* monotonic {ReadingsNum("$name","relay_0_energy",0)}
userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
verbose 0
webCmd :
Im Eventmmonitor sehe ich keine Einträge. Könnt ihr das was erkennen was ich falsche mache. Das wäre super.
Grüße und Danke für eure Hilfe im Voraus.
sxx128
Hallole
im Log habe ich folgendes gefunden:
MQTT2_DEVICE set shelly_wohnzimmer_stehlampe on
hilft euch das weiter ? Ich komme nicht auf die Lösung des Problems.
Grüße
sxx128
event-on-change-reading on,off ist Quatsch und führt dazu, dass (verm.) kein Event kommt, ergo das DOIF nicht getriggert wird.
EDIT: noch mal bei event-on-change-reading nachlesen -> Regex bzgl. Readingname(n) und nicht Reading-Werten... ;)
Du sagst ja selbst, dass du im Eventmonitor nichts siehst...
Solange da nix kommt wird das DOIF nix machen...
Gruß, Joachim
Hallo
danke für den Hinweis.
Ich vermute das hängt irgnedwie hiermit zusammen oder ?
shellies/shellyplug-s-DC4206/relay/0:.* state
shellies/shellyplug-s-DC4206/relay/0:.* relay0
shellies/shellyplug-s-DC4206/input/0:.* input0
shellies/shellyplug-s-DC4206/online:.* online
shellies/announce:.* { $EVENT =~ m,..id...shellyplug-s-DC4206...mac.*, ? json2nameValue($EVENT) : return }
shellies/shellyplug-s-DC4206/announce:.* { json2nameValue($EVENT) }
shellies/shellyplug-s-DC4206/relay/0/power:.* relay_0_power
shellies/shellyplug-s-DC4206/relay/0/power:.* { my $compare = $EVTPART0 < 100 ? "off":"on"; ReadingsVal($NAME,"loadState","off") ne $compare ? { 'loadState' => $compare } : return }
shellies/shellyplug-s-DC4206/temperature:.* temperature
shellies/shellyplug-s-DC4206/overtemperature:.* overtemperature
shellies/shellyplug-s-DC4206/relay/0/energy:.* relay_0_energy
shellies/shellyplug-s-DC4206/relay/0/energy:.* {'relay_0_kWh' => sprintf("%.2f",$EVENT/60/1000)}
shellies/shellyplug-s-DC4206/longpush/0:.* longpush_0
shellyplug_s_DC4206:shellies/shellyplug-s-DC4206/temperature_f:.* temperature_f
Hier müsste ich wahrscheinlich irgendwas definieren. Das übersteigt mein Wissen aber beit weitem... Für Hilfe wäre ich wirklich dankbar.
Grüße
sxx128
Hallo.
Nein, nein keine Sorge da musst eigentl. nicht ran :) Schau mal bitte in der Attribute Liste unten. Da müsste hinter event-on-change-reading der Link sein "deleteattr" --> da klickst drauf. Die anderen Attribute lass bitte so.
Danach mal bitte mehrfach ein/ ausschalten und im Event-Monitor schauen, ob entspr. Meldungen erscheinen. Ggf. regaiert Dein DOIF schon.
Viele Grüße
rob
Hallole zusammen, Hallo Rob
du hattest recht... vielen Dank für den Hinweis. Ich bekomme jetzt die Benachrichtigung :D :D :D :D :D Das Problem ist jetzt nur wenn ich die Lampe jetzt ausschalte bekomme ich ununterbrochen eine Nachricht über Telegram das die Lampe ausgeschalten wurde. So im Abstand von einer Minute. Lässt sich das beheben ?
Über eine Antwort würde ich mich sehr freuen.
Grüße
sxx128
Kann sein, dass die etwas intensivere Beschäftigung mit dem hier weiterhilft:
https://forum.fhem.de/index.php/topic,94060.msg1075460.html#msg1075460 (https://forum.fhem.de/index.php/topic,94060.msg1075460.html#msg1075460)
Die Antwort auf die dort gestellte Frage ist nämlich nach wie vor offen:
ZitatVielleicht mag das ja jemand testen, verfeinern und ggf. so (generisch) notieren, dass man es auch für andere Shellies verwenden kann...?
Ansonsten (mag bei MQTT andere Ursachen/Lösungen geben bzw. ist das hier [event-on-...] nur "Symptombekämpfung" [weil es wird ja u.U. trotzdem aktualisiert/kommuniziert):
event-on-change-reading und "Verwandte" noch mal "lernen"!!
Damit werden Events nur erzeugt, wenn sich was geändert hat...
UND: da dein DOIF wohl statt "nur" auf "on" auch auf "off" reagiert: auch da die RegEx verbessern...
Gruß, Joachim
Hallo zusammen,
ich habe jetzt das event-on-change-reading auf
.*
gesetzt.
So funktioniert das ganze wie ich will. Es wird tatsächlich nur noch einmal pro Event eine Nachricht geschickt.
Grüße
sxx128
...dir ist aber hoffentlich jetzt schon klar, dass das vermutlich nur die halbe Miete ist, oder?
Falls du meinst, das sei "fertig", kannst du den Thread auch als [gelöst (https://forum.fhem.de/index.php/topic,71806.0.html)] kennzeichnen (bitte nicht schließen!).
Hallo
ja das vermute ich dass das nur irgendwie hingemurkst ist. Aber so richtig ist mir einfach nicht klar was ich machen soll.
Grüße
sxx128
Zitat von: sxx128 am 04 Oktober 2020, 11:28:10
Im Eventmmonitor sehe ich keine Einträge.
Solltest Du als erstes reparieren, ohne Eventmonitor kein Spaß mit FHEM ;)
Gruß Otto
Zitat von: Otto123 am 06 Oktober 2020, 20:23:08
Solltest Du als erstes reparieren, ohne Eventmonitor kein Spaß mit FHEM ;)
Wie wahr...!
Zitat von: sxx128 am 06 Oktober 2020, 19:41:35
ja das vermute ich dass das nur irgendwie hingemurkst ist. Aber so richtig ist mir einfach nicht klar was ich machen soll.
Die m.E. in diesem Zusammenhang hier "interessantesten" Zeilen in dem Vorschlag sind diese:
attr Muster_Shelly1pm event-on-change-reading state,temperature:0.2,online,loadState,overtemperature,Verbrauch_Total_kWh,relay_0_.*,relay0,input0
attr Muster_Shelly1pm event-on-update-reading stat[ERT].*
[...]
shellies/shelly1pm-123456789012/temperature_f:.* {}\
[...]
attr Muster_Shelly1pm timestamp-on-change-reading state,online,loadState,overtemperature
Vielleicht versuchst du das mal mit Hilfe des Event-Monitors und https://wiki.fhem.de/wiki/Event-on-change-reading Schrittchen für Schrittchen nachzuvollziehen ;) .