Modul für Pushover

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

Vorheriges Thema - Nächstes Thema

Icinger

Das ist der hintere Teil:
{fhem ("set Pushover msg 'SchwarzeTonne' 'Morgen Restmülltonne rausstellen' '' 0 '')}}

und der kann so unter GARANTIE nicht funktionieren
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

pointde

Habs mit iPhone kopiert. Das bei der 0 sind normale ""
Trotzdem funktioniert es nicht

anfichtn

#287
Zähle doch bitte mal die Anzahl der " und der '.
Danke...

@EiFonUser: Bitte...  nutze einen handelsüblichen Personalcomputer. Und RTFM!
FHEM 5.6 + Pilight + Pimatic auf BananaPro mit Bananian 15.04 r01
FB7270 v2 & FB7412
LDA382A mit WifiLight
MAX-Cube (aculfw), 6 Fensterkonstakte, 5 HK-Thermostate, 3 WandThermostate
[...]

Jaydee

#288
ähm Jungs, es geht hier doch nicht darum Rätsel aufzugeben... macht es doch einfach DEUTLICH...


fhem ("set Pushover msg 'SchwarzeTonne' 'Morgen Restmülltonne rausstellen' '<GERAET>' 0 'siren' ")

Innerhalb des Pushover-Aufrufs werden einfache Anführungszeichen benutzt, die können etwas unübersichtlich werden, wenn sie nichts enthalten. Zur Verdeutlichung hab ich sie oben mal gefüllt. (Wobei <GERAET> natürlich nur ein Platzhalter für dein Handy ist. Am Schluss fehlte noch das doppelte Anführungszeichen für den fhem("xxx")-Aufruf...

pointde

Also, der Befehl alleine sendet die Nachricht jetzt:
{fhem ("set Pushover msg 'SchwarzeTonne' 'Morgen Restmülltonne rausstellen'")}

Der gesamte Befehl funktioniert aber nach wie vor nicht. Der State des Dummys RestmuellIn ist Heute 6
define Restmuelltonne notify RestmuellIn.* {if (Value("RestmuellIn") eq "6"));; {fhem ("set Pushover msg 'SchwarzeTonne' 'Morgen Restmülltonne rausstellen'")}}

volschin

Warum machst Du eigentlich diese ganzen Verrenkungen mit if und triggerst statt .* nicht gleich .6 ?
Intel NUC+Ubuntu 24.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 7690, Echo Dots+Show8, HomeBridge

volschin

Und woher kommen auf einmal die Semikolons hinter den Klammern? Bist Du auch so ein direkter config-Editor? Gerade als Anfänger, benutz die Befehlszeile oben. Dann gibts auch Fehlermeldungen!
Intel NUC+Ubuntu 24.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 7690, Echo Dots+Show8, HomeBridge

pointde

Ich möchte den if Befehl lernen, weil ich diesen dann evtl. bei anderen Projekten benutzen kann.
Nein, ich schreibe immer alles in die Kommandozeile. Die fhem.cfg habe ich noch nie bearbeitet.

Keiner meiner Versuche hat bisher geklappt. Obwohl ich jetzt schon fast 7h an diesem notify arbeite, funktioniert nur der pushover Teil.
Ich bekomme es nicht hin, dass mir der Wert meines Dummys RestmuellIn, wenn er z. B. state 5 hat eine Nachricht schickt.

Alternativ dazu habe ich dann auch noch an anderen notifys gearbeitet, - keins funktioniert:

Ich poste mal einige Versuche:
define Restmuelltonne notify Restmuell {if (Value("RestmuellIn") eq "5");; {fhem ("set Pushover msg 'SchwarzeTonne' 'Morgen Restmülltonne rausstellen' ")}}
define Restmuelltonne notify RestmuellIn:5 {\
system ("curl -s -F 'token=aW4xxxxx' -F 'user=uxxxx' -F 'message=SchwarzeTonne\MorgenRausstellen https://api.pushover.net/1/messages.json")\
}\
}

define BuegelzimmerTuereoffenPushover at *21:00:00 {if (Value("DrehgriffkontaktBuegelzimmer ") eq "open"));; {fhem ("set Pushover msg 'Bügelzimmer' 'Türe noch offen!!!'")}}

define Restmuelltonne notify RestmuellIn.5;; {fhem ("set Pushover msg 'SchwarzeTonne' 'Morgen Restmülltonne rausstellen' ")}

volschin

Und warum nimmst Du die beiden Semikolons nicht endlich wieder raus. Die waren vorher auch nicht drin!
Intel NUC+Ubuntu 24.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 7690, Echo Dots+Show8, HomeBridge

volschin

Ohne es jetzt getestet zu haben, würde ich es so machen:
define Restmuelltonne notify RestmuellIn.5 set Pushover msg 'SchwarzeTonne' 'Morgen Restmülltonne rausstellen'
Intel NUC+Ubuntu 24.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 7690, Echo Dots+Show8, HomeBridge

anfichtn

#295
Zitat von: pointde am 25 April 2015, 16:34:50
Ich möchte den if Befehl lernen, weil ich diesen dann evtl. bei anderen Projekten benutzen kann.
Nein, ich schreibe immer alles in die Kommandozeile. Die fhem.cfg habe ich noch nie bearbeitet.

Keiner meiner Versuche hat bisher geklappt. Obwohl ich jetzt schon fast 7h an diesem notify arbeite, funktioniert nur der pushover Teil.
Ich bekomme es nicht hin, dass mir der Wert meines Dummys RestmuellIn, wenn er z. B. state 5 hat eine Nachricht schickt.

Alternativ dazu habe ich dann auch noch an anderen notifys gearbeitet, - keins funktioniert:

Ich poste mal einige Versuche:
define Restmuelltonne notify Restmuell {if (Value("RestmuellIn") eq "5");; {fhem ("set Pushover msg 'SchwarzeTonne' 'Morgen Restmülltonne rausstellen' ")}}
define Restmuelltonne notify RestmuellIn:5 {\
system ("curl -s -F 'token=aW4xxxxx' -F 'user=uxxxx' -F 'message=SchwarzeTonne\MorgenRausstellen https://api.pushover.net/1/messages.json")\
}\
}

define BuegelzimmerTuereoffenPushover at *21:00:00 {if (Value("DrehgriffkontaktBuegelzimmer ") eq "open"));; {fhem ("set Pushover msg 'Bügelzimmer' 'Türe noch offen!!!'")}}

define Restmuelltonne notify RestmuellIn.5;; {fhem ("set Pushover msg 'SchwarzeTonne' 'Morgen Restmülltonne rausstellen' ")}

Ich korrigiere einfach mal...
define BuegelzimmerTuereoffenPushover at *21:00:00 {if (Value("DrehgriffkontaktBuegelzimmer ") eq "open"));; {fhem ("set Pushover msg 'Bügelzimmer' 'Türe noch offen!!!'")}}
Funktioniert so:
define BuegelzimmerTuereoffenPushover at *21:00:00 {if (Value("DrehgriffkontaktBuegelzimmer") ne "closed") {fhem ("set Pushover msg 'Bügelzimmer' 'Türe noch offen!!!'")}}
Geändert sind wieder die Klammern... Semikolons und Leerzeichen. Und die Voraussetzung also Tür nicht (ne) geschlossen (closed)

Für deine Mülltonne würde ich ebenfalls ein AT definieren.
define MuelltonnePushover at *16:00:00 {if (Value("RestMuellIn") eq "1") {fhem ("set Pushover msg 'SchwarzeTonne' 'Morgen Restmülltonne rausstellen' ") } elsif (Value("PapierIn") eq "1") {fhem ("set Pushover msg 'Papiertonne' 'Morgen Papiertonne rausstellen' ") }

Man beachte folgende Basics:
if (<Bedingung>) { tudies; tujenes } elsif (<anderebedingung>) { tuetwasanderes } else { nochetwasanderes }

Im Ausführungsteil müssen mehrere Befehle mit einem Semikolon getrennt werden, ansonsten gehören in die komplette if-Struktur keine Semikolons als Trennzeichen.

Ich empfehle öfter mal wieder handelsübliche Texteditoren in denen man sich die If-Struktur untereinander und eingerückt notieren kann.  Dann fallen falsche Klammern recht schnell auf.

Empfehlenswert ist zum Beispiel Notepad++

So. Ich hoffe mir ist am Handy kein Fehler entwischt....

Grüße

anfichtn

Nachtrag:
Zitat von: pointde am 20 April 2015, 13:50:06
Ich habe zwei Info-Dummies. Einer heißt PapierIn, einer RestmuellIn.
Wenn nun auf beiden die Zahl 1 steht, soll jeweils um 16:00 Uhr eine Nachricht mit folgendem Text geschickt werden:
Morgen Papiertonne, bitte raus stellen!
Morgen Restmüll, bitte rausstellen!

Kann man das mit einer Programmzeile bewerkstelligen?
Die Fragestellung lässt sich eindeutig mit ja beantworten.
FHEM 5.6 + Pilight + Pimatic auf BananaPro mit Bananian 15.04 r01
FB7270 v2 & FB7412
LDA382A mit WifiLight
MAX-Cube (aculfw), 6 Fensterkonstakte, 5 HK-Thermostate, 3 WandThermostate
[...]

pointde

Das mit der Bügelzimmertüre funktioniert jetzt Top, danke.

Die Mülltonne liefert folgenden Fehler:
MuelltonnePushover: Missing right curly or square bracket at (eval 406) line 2, at end of line
syntax error at (eval 406) line 2, at EOF

anfichtn

okay, kein Thema. Fhem mag leerzeichen nach { und vor } nicht.

define MuelltonnePushover at *16:00:00 {if (Value("RestMuellIn") eq "1") {fhem ("set Pushover msg 'SchwarzeTonne' 'Morgen Restmülltonne rausstellen' ")} elsif (Value("PapierIn") eq "1") {fhem ("set Pushover msg 'Papiertonne' 'Morgen Papiertonne rausstellen' ")}


Grüße

anfichtn
FHEM 5.6 + Pilight + Pimatic auf BananaPro mit Bananian 15.04 r01
FB7270 v2 & FB7412
LDA382A mit WifiLight
MAX-Cube (aculfw), 6 Fensterkonstakte, 5 HK-Thermostate, 3 WandThermostate
[...]

pointde

#298
Selber Fehler, also habe ich nochmal eine Abschließende Klammer hinzugefügt:
define MuelltonnePushover at *16:00:00 {if (Value("RestMuellIn") eq "5") {fhem ("set Pushover msg 'SchwarzeTonne' 'Morgen Restmülltonne rausstellen' ")} elsif (Value("PapierIn") eq "16") {fhem ("set Pushover msg 'Papiertonne' 'Morgen Papiertonne rausstellen' ")}}

Jetzt kommt aber nur eine Nachricht von der Papiertonne, obwohl Restmüll auch passen würde.

edit:
der Dummy heißt RestmuellIn, falls fhem Groß- und klein unterscheidet...
Dies habe ich auch geändert, es kommt aber immer nur eine Meldung, jetzt die 1. vom Restmüll????

Icinger

Ein if beendet die Ausführung, sobald der erste if/elsif/else-Teil zugetroffen hat.

Wenn also Restmüll zutrifft, wird der Rest des Konstrukts nicht mehr beachtet.

Und ja, FHEM ist case-sensitiv. Bzw. eigentlich ist perl case-senstitiv und FHEM beruht ja auf perl.

lg, Ici
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho