Hauptmenü

Perl im DOIF mit Variable

Begonnen von abraxas678, 23 Oktober 2016, 17:15:50

Vorheriges Thema - Nächstes Thema

abraxas678

Hallo,

ich bekomme folgende Kleinigkeit einfach nicht gebacken, evt kann mir wer helfen?

Ich habe einen Dummy "talk" und ein DOIF d_TTS_talk:

define d_TTS_talk DOIF ([talk])(IF ([Voice] ne "off")({my $talk = ReadingsVal("talk", "state", "leer");;
GetHttpFile("autoremotejoaomgcd.appspot.com", "/sendmessage?key=KEY-ZENSIERT&message=$talk")}))


Immer wenn der Dummy mit einer Nachricht gefüllt wird und der Dummy "Voice" nicht auf "off" steht, soll der state von "talk" an's Ende der Url geschrieben werden ($talk).

Was ich bekommen ist jedoch nicht GetHttpFile("autoremotejoaomgcd.appspot.com", "/sendmessage?key=KEY-ZENSIERT&message=hallo"

sondern

GetHttpFile("autoremotejoaomgcd.appspot.com", "/sendmessage?key=KEY-ZENSIERT&message=$talk"

Alles was ich eigentlich will ist, dass die Variable also solche erkannt wird und nicht als Text. Ich hab es bereit mit doppelten und einfachen Anführungszeichen versucht, ohne Erfolg.

Danke!
Richard

Damian

Zitat von: abraxas678 am 23 Oktober 2016, 17:15:50
Hallo,

ich bekomme folgende Kleinigkeit einfach nicht gebacken, evt kann mir wer helfen?

Ich habe einen Dummy "talk" und ein DOIF d_TTS_talk:

define d_TTS_talk DOIF ([talk])(IF ([Voice] ne "off")({my $talk = ReadingsVal("talk", "state", "leer");;
GetHttpFile("autoremotejoaomgcd.appspot.com", "/sendmessage?key=KEY-ZENSIERT&message=$talk")}))


Immer wenn der Dummy mit einer Nachricht gefüllt wird und der Dummy "Voice" nicht auf "off" steht, soll der state von "talk" an's Ende der Url geschrieben werden ($talk).

Was ich bekommen ist jedoch nicht GetHttpFile("autoremotejoaomgcd.appspot.com", "/sendmessage?key=KEY-ZENSIERT&message=hallo"

sondern

GetHttpFile("autoremotejoaomgcd.appspot.com", "/sendmessage?key=KEY-ZENSIERT&message=$talk"

Alles was ich eigentlich will ist, dass die Variable also solche erkannt wird und nicht als Text. Ich hab es bereit mit doppelten und einfachen Anführungszeichen versucht, ohne Erfolg.

Danke!
Richard
Da machst du dir das Leben unnötig schwer, besser :

define d_TTS_talk DOIF ([talk] and [?Voice] ne "off") (GetHttpFile("autoremotejoaomgcd.appspot.com", "/sendmessage?key=KEY-ZENSIERT&message=[talk]"))


Gruß

Damian
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

abraxas678

Hallo Damian,

danke für die schnelle Antwort. Das mit der Variable funktioniert mit deinem Code, es wird "hallo" angezeigt. GetHttpFile geht jedoch nicht:

Unknown command GetHttpFile("autoremotejoaomgcd.appspot.com",, try help.

ich dachte man kann GetHttpFile nur aus Perl in {} ausführen. Kann das sein? Sieht so danach aus.

Gruss
Richard

Damian

Zitat von: abraxas678 am 23 Oktober 2016, 17:31:49
Hallo Damian,

danke für die schnelle Antwort. Das mit der Variable funktioniert mit deinem Code, es wird "hallo" angezeigt. GetHttpFile geht jedoch nicht:

Unknown command GetHttpFile("autoremotejoaomgcd.appspot.com",, try help.

ich dachte man kann GetHttpFile nur aus Perl in {} ausführen. Kann das sein? Sieht so danach aus.

Gruss
Richard
Ja, du hast Recht, da müssen noch die Klammern hin:

define d_TTS_talk DOIF ([talk] and [?Voice] ne "off") ({GetHttpFile("autoremotejoaomgcd.appspot.com", "/sendmessage?key=KEY-ZENSIERT&message=[talk]")})
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

abraxas678

OMG wie einfach! Ich Danke Dir vielmals, jetzt geht's!

Schönen Sonntag noch!

Richard