FHEM Forum

FHEM => fhem-users => Thema gestartet von: Tobias am 09 Dezember 2008, 09:07:04

Titel: [FHZ] Kontextvariablen
Beitrag von: Tobias am 09 Dezember 2008, 09:07:04
                                                                 

Hi all,

gibt es in FHEM eine Möglichkeit Kontextvariablen zu definieren, die
bei der Auswertung verschiedenster Events mit überprüft werden ?
Meine Vorstellung ist sowas wie: $HOLIDAY (ist true, wenn ich im
Urlaub bin, und wird bei verschiedensten Events abgefragt, da nur
bestimmte Dinge passieren sollen, wenn ich NICHT/DOCH im Urlaub bin).
So fallen mir noch viele Variablen ein: $AT_HOME, $OUT_AN_HOUR .....
oder so

Geht sowas per 'useattr' und wie frage ich dann diese attribute ab,
oder kann man anders globale Variablen setzen ?

Danke,
Gruß,
Olaf
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: rudolfkoenig am 09 Dezember 2008, 15:34:23
                                                   

> gibt es in FHEM eine Möglichkeit Kontextvariablen zu definieren, die
> bei der Auswertung verschiedenster Events mit überprüft werden ?

Ja, es gibt zwei Moeglichkeiten.
1. define HOLIDAY dummy
    set HOLIDAY 1
    list HOLIDAY
    { $value{HOLIDAY} }

2. attr global userattr HOLIDAY AT_HOME OUT_AN_HOUR
   attr global HOLIDAY 1
   list global
  { $attr{global}{HOLIDAY} }

Bei Methode 2 koennen alle Geraete ein Attribut HOLIDAY bekommen, aber
beim setzen von "userattr" muessen alle "neuen" Variablen enthalten
sein.

Gruss,
  Rudi
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: nobody0472 am 10 Dezember 2008, 01:54:23
                                                                 

Hi all,

habe die erste Variante verwendet, und folgende Definitionen germacht:

define HOLIDAY dummy

define switchholiday notify VC2 { if("%" ne "off") { fhem("set HOLIDAY
1") } else { fhem("set HOLIDAY 0") } }        /* fürs VoiceCommand */
define act_on_holiday notify HOLIDAY { fhem("trigger act_on_sztemp
$value{sz}")}

define act_on_sztemp notify sz { if(% < 25 || $value{HOLIDAY})  { fhem
("set AirCondition off") } else { fhem("set AirCondition on") }  }

Das Problem ist jetzt, wenn sich HOLIDAY ändert wird auf eine Änderung
im SZ-TEMP gewartet (SZ ist ein FHT mit measured-temp attribut).

Trotz Trigger wird die Änderung nicht sofort propagiert. Obwohl SZ-
Temp paßt und es sofort nach Änderung von HOLIDAY schalten müßte.

Ich wäre für Hilfe dankbar,
Gruß,
Olaf
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: nobody0472 am 10 Dezember 2008, 02:07:53
                                                                 

Hi all,

und noch eine Frage:

Ist es möglich dem Dummy-Device HOLIDAY Attribute zuzuweisen wie: Day
und MONTH und diese auch in Notify oder AT Kommandos abzufragen ?
Und wenn, wie seht die Syntax dafür aus ....

Zu Erklärung:

Ziel ist, das System bis zu einem gewissen Tag in HOLIDAY zu schicken
und gemäß vorher (per WEB) definiertem Attribute die FHT's und FS20
entsprechend wieder anzufahren.

Danke,
Gruß,
Olaf
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: nobody0472 am 10 Dezember 2008, 08:44:39
                                                                 

Eine Korrektur:

das act_on_sztemp sieht etwas anders aus:

define act_on_sztemp notify sz { if(($value{sz} gt "measured-temp:
18.0") && $value{HOLIDAY} == 0) { fhem("set AirCondition on") } else
{ fhem("set AirCondition off") } }

Schaltet die AirCo ein, wenn nicht HOLIDAY und Temp über 18 Grad.
Allerdings auch hier: Wenn HOLIDAY schaltet und obiges getriggert
wird, wartet das System auf ein Update für SZ-Temp. Warum ?

On 10 Dez., 01:54, Olaf Droegehorn computertechnik.de> wrote:
> Hi all,
>
> habe die erste Variante verwendet, und folgende Definitionen germacht:
>
> define HOLIDAY dummy
>
> define switchholiday notify VC2 { if("%" ne "off") { fhem("set HOLIDAY
> 1") } else { fhem("set HOLIDAY 0") } }        /* fürs VoiceCommand */
> define act_on_holiday notify HOLIDAY { fhem("trigger act_on_sztemp
> $value{sz}")}
>
> define act_on_sztemp notify sz { if(% < 25 || $value{HOLIDAY})  { fhem
> ("set AirCondition off") } else { fhem("set AirCondition on") }  }
>
> Das Problem ist jetzt, wenn sich HOLIDAY ändert wird auf eine Änderung
> im SZ-TEMP gewartet (SZ ist ein FHT mit measured-temp attribut).
>
> Trotz Trigger wird die Änderung nicht sofort propagiert. Obwohl SZ-
> Temp paßt und es sofort nach Änderung von HOLIDAY schalten müßte.
>
> Ich wäre für Hilfe dankbar,
> Gruß,
> Olaf
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: rudolfkoenig am 10 Dezember 2008, 08:47:48
                                                   

> Ich wäre für Hilfe dankbar,

Man triggert keine "notify" definitionen, sondern die Events, worauf
die notifies hoeren, in deinem Fall also "trigger sz 25", wobei mir
nicht klar ist, wieso "%<25" funktionieren soll, ein FHT meldet
ueblicherweise nicht nur ein Wert.

Weiterhin sollte "inform timer" in einem telnet Fenster Dir helfen,
dann sieht man sofort, welche Event herumfliegen.



--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: rudolfkoenig am 10 Dezember 2008, 08:48:42
                                                   

> Ist es möglich dem Dummy-Device HOLIDAY Attribute zuzuweisen wie: Day
> und MONTH und diese auch in Notify oder AT Kommandos abzufragen ?
> Und wenn, wie seht die Syntax dafür aus ....

Aeh. Siehe Loesung 2 weiter oben...

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: rudolfkoenig am 10 Dezember 2008, 08:51:55
                                                   

> Aeh. Siehe Loesung 2 weiter oben...

Sorry. Die Frage war wohl eher wie man das im notify/at abfragt, und
nicht wie man es definiert:
Antwort: im Kommando Teil, der zwangsweise in perl sein muss, und dann
mit {if($attr{HOLIDAY}{MONTH})...}
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: nobody0472 am 10 Dezember 2008, 09:48:55
                                                                 

Hi,

danke, das ist klasse.

Bzgl. SZ > 25 hast Du natürlich recht, ich bekomme aber keine Variante
ans laufen, dass auf die gemessene Temperatur verglichen wird.
Habe folgendes versucht:

define act_on_sztemp notify sz { if(($value{sz} gt "measured-temp:
18.0")  .........

das geht nicht, zumindest nicht wenn ich Werte über 25.0 eintrage ....

Darauf hab ich dann nach suche hier folgendes versucht:

define act_on_sztemp notify sz { if($defs{sz}{READINGS}{"measured-
temp"}{VAL} gt "25.0") ........

das geht irgendwie genau so wenig

Wenn mir noch einer verraten kann, wie ich zuverlässig auf die
gemessene Temp eines FHT zugreifen kann, wäre ich quasi glücklich.
Dann hat FHEM meine Aktuatoren voll im Griff.

Danke,
Olaf
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: rudolfkoenig am 11 Dezember 2008, 09:17:55
                                                   

> Bzgl. SZ > 25 hast Du natürlich recht, ich bekomme aber keine Variante
> ans laufen, dass auf die gemessene Temperatur verglichen wird.
> Habe folgendes versucht:

Versuch mal FAQ #12 (http://www.koeniglich.de/fhem/faq.html#faq12)
"durchzuarbeiten".
Wenn es hakt, dann sag mir an welcher Stelle der Anleitung. So kann
ich besser helfen.

Gruss,
  Rudi
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: JuergenL am 12 Dezember 2008, 18:57:50
                                               

> Versuch mal FAQ #12 (http://www.koeniglich.de/fhem/faq.html#faq12)
> "durchzuarbeiten".
> Wenn es hakt, dann sag mir an welcher Stelle der Anleitung. So kann
> ich besser helfen.

Es hakt, zumindest bei mir unter FHEM 4.1:

FHZ> { "$value{hzk.dg.bad}" }
Bareword "hzk" not allowed while "strict subs" in use at (eval 41)
line 1.
Bareword "dg" not allowed while "strict subs" in use at (eval 41) line
1.
Bareword "bad" not allowed while "strict subs" in use at (eval 41)
line 1.

Oder geht das auch noch nicht in 4.1?

LG,
Jürgen
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: rudolfkoenig am 13 Dezember 2008, 13:53:52
                                                   

> FHZ> { "$value{hzk.dg.bad}" }

Das schreibt man so:

{ $value{"hzk.dg.bad"} }

oder

{ $value{'hzk.dg.bad'} }

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: JuergenL am 13 Dezember 2008, 14:43:03
                                               

Aber in der FAQ steht (die Anführungszeichen hatte ich nur zur
Abgrenzung des Befehls drumherum gemacht).: {$value{hzk.dg.bad}}
Und das geht eben nicht:
FHZ> {$value{hzk.dg.bad}}
Bareword "hzk" not allowed while "strict subs" in use at (eval 17)
line 1.
Bareword "dg" not allowed while "strict subs" in use at (eval 17) line
1.
Bareword "bad" not allowed while "strict subs" in use at (eval 17)
line 1.

/Jürgen

On 13 Dez., 13:53, Rudolf Koenig wrote:
> > FHZ> { "$value{hzk.dg.bad}" }
>
> Das schreibt man so:
>
> { $value{"hzk.dg.bad"} }
>
> oder
>
> { $value{'hzk.dg.bad'} }
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: Martin Fischer am 13 Dezember 2008, 15:07:49
Am Mittwoch, 10. Dezember 2008 schrieb Olaf Droegehorn:
> Zu Erklärung:
>
> Ziel ist, das System bis zu einem gewissen Tag in HOLIDAY zu schicken
> und gemäß vorher (per WEB) definiertem Attribute die FHT's und FS20
> entsprechend wieder anzufahren.

warum machst du das nicht alles über ein externes script? das macht dir das
leben vielleicht etwas leichter.

beispiel:
meine frau arbeitet halbtags nach einem festen rhytmus. z.b. an geraden wochen
vormittags und an ungeraden nachmittags.

dazu habe ich mir ein script geschrieben (rotateShiftWork.sh) welches um 00:15
uhr über einen at-befehl aufgerufen wird.

# FHT Wochenplan setzen
define at.11.EG.wz.HZ at *00:15:00 "/usr/local/bin/rotateShiftWork.sh
EG.wz.HZ"

das script prüft nach gerader / ungerader woche und setzt dann dementsprechend
an den übergebenen FHT's den wochenplan neu.

in dem script definiere ich die zeiten. hier mal ein paar auszüge aus dem
script:

# define work days
WORK="mon tue wed thu fri"
# define recreation days
FREE="sat sun"
# define range for odd weeks, e.g. "Frühschicht",
# (from1 to1 from2 to2)
odd=(12:30 22:30 24:00 24:00)
# define range for even weeks, e.g. "Spätschicht",
# (from1 to1 from2 to2)
even=(08:30 11:30 16:30 22:30)
# define range for recreation, e.g. "Wochenende",
# (from1 to1 from2 to2)
free=(08:30 23:50 24:00 24:00)
# define fhem.pl host:port
FHEM_BIN="/usr/local/bin/fhem.pl localhost:7072"
# define file for rotation
WEEKFILE="/var/fhem/week.save"

und diese setze ich dann:

# set work days
for ((i=0; i<${#span        for DAY in ${WORK}; do
                VALUE="${VALUE}${DAY}-${span[$i]} ${week[$i]} "
        done
        for FHT in ${FHT_SET}; do
                ${FHEM_BIN} "set ${FHT} ${VALUE}"
        done
        unset VALUE
done

# set recreation days
for ((i=0; i<${#span        for DAY in ${FREE}; do
                VALUE="${VALUE}${DAY}-${span[$i]} ${free[$i]} "
        done
        for FHT in ${FHT_SET}; do
                ${FHEM_BIN} "set ${FHT} ${VALUE}"
        done
        unset VALUE
done

so was ähnliches könntest du dir dann auch für dein HOLIDAY definieren und
dann auswerten.

das komplette script ist laut rudi im 4.5er release im contrib-verzeichnis zu
finden.

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: Martin Fischer am 13 Dezember 2008, 16:51:30
Am Donnerstag, 11. Dezember 2008 schrieb Rudolf Koenig:
> Versuch mal FAQ #12 (http://www.koeniglich.de/fhem/faq.html#faq12)
> "durchzuarbeiten".
> Wenn es hakt, dann sag mir an welcher Stelle der Anleitung. So kann
> ich besser helfen.

ich habe das mal zum anlass genommen um auch etwas zu testen..

folgendes habe ich gemacht:

attr global userattr BINspeech
attr global BINspeech echo
define EG.wz.HZ.n01 notify .*actuator.* { { $attr{global}{BINspeech} } "@" }

das ergebnis im logfile:
Useless use of hash element in void context at (eval 137) line 1.
2008.12.13 16:44:48 3: EGszHeizung

es klappt also soweit, bis auf die fehlermeldung... wo ist das problem?

die fehlermeldung
"Useless use of hash element in void context at (eval 137) line 1."
bringt er auch bei "%" oder "@ %"

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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: rudolfkoenig am 13 Dezember 2008, 18:27:02
                                                   

> 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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: rudolfkoenig am 13 Dezember 2008, 18:36:27
                                                   

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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: Martin Fischer am 13 Dezember 2008, 19:19:48
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: rudolfkoenig am 13 Dezember 2008, 23:33:07
                                                   

> 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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: Tobias am 13 Dezember 2008, 23:42:04
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: Martin Fischer am 13 Dezember 2008, 23:51:05
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: Martin Fischer am 13 Dezember 2008, 23:56:05
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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: Dr. Boris Neubert am 14 Dezember 2008, 09:43:59
                                                   

> 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
-~----------~----~----~----~------~----~------~--~-
Titel: [FHZ] Re: Kontextvariablen
Beitrag von: rudolfkoenig am 14 Dezember 2008, 15:26:40
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
-~----------~----~----~----~------~----~------~--~-