Doif, Push Nachricht mit Timestamp

Begonnen von jailbreaker07, 23 September 2017, 11:24:31

Vorheriges Thema - Nächstes Thema

jailbreaker07

Hallo,
ich habe einen DOIF angelegt mit dem ich eine Push Nachricht senden will. In der Nachricht soll die aktuelle Uhrzeit stehen.

So ist der aktuelle Stand : define DOIF_Test DOIF ([Testy2:"on"]) (
set Pushbullet message ,,.(split(/ /,ReadingsTimestamp($NAME,'state','')))[1]."  | Alarmanlage: Feuer  | Thorsten)


Jedoch zeigt er hier anstatt der Uhrzeit: ,,.(split(/ /,ReadingsTimestamp($NAME,'state','')))[1]." an...Ich gehe mal von aus das da dies ein Klammerproblem ist....  ich komme leider nicht auf die richtige Lösung.... In meinen notify´s funktioniert dies.....


vielen dank


Gruß

Thorsten

amenomade

Was soll das ,,vor .(split bedeuten?

Wenn " gemeint ist, bedeutet deine Definition:
sende die String ".(split(/ /......." als Nachricht. Kein Wunder. Er schickt genau die Buchstabenskette, die Du ihm sagst. Zeig mal dein Notify zum Vergleich?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

jailbreaker07

Hallo,
Das notify wo das mit dem Timestamp funktioniert:
Testy2:on  {
fhem("set Pushbullet message ".(split(/ /,ReadingsTimestamp($NAME,'state','')))[1]."  | Alarmanlage: Feuer  | Thorsten")
}


Gruß

Thorsten


Gesendet von iPhone mit Tapatalk

CoolTux

Im Notify gehst Du auf Perlebene. Im DOIF nicht. So kann das nicht gehen. Split ist eine Perlfunktion.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

jailbreaker07

Okay.... und was muss ich im Code ändern, damit der Code in Perlebene ausgeführt wird?


Gesendet von iPhone mit Tapatalk

CoolTux

Das selbe wie im notify denke ich. Geschweifte Klammern
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Frank_Huber

imho anstatt normaler Klammern für den Ausführungsteil nimmt man geschweifte.
Commandref/Wiki sagen bestimmt mehr dazu.

jailbreaker07

Zitat von: Frank_Huber am 23 September 2017, 19:06:02
imho anstatt normaler Klammern für den Ausführungsteil nimmt man geschweifte.
Commandref/Wiki sagen bestimmt mehr dazu.

Hey,
danke den Klammern hat es gelegen :-)


danke

Gruß

Thorsten

Frank_Huber

oder so:

Alarme:0141317:.*
set TelegramBot message @-xxxxxxxxxxx {( "Alarm Hagsfeld! - ".ReadingsTimestamp("Alarme","0141317","")."\n".ReadingsVal("Alarme","0141317","") )};


So gehtst nicht komplett raus auf perl, sondern nur mit dem Teil der die Nachricht enthält.
ich leite damit POCSAG Alarme (unsere Abteilung der FFW) an eine Telegram Gruppe weiter.

jailbreaker07

Hallo,
ist schon etwas her.... ich hatte das DOIF zum laufen bekommen..... aber leider hatte ich dieses Test DOIF wieder gelöscht... Ich bekomme ich es nicht mehr hin....

([Tuerschloss:"^unlocked$"])
{
fhem("set Pushbullet message ".(split(/ /,ReadingsTimestamp($NAME,'state','')))[1]."  | Tür entriegelt")
}
DOELSEIF
([Tuerschloss:"^locked$"])
{
fhem("set Pushbullet message ".(split(/ /,ReadingsTimestamp($NAME,'state','')))[1]."  | Tür verriegelt")
}


der Fehler lautet:

{ fhem("set Pushbullet message ".(split(/ /,ReadingsTimestamp($NAME,'state','')))[1]." | Tür entriegelt") }: Global symbol "$NAME" requires explicit package name at (eval 39325) line 1.

wo ist hier der Klammerfehler?

Vielen dank

für die Hilfe


Gruß

thorsten


Amenophis86

Wer sagt denn etwas von Klammerfehler? Der Fehler besagt, dass die Variable $NAME nicht kennt.
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...

jailbreaker07

Hallo,
im Notify funktioniert das...... wo liegt hier den der Fehler..... Ich dachte durch einer falschen Klammer setzung wird der Code in der falschen Ebene ausgeführt, und deswegen kann er mit "$Name" nichts anfangen....

wo liegt den hier der Fehler?

Gruß

Thorsten

automatisierer

Da ist für meine Begriffe schon nen Klammerfehler drin.
der DOIF Aufbau sieht ja so aus:

define <name> DOIF (Bedingungen) (Ausführungen) DOELSEIF ...


die geschweiften Klammern gibbet da nich...

Zitat Commandref:
ZitatBerechnungen im Ausführungsteil 

Berechnungen können in geschweiften Klammern erfolgen. Aus Kompatibilitätsgründen, muss die Berechnung unmittelbar mit einer runden Klammer beginnen. Innerhalb der Perlberechnung können Readings, Status oder Internals wie gewohnt in eckigen Klammern angegeben werden.

Anwendungsbeispiel: Es soll ein Vorgabewert aus zwei verschiedenen Readings ermittelt werden und an das set Kommando übergeben werden:

define di_average DOIF ([08:00]) (set TH_Modul desired {([default:temperature]+[outdoor:temperature])/2})
attr di_average do always

automatisierer

#13
ich würde es mal so versuchen:


([Tuerschloss:"^unlocked$"])
(set Pushbullet message "{(.(split(/ /,ReadingsTimestamp($NAME,'state','')))[1].)} | Tür entriegelt")

ungetestet...


EDIT:
bin mir nicht sicher...
?? eher $name anstatt $NAME ??

CoolTux

Heißt das in DOIF nicht $DEVICE statt $NAME
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net