Autor Thema: (Gelöst) Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen  (Gelesen 649 mal)

Offline is2late

  • Full Member
  • ***
  • Beiträge: 190
Hi,
ich suche eine Idee zur Lösung folgenden Problems:

Diverse Notifys melden über Sonos Betriebszustände, zB Waschmaschine fertig, Post ist da usw.
Nun gibt es ja Situationen, da diese Meldungen durchaus störend sein können. Ich würde die Meldungen also gern über einen Switch zeitlich befristet aussetzen, also zB: Switch on = Ruhe in den nächsten beiden Stunden. Danach sollen die Meldungen dann wieder erfolgen können.
Ich habe an ein DOIF gedacht, komme aber nicht darauf, wie es mit den Notifys zu verknüpfen wäre. Beispiel für ein solches Notify :
defmod n_Briefkasten notify Briefkasten:offen set Sonos_Unnamed_Room Speak 50 de |TempleBell| Hallo, es ist Post im Briefkasten!
Hat jemand eine Idee, wie obiges Vorhaben zu realisieren wäre?

LG is2late
« Letzte Änderung: 01 Juli 2020, 19:52:49 von is2late »
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Offline binford6000

  • Tester
  • Hero Member
  • ****
  • Beiträge: 1254
  • 🏠⚙️💡🛠📱
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #1 am: 01 Juli 2020, 15:37:08 »
Hi,
ich suche eine Idee zur Lösung folgenden Problems:

Diverse Notifys melden über Sonos Betriebszustände, zB Waschmaschine fertig, Post ist da usw.
Nun gibt es ja Situationen, da diese Meldungen durchaus störend sein können. Ich würde die Meldungen also gern über einen Switch zeitlich befristet aussetzen, also zB: Switch on = Ruhe in den nächsten beiden Stunden. Danach sollen die Meldungen dann wieder erfolgen können.
Ich habe an ein DOIF gedacht, komme aber nicht darauf, wie es mit den Notifys zu verknüpfen wäre. Beispiel für ein solches Notify :
defmod n_Briefkasten notify Briefkasten:offen set Sonos_Unnamed_Room Speak 50 de |TempleBell| Hallo, es ist Post im Briefkasten!
Hat jemand eine Idee, wie obiges Vorhaben zu realisieren wäre?

LG is2late
Hallo,
zB. ganz billig ohne DOIF mit einem Switch = dummy mit set-Extensioons (on-for-timer buw. off-for-timer)

In den notifys den dummy abfragen:
if (Value('dummy') eq "on") {msg bla bla}
VG Sebastian
Proxmox mit: nextcloud, fhem, pihole, docker, bitwarden, deconz, TasmoAdmin
fhem mit: deconz, SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking
Testumgebung: docker pull fhem/fhem

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 15906
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #2 am: 01 Juli 2020, 15:40:02 »
Hi,

Wenn alle Deine notify gleich beginnen, z.B. so
set n_Sonos.* inactive
Ansonsten musst Du die devSpec anders machen.

Ob du den befehl über ein DOIF oder sonstwas absetzt ist Deiner Vorliebe überlassen.

Gruß Otto
« Letzte Änderung: 01 Juli 2020, 15:41:38 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 10837
  • eigentlich eher "user" wie "developer"
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #3 am: 01 Juli 2020, 15:52:00 »
Vielleicht nicht die naheliegendste, aber m.E. eine ziemlich verkannte Option:

disabledForIntervalsIf parts of the attribute value are enclosed in {}, they are evaluated:  {sunset_abs()}-24 {sunrise_abs()}-08 Leider finde ich die Fundstelle nicht, in der Rudi das mal erläutert hatte, aber es sollte gehen, dass du da was in myUtils reinpackst, das dann via disableForIntervals aufgerufen wird, und z.B. wahlweise 00 oder 24 zurückgibt (00=inaktiv, 24=aktiv). Das ganze ohne irgendwelche rote Fragezeichen im laufenden Betrieb ;) :attr n_Briefkasten disabledForIntervals {myCheckSonosActive()}-24
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline is2late

  • Full Member
  • ***
  • Beiträge: 190
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #4 am: 01 Juli 2020, 16:52:51 »
Das sind super Ideen!
Zitat
Hallo,
zB. ganz billig ohne DOIF mit einem Switch = dummy mit set-Extensioons (on-for-timer buw. off-for-timer)
Das klingt wirklich einfach; werde ich probieren.

Zitat
Ansonsten musst Du die devSpec anders machen.
Otto, was ist das?

Zitat
Vielleicht nicht die naheliegendste, aber m.E. eine ziemlich verkannte Option:
disabledForIntervals
Oje, das bekomme ich nie hin....

Ich werde mal etwas probieren und muss dann sicher nachfragen.

Vielen Dank erst einmal!!
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 10837
  • eigentlich eher "user" wie "developer"
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #5 am: 01 Juli 2020, 16:59:56 »
Oje, das bekomme ich nie hin....
Sieht so aus, als müßtest du noch viel lesen, wenn nicht mal beim Begriff "devspec" der Groschen fällt.

Mundgerecht aufbereitet könnte das auf Basis der dummy-Lösung von binford6000 so aussehen:
attr n_Briefkasten disabledForIntervals {Value('dummy') eq "on" ? "00" : "24"}-24
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 15906
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #6 am: 01 Juli 2020, 17:56:51 »
Otto, was ist das?
Das hier n_Sonos.*
Details findest Du natürlich in der Doku https://commandref.fhem.de/commandref_DE.html#devspec ;)

@Beta-User wird das wirklich aktualisiert wenn man den dummy ändert?
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline is2late

  • Full Member
  • ***
  • Beiträge: 190
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #7 am: 01 Juli 2020, 17:58:44 »
Zitat
Sieht so aus, als müßtest du noch viel lesen, wenn nicht mal beim Begriff "devspec" der Groschen fällt.
Keine Frage, ich bin blutiger Anfänger.
Hab jetzt den Dummy angelegt:
defmod Sonos_Aus dummy
attr Sonos_Aus room Sonos
attr Sonos_Aus webCmd on:off
Dazu set Sonos_Aus on-for-timer 120".

Das Notify sieht aus wie folgt:
defmod n_Briefkasten notify Briefkasten:offen if (Value(Sonos_Aus) eq "off") set Sonos_Unnamed_Room Speak 50 de |TempleBell| Hallo, es ist Post im Briefkasten!
Funktioniert aber nicht, evtl wegen eines Syntaxfehlers - das Logfile moniert
n_Briefkasten return value: IF: no left bracket:  set Sonos_Unnamed_Room Speak 50 de |TempleBell| Hallo, es ist Post im Briefkasten!Setze ich die Zeile von "set" bis Ende in geschweifte Klammern, wird das Fehlen einer rechten Klammer beanstandet.
Und: Das set Sonos_aus on-for-timer 120" hilft insofern nicht weiter, als dass es nur flüchtig ist.
Puh..
@Beta-User: Danke dafür.. aber dann müsste ich laut Deinem ersten Post noch etwas in der MyUtils tun... soviel kann ich garnicht lesen, dass ich das in diesem Leben noch hinbekomme  8)

LG
« Letzte Änderung: 01 Juli 2020, 18:06:46 von is2late »
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 15906
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #8 am: 01 Juli 2020, 18:03:32 »
Vielleicht noch der Nachtrag, Du sprachst von vielen notify  ....
Ganz konkret für dein Eines sieht mein Vorschlag so aus:
set n_Briefkasten inactive
Dazu das DOIF aus der Doku abwandeln und fertig ist...
define di_lamp DOIF ([FB:"on"]) (set lamp on) DOELSEIF ([FB:"off"]) (set lamp off)

attr di_lamp devStateIcon cmd_1:on:cmd_2 initialized|cmd_2:off:cmd_1
« Letzte Änderung: 01 Juli 2020, 18:06:56 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 7951
  • NIVEAu ist keine Creme...
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #9 am: 01 Juli 2020, 18:09:33 »
Zitat
Das Notify sieht aus wie folgt:

defmod n_Briefkasten notify Briefkasten:offen if (Value(Sonos_Aus) eq "off") set Sonos_Unnamed_Room Speak 50 de |TempleBell| Hallo, es ist Post im Briefkasten!


Funktioniert aber nicht, evtl wegen eines Syntaxfehlers - das Logfile moniert

n_Briefkasten return value: IF: no left bracket:  set Sonos_Unnamed_Room Speak 50 de |TempleBell| Hallo, es ist Post im Briefkasten!

Setze ich die Zeile von "set" bis Ende in KLammern, wird das Fehlen einer rechten Klammer beanstandet.

Naja: entweder ein fhem IF ODER eben (wie du) ein Perl-if ABER dann auch nach Perl wechseln!!

Also (Perl-if)

defmod nTest notify Device:Regex { if(Bedingung){Aktion} }

EDIT: wobei du dann (also wenn "in" Perl) für fhem Befehle die "fhem-Funktion" nutzen musst, also fhem("set irgendwas auf irgendwas")

ODER (fhem IF)

defmod nTest notify Device:Regex IF (Bedingung) (Aktion)

https://wiki.fhem.de/wiki/Klammerebenen

https://wiki.fhem.de/wiki/If-condition

https://fhem.de/commandref_DE.html#IF

Gruß, Joachim
« Letzte Änderung: 01 Juli 2020, 18:12:38 von MadMax-FHEM »
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, KODI, alexa-fhem, ...
FHEM PI2 Stretch: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 Stretch (Test)

Offline is2late

  • Full Member
  • ***
  • Beiträge: 190
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #10 am: 01 Juli 2020, 18:13:40 »
Danke, Otto.

Damit ich es richtig verstehe:

Kann denn
set n_Briefkasten inactive in den Dummy Sonos_Aus integriert werden? Denn das ist ja das Ziel: Switch betätigen, Sonos schweigt vorübergehend.
Und wie ist dann das "Vorübergehend" zu realisieren? Sonos soll ja nur für zwei Stunden still sein, danach automatisch wieder Meldungen abgeben.

LG is2late
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 2231
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #11 am: 01 Juli 2020, 18:16:48 »
defmod dummy_notify_1 notify dummy {("$EVENT" eq "off") ? return : fhem"set n_Briefkasten inactive";;fhem "define MeineAT at +00:45:00 set n_Briefkasten active"}
attr dummy_notify_1 comment dummy { if ("$EVENT" eq "on") { fhem"set n_Briefkasten inactive"};; {fhem "define MeineAktion at +00:00:10 set n_Briefkasten active"}}
attr dummy_notify_1 room Test

disabledForIntervals find ich aber eleganter, aber noch nicht ganz verstanden.

Gruß

Thomas

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 15906
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #12 am: 01 Juli 2020, 18:18:10 »
Und wie ist dann das "Vorübergehend" zu realisieren? Sonos soll ja nur für zwei Stunden still sein, danach automatisch wieder Meldungen abgeben.
Das ist ne neue Aufgabe? Stand ursprünglich nicht drin :(

Aber mit dem DOIF was ich Dir gezeigt habe auch kein Problem, nimmst Du timer mit wait - so etwa

Edit: klappt so nicht ganz, müsste ich noch etwas drüber nachdenken   :-[
Edit2: es tut so was es soll nur die Anzeige im DOIF geht so nicht. Mit set di_lamp cmd_1


define di_lamp DOIF (0) (set n_Briefkasten inactive) (set n_Briefkasten active)
attr di_lamp wait 0,7200

Es gibt wahrscheinlich noch hundert Wege - bald haben wir ja alle :) readingsDingsBums kann doch sowas auch :)
« Letzte Änderung: 01 Juli 2020, 18:36:27 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 7951
  • NIVEAu ist keine Creme...
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #13 am: 01 Juli 2020, 18:18:39 »
Es gibt (wie immer/so oft) viele Möglichkeiten...

Direkt "in" den "Schalte aus" dummy wird eher schwierig (evtl. cmdalias)...

Aber du kannst doch ein notify auf den ausschalt-dummy machen.

Also bei on (oder off je nach Logik ;)  ) eben das oder die notify mit dem Befehl von Otto "still legen"...

Den dummy dann mittels setExtensions und on-for-timer schalten und dann eben bei off (oder on je nach Logik) das oder die notify wieder aktiv schalten...

Gruß, Joachim
FHEM PI3B+ Buster: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, KODI, alexa-fhem, ...
FHEM PI2 Stretch: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM PI3 Buster (Test)
FHEM PI3 Stretch (Test)

Offline is2late

  • Full Member
  • ***
  • Beiträge: 190
Antw:Notify bzw. Sonos per Knopfdruck vorübergehend stilllegen
« Antwort #14 am: 01 Juli 2020, 18:54:48 »
O Mann, mir brummt der Schädel...

Ich suche die einfachste Lösung, weil ich die am ehesten umsetzen kann.
Ist das die von Otto? Ich übersehe schon gar nicht mehr, was worauf aufbaut bzw womit in Verbindung steht.
Also:
1. Ausschalt-Dummy schaltet das Notify inaktiv
2. useSetExtensions habe ich jetzt auf "1" gesetzt, bekomme aber über set nur einen "flüchtigen" Timer in den Readings.
Wie bekommt man die Timeroption in den Dummy?

Bei Tommis Lösung verstehe ich die Zeitangaben nicht und kann sie auch nicht adaptieren. Was ist "MeineAT"? Erbarmen, bin Anfänger!

Joachims Ausführungen zur Syntax habe ich versucht umzusetzen, bleibt aber beim Fehler. Vermutlich kreiere ich jetzt laufend neue.
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox