Modul für Pushover

Begonnen von Johannes_B, 07 November 2013, 13:28:08

Vorheriges Thema - Nächstes Thema

Thyraz

Zitat
[8_fach_Sender_Hoftor_Btn_02:state]
[/quote

Das ist kein Perl. Auf die Perl-Ebene wechselt man mit geschweiften Klammern.
Entsprechend kannst du den Inhalt der Klammern auch nicht einfach durch Perl-Code ersetzen.

Versuch stattdessen mal

Zitat
{ReadingsTimestamp($NAME,"state","0")}

Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Depechem

#661
Zitat von: Thyraz am 06 September 2017, 09:24:12


Bei:
set Pushover_Pushnachrichten msg 'HOFTÜRCHEN {ReadingsTimestamp($NAME,"state","0")}' 'geöffnet (Nachricht da Schalter aktiv)' 'iPhoneThomas' 0 'none'
kommt folgende Pushover-Nachricht an:

HOFTÜRCHEN geöffnet {ReadingsTimestamp($NAME,"state","0")} (Nachricht da Schalter aktiv)

Also er kann dies gar nicht auswerten!




RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Thyraz

Ok, wenn der Befehl mit dem Inline-Perl nicht klarkommt, dann eben andersrum alles von Perl aus:


{
  my $timestamp = ReadingsTimestamp($NAME,"state","0");
  fhem("set Pushover_Pushnachrichten msg 'HOFTÜRCHEN $timestamp' 'geöffnet (Nachricht da Schalter aktiv)' 'iPhoneThomas' 0 'none'");
}
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Depechem

Zitat von: Thyraz am 06 September 2017, 10:30:49
Ok, wenn der Befehl mit dem Inline-Perl nicht klarkommt, dann eben andersrum alles von Perl aus:


{
  my $timestamp = ReadingsTimestamp($NAME,"state","0");
  fhem("set Pushover_Pushnachrichten msg 'HOFTÜRCHEN $timestamp' 'geöffnet (Nachricht da Schalter aktiv)' 'iPhoneThomas' 0 'none'");
}



Ok Danke schonmal,
nur leider kommt da ein Error.
Vieleicht sollte ich sagen das das ganze über ein DOIF funktionieren soll.

Dieser alte DOIF Code hat den "state" per Pushover übermittelt:
([Fenster_Buero:state:] eq "open")(set Pushover_Pushnachrichten msg 'HOFTÜRCHEN' 'geöffnet [Fenster_Buero,,] (Nachricht da Schalter aktiv)' 'iPhoneThomas' 0 'none')

wenn ich den einfach mit deinem Code austausche:


([Fenster_Buero:state:] eq "open"){
  my $timestamp = ReadingsTimestamp($NAME,"state","0");
  fhem("set Pushover_Pushnachrichten msg 'HOFTÜRCHEN $timestamp' 'geöffnet (Nachricht da Schalter aktiv)' 'iPhoneThomas' 0 'none'");
}


oder so


([Fenster_Buero:state:] eq "open")({
  my $timestamp = ReadingsTimestamp($NAME,"state","0");
  fhem("set Pushover_Pushnachrichten msg 'HOFTÜRCHEN $timestamp' 'geöffnet (Nachricht da Schalter aktiv)' 'iPhoneThomas' 0 'none'");
})


kommt folgender Error bei Auslößung:

{ my $timestamp = ReadingsTimestamp($NAME,"state","0"); fhem("set Pushover_Pushnachrichten msg 'HOFTÜRCHEN $timestamp' 'geöffnet (Nachricht da Schalter aktiv)' 'iPhoneThomas' 0 'none'"); }: Global symbol "$NAME" requires explicit package name at (eval 992472) line 1, <GEN382839> line 1.



RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Thyraz

#664
Zitat von: Depechem am 06 September 2017, 10:44:51
Vieleicht sollte ich sagen das das ganze über ein DOIF funktionieren soll.
Könnte helfen. ;)

Zitat
oder so


([Fenster_Buero:state:] eq "open")({
  my $timestamp = ReadingsTimestamp($NAME,"state","0");
  fhem("set Pushover_Pushnachrichten msg 'HOFTÜRCHEN $timestamp' 'geöffnet (Nachricht da Schalter aktiv)' 'iPhoneThomas' 0 'none'");
})


kommt folgender Error bei Auslößung:

{ my $timestamp = ReadingsTimestamp($NAME,"state","0"); fhem("set Pushover_Pushnachrichten msg 'HOFTÜRCHEN $timestamp' 'geöffnet (Nachricht da Schalter aktiv)' 'iPhoneThomas' 0 'none'"); }: Global symbol "$NAME" requires explicit package name at (eval 992472) line 1, <GEN382839> line 1.



Diese Version ist auf alle Fälle die richtige.
Der Ausführungsteil beginnt bei DOIF immer mit einer runden Klammer.

An der Fehlermeldung siehst du dann woran es liegt:
In dem aktuellen Ausführungsbereich gibt es keine Variable mit dem Namen "$NAME".

$NAME wird als Feature bei Notifiy erwähnt und hält den Namen des auslösenden Devices:
https://wiki.fhem.de/wiki/Notify

Willst du in Wirklichkeit nicht einfach den Devicenamen von "Hoftürchen" anstatt einer Variable an dieser Stelle stehen haben?
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Depechem

#665
Zitat von: Thyraz am 06 September 2017, 11:06:58
Könnte helfen. ;)

Diese Version ist auf alle Fälle die richtige.
Der Ausführungsteil beginnt bei DOIF immer mit einer runden Klammer.

An der Fehlermeldung siehst du dann woran es liegt:
In dem aktuellen Ausführungsbereich gibt es keine Variable mit dem Namen "$NAME".

$NAME wird als Feature bei Notifiy erwähnt und hält den Namen des auslösenden Devices:
https://wiki.fhem.de/wiki/Notify

Willst du in Wirklichkeit nicht einfach den Devicenamen von "Hoftürchen" anstatt einer Variable an dieser Stelle stehen haben?

Super Danke dir ich habe es durch deine Hilfe:
([Fenster_Buero:state:] eq "open")({
  my $timestamp = ReadingsTimestamp("Fenster_Buero","state","0");
  fhem("set Pushover_Pushnachrichten msg 'HOFTÜRCHEN $timestamp' 'geöffnet (Nachricht da Schalter aktiv)' 'iPhoneThomas' 0 'none'");
})
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

en-trust

Ich bekomme keine Pushnachrichten wenn meine Jalousien oder Stellmotoren sich bewegen. Lediglich die Anwesenheit via Handy wird mir mitgeteilt, obwohl es die gleiche Programmierung ist.

Handy...

# Sven's Samsung A5
define HA.SvenWlan PRESENCE lan-ping xxx.xxx.xxx.xxx 60
attr HA.SvenWlan event-on-change-reading state
attr HA.SvenWlan ping_count 4
attr HA.SvenWlan room Status

#HA.Jay definieren
define HA.Sven dummy
attr HA.Sven eventMap 1
attr HA.Sven room Status


#HA.Jay auf on setzen bei Anwesenheit
define HASvenOn notify HA.SvenWlan:present { fhem ("set HA.Sven on;; setstate watchdogHASvenWlanAbwesend defined") if (Value("HA.Sven") ne "on") }
#HA.Jay auf off setzen nach 3 Min Abwesenheit
define watchdogHASvenWlanAbwesend watchdog HA.SvenWlan:absent 00:03 HA.SvenWlan:present set HA.Sven off
attr watchdogHASvenWlanAbwesend regexp1WontReactivate 1
attr watchdogHASvenWlanAbwesend room Status

#Pushover Notification Zuhause
define HA.SvenPushoveran notify HA.Sven:on { fhem ("set PushMessenger msg 'Anwesenheit' 'Sven ist Zuhause.' '' 0 ''")}
define HA.SvenPushoveraus notify HA.Sven:off { fhem ("set PushMessenger msg 'Anwesenheit' 'Sven hat das Haus verlassen.' '' 0 ''")}


Stellmotor

define HM_531770_Sw_01 CUL_HM xxxxxx
attr HM_531770_Sw_01 comment Kanal 1 steuert FBH-Heizkreise 1-2 (Wohnzimmer)
attr HM_531770_Sw_01 group Schaltaktoren
attr HM_531770_Sw_01 model HM-LC-SW2-FM
attr HM_531770_Sw_01 peerIDs 00000000,
attr HM_531770_Sw_01 room CUL_HM,Wohnzimmer
attr HM_531770_Sw_01 webCmd statusRequest:toggle:on:off
#
# Wohnzimmer - Heizungregelung (Automatik- / Urlaubsmodus)
#                                   
define HM_531770_Sw_01.Auto DOIF ([Modus_FHZ] eq "Auto" and ([04:15-21:00] and [WZ.LaCrosse:temperature] < 21.5)) (set HM_531770_Sw_01 on) \
DOELSEIF ([Modus_FHZ] eq "Auto" and ([04:15-21:00] and [WZ.LaCrosse:temperature] > 22.5)) (set HM_531770_Sw_01 off) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-21:00] and [WZ.LaCrosse:temperature] < 17.5)) (set HM_531770_Sw_01 on) \
DOELSEIF ([Modus_FHZ] eq "URLAUB" and ([04:15-21:00] and [WZ.LaCrosse:temperature] > 19.5)) (set HM_531770_Sw_01 off) \
DOELSEIF ([22:00-04:00] and [WZ.LaCrosse:temperature] < 17.5) (set HM_531770_Sw_01 on) \
DOELSEIF ([22:00-04:00] and [WZ.LaCrosse:temperature] > 19.5) (set HM_531770_Sw_01 off)
attr HM_531770_Sw_01.Auto group Schaltaktoren
attr HM_531770_Sw_01.Auto room CUL_HM,Wohnzimmer
attr HM_531770_Sw_01.Auto sortby 02
attr HM_531770_Sw_01.Auto wait 0:3600
#
# Wohnzimmer - Heizungregelung (Sommermodus)
#
define HM_531770_Sw_01.Off DOIF ([Modus_FHZ] eq "AUS") (set HM_531770_Sw_01.Auto disable) DOELSEIF ([Modus_FHZ] ne "AUS") (set HM_531770_Sw_01.Auto initialize)
attr HM_531770_Sw_01.Off group Schaltaktoren
attr HM_531770_Sw_01.Off room CUL_HM,Wohnzimmer
attr HM_531770_Sw_01.Off sortby 03
#
# Wohnzimmer - Benachrichtigung für Stellmotor
#
define HM_531770_Sw_01.SM.Oeffnung dummy
attr HM_531770_Sw_01.SM.Oeffnung eventMap 1
attr HM_531770_Sw_01.SM.Oeffnung room Haus,Status
#
# HM_531770_Sw_01.SM.Oeffnung definieren
#
define HM_531770_Sw_01.SM.Oeffnung.An notify HM_531770_Sw_01:on.* { fhem ("set HM_531770_Sw_01.SM.Oeffnung on") if(Value("HM_531770_Sw_01.SM.Oeffnung") ne "on") }
define HM_531770_Sw_01.SM.Oeffnung.Aus notify HM_531770_Sw_01:off.* { fhem ("set HM_531770_Sw_01.SM.Oeffnung off") if(Value("HM_531770_Sw_01.SM.Oeffnung") ne "off") }
#
# Pushover Notification bei Stellmotorenöffnung
#
define HM_531770_Sw_01.SM.Oeffnung.Pushover.On notify HM_531770_Sw_01.SM.Oeffnung:on {\
my $temperature_wz = sprintf "%.2f°C", ReadingsVal("WZ.LaCrosse","temperature",0);;\
my $temperature_te = sprintf "%.2f°C", ReadingsVal("GT.LaCrosse","temperature",0);;\
{fhem ("set PushMessenger msg 'FHZ (Wohnzimmer)' 'Die Stellmotoren wurden geöffnet.\n-WZ.Temperatur $temperature_wz\n-Außentemperatur $temperature_te'")}
#


Stellmotor on wir mir nicht mitgeteilt. Ideen ?


en-trust


Amenophis86

Ich glaube nicht, dass es ein Pushover Problem ist, eher, dass deine Programmierung einen Fehler hat. Kann dir gerade nicht sagen welche, ist ja auch recht komplex und lässt sich sicher einfach umsetzen. Aber ich würde mal mit dem trigger-Befehl/Dummys arbeiten und schauen, ob jeder richtig reagiert, wie er reagieren sollte.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

kadettilac89

Zitat von: en-trust am 30 Oktober 2017, 19:34:08
Keiner eine Idee ?

ich habe abgewandelt

{my $temperature_wz = sprintf "%.2f°C", "4";;{fhem ("set pushover msg 'FHZ (Wohnzimmer)' 'Die Stellmotoren $temperature_wz'")}

getestet.

Pushover msg kam an. Deine Frage hat mit deinem Aufbau mit ziemlicher Sicherheit nichts mit Pushover zu tun. Teste wie Amenophis86  vorgeschlagen hat, die Notifies in kleineren Scheiben und stelle deine Frage ggf. als eigenen Post im Anfängerbereich wenn du an der Programmierung scheiterst.

chris1284

Kann es sein das aktuell immer 2 Meldungen ankommen? Habe seit ewiger Zeit nichts an der Konfig geändert und erhalte neuerdings immer die Nachrichten doppelt

Frank_Huber

bei mir alles OK.
kein Fehlverhalten feststellbar

kadettilac89

Zitat von: chris1284 am 06 Dezember 2017, 08:23:49
Kann es sein das aktuell immer 2 Meldungen ankommen? Habe seit ewiger Zeit nichts an der Konfig geändert und erhalte neuerdings immer die Nachrichten doppelt

Bei mir keine Probleme. Alles aktuell. Teste mal aus dem Modul selbest mit "set <pushover> msg xxxx". Wenn hier auch 2 ankommen --> Modul, wenn nicht,  dein notify oder coding welches die Message sendet.

volschin

Zitat von: chris1284 am 06 Dezember 2017, 08:23:49
Kann es sein das aktuell immer 2 Meldungen ankommen? Habe seit ewiger Zeit nichts an der Konfig geändert und erhalte neuerdings immer die Nachrichten doppelt
Der Fehler liegt anscheinend in der App. Gestern wurde eine korrigierte Version veröffentlicht.
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

en-trust

Hab es mit den Pushover hinbekommen. Macht jetzt auch was er soll. Allerdings bekomme ich nun 2 Messages zum selben State.

Zunächst habe ich bei den Aktoren jeweils attr xxxx event-on-change-reading state eingesetzt.
Allerdings bekomm ich bei der Äbderung des Stellmotorenwertes nun 2 Messages. Einmal ...Stellmotor wurde auf set_off geändert und zeitgleich ...Stellmotor wurde auf off  geändert.

# Badezimmer (FHZ)
define HM_xxx_Sw_01.PushNotify notify HM_xxx_Sw_01 {if(Value("PushMessenger_OnOff") eq "on"){\
my $temp_Status = Value("HM_xxx_Sw_01");;\
fhem ("set PushMessenger msg 'FHZ (Wohnzimmer)' 'Der Status (HM_xxx_Sw_01) wurde auf $temp_Status geändert.")}}
attr HM_xxx_Sw_01.PushNotify group Aktoren
attr HM_xxx_Sw_01.PushNotify room Status


Hat jmd eine Idee ?