[FHZ] Kontextvariablen

Begonnen von Tobias, 09 Dezember 2008, 09:07:04

Vorheriges Thema - Nächstes Thema

rudolfkoenig

                                                   

> define EG.wz.HZ.n01 notify .*actuator.* { { $attr{global}{BINspeech} } "@" }
[...]
> Useless use of hash element in void context at (eval 137) line 1.
[...]
> es klappt also soweit, bis auf die fehlermeldung... wo ist das problem?

Um ehrlich zu sein, genau wie perl, ich verstehe auch nicht, was Du
hier machen willst. Sowas wie
{ $attr{global}{BINspeech} = "@" }

?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-

rudolfkoenig

                                                   

On Dec 13, 2:43 pm, Juergen Lennefer wrote:
> Aber in der FAQ steht (die Anführungszeichen hatte ich nur zur
> Abgrenzung des Befehls drumherum gemacht).: {$value{hzk.dg.bad}}

Um genau zu sein, in der FAQ steht {$value{myfht}}. Das geht auch, nur
wenn man im Namen einen der wenigen noch erlaubten "Sonderzeichen" hat
(Punkt oder Doppelpunkt), dann meckert perl. In diesem Fall muss man
es halt in Anfuehrungszeichen einbetten.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-

Martin Fischer

Am Samstag, 13. Dezember 2008 schrieb Rudolf Koenig:
> Um ehrlich zu sein, genau wie perl, ich verstehe auch nicht, was Du
> hier machen willst. Sowas wie
> { $attr{global}{BINspeech} = "@" }

nö... das wär ja einfach :-)

dann bring ich mal licht in's dunkel:

ich will mittels "attr global userattr" globale variablen definieren..
beispiel:

attr global userattr BINSPEECH
attr global BINSPEECH /usr/local/lib/FHEM/scripts/fhem2speech.sh -s

um dann in den notify's nicht jedesmal den kompletten befehl zu tippern, hatte
ich das wie folgt realisiert:

define EG.wz.HZ.n01 notify .*warnings.*Battery.*low.* { { $attr{global}
{BINspeech} } "Achtung, Batterie schwach: @" }

das @ bzw. % sind nichts anderes, als das was du sonst an dieser stelle
übergeben würdest.. ohne userattr würde die zeile ja wie folgt lauten:

define EG.wz.HZ.n01
notify .*warnings.*Battery.*low.* "/usr/local/lib/FHEM/scripts/fhem2speech.sh -s "Achtung,
Batterie schwach: @""

soweit funktioniert das auch.. der befehl wird normal ausgeführt aber im log
taucht halt die fehlermeldung auf:
Useless use of hash element in void context at (eval 130) line 1.

jetzt deutlicher?

und wo wir schon dabei sind:

wie bekomme ich die ausgabe eines shellscriptes in eine variable?

beispiel:
FHZ> "lpstat -d"

erzeugt im logfile:
Standardziel des Systems: ml5000a

ein
FHZ> { my $lp = system("lpstat -d");; $lp }
gibt -1 zurück und im logfile:
Standardziel des Systems: ml5000a

hintergrund auch hier:
attr global userattr PRINTER
attr global PRINTER { my $lp = system("lpstat -d");; $lp }

nur mal so ins blaue.. es fehlt noch ein split usw... letzlich soll in PRINTER
lediglich ml5000a stehen..

ich denke aber es reicht um zu erklären, was ich will..

gruß martin

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

rudolfkoenig

                                                   

> define EG.wz.HZ.n01 notify .*warnings.*Battery.*low.* { { $attr{global}
> {BINspeech} } "Achtung, Batterie schwach: @" }

Sollte dann heissen:
define EG.wz.HZ.n01 notify .*warnings.*Battery.*low.* { system("$attr
{global}{BINspeech} Achtung, Batterie schwach: @") }

> wie bekomme ich die ausgabe eines shellscriptes in eine variable?

{ $a=`lpstat -d` }

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-

Tobias

Am Samstag, 13. Dezember 2008 schrieb Rudolf Koenig:
> > define EG.wz.HZ.n01 notify .*warnings.*Battery.*low.* { { $attr{global}
> > {BINspeech} } "Achtung, Batterie schwach: @" }
>
> Sollte dann heissen:
> define EG.wz.HZ.n01 notify .*warnings.*Battery.*low.* { system("$attr
> {global}{BINspeech} Achtung, Batterie schwach: @") }

na das werde ich dann gleich mal ausprobieren :-)

> > wie bekomme ich die ausgabe eines shellscriptes in eine variable?
>
> { $a=`lpstat -d` }

und dieses auch :-)

danke rudi! grosses lob mal an dieser stelle, für den tollen support!

vielleicht wäre es gut, wenn das auch mal in die FAQ aufgenommen wird..

gruß martin

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Martin Fischer

Am Samstag, 13. Dezember 2008 schrieb Martin Fischer:
> > > wie bekomme ich die ausgabe eines shellscriptes in eine variable?
> >
> > { $a=`lpstat -d` }

das klappt leider nicht hier:
attr global PRINTER { `lpstat -d | awk '{ print $4 }'` }

ein 'list global' bringt:
PRINTER    { `lpstat -d | awk '{ print $4 }'` }

:-(

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Martin Fischer

Am Samstag, 13. Dezember 2008 schrieb Rudolf Koenig:
> > define EG.wz.HZ.n01 notify .*warnings.*Battery.*low.* { { $attr{global}
> > {BINspeech} } "Achtung, Batterie schwach: @" }
>
> Sollte dann heissen:
> define EG.wz.HZ.n01 notify .*warnings.*Battery.*low.* { system("$attr
> {global}{BINspeech} Achtung, Batterie schwach: @") }

das liefert nun ein:
Use of uninitialized value in concatenation (.) or string at (eval 15) line 1.
Can't exec "Achtung,": No such file or directory at (eval 15) line 1.
2008.12.13 23:52:45 3: -1

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-
--
Admin, Developer, Gründungsmitglied des FHEM e.V.

Dr. Boris Neubert

                                                   

> Can't exec "Achtung,": No such file or directory at (eval 15) line 1.

Klaro: $attr{global}{BINspeech} ist nicht definiert

> das klappt leider nicht hier:
> attr global PRINTER { `lpstat -d | awk '{ print $4 }'` }

Auch klaro: attr Werte werden auch nicht als Kommando behandelt.
Muss heissen: { $attr{global}{PRINTER} = `lpstat -d | awk '{ print \
$4 }'` }
Man achte auf dem Backslash, sonst will perl aus $4 was machen.

> vielleicht wäre es gut, wenn das auch mal in die FAQ aufgenommen wird..
Freiwillige vor. Sollte aber in einem "Perl programming in fhem"
Abschnitt landen.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

Am Sonntag, 14. Dezember 2008 schrieb Rudolf Koenig:
> > Can't exec "Achtung,": No such file or directory at (eval 15) line 1.
>
> Klaro: $attr{global}{BINspeech} ist nicht definiert

jo... hast recht.. da war ein typo..

dennoch ist der string für meine verwendung nicht korrekt:
define EG.wz.HZ.n01 notify .*warnings.*Battery.*low.* { system("$attr
{global}{BINspeech} Achtung, Batterie schwach: @") }

gibt nur "Achtung" aus, da alles nach dem , in der bash als weitere argumente
gesehen wird..

richtig muss der define dann heissen:
define foo notify .*warnings.*Battery.*low.* { system("$attr{global}
{BINSPEECH} 'Achtung, Batterie schwach: @'") }

also noch die single-quotes dazu..

> > das klappt leider nicht hier:
> > attr global PRINTER { `lpstat -d | awk '{ print $4 }'` }
>
> Auch klaro: attr Werte werden auch nicht als Kommando behandelt.
> Muss heissen: { $attr{global}{PRINTER} = `lpstat -d | awk '{ print \
> $4 }'` }
> Man achte auf dem Backslash, sonst will perl aus $4 was machen.

ok... das klappt nun auch...

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "FHZ1000 users on Linux" group.
To post to this group, send email to FHZ1000-users-on-unix@googlegroups.com
To unsubscribe from this group, send email to FHZ1000-users-on-unix+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/FHZ1000-users-on-unix?hl=en
-~----------~----~----~----~------~----~------~--~-