Hallo Zusammen,
bin seit kurzem fleissiger FHEM User und habe durch diese Gruppe schon viel
gelernt.
Leider sind meine Programmierkenntnisse ziemlich veraltern und beziehen
sich auf Basic und Pascal (wer das noch kennt :-)
Hab mir jetzt auch ein Pearl Buch bestellt und will mich in das Thema
einlesen.
Aktuell würde ich gerne ein paar Abfragen in FHEM einbauen, die mir dann
eine Meldung am TV anzeigen.
Wie ich die Meldung generiere und abschicke habe ich bereits rausgefunden
und funktioniert.
Die Frage die noch offen ist, wie bekommen ich die Abfragen in FHEM. Die
Doku (reference, Wiki, etc.) hat mir da leider nicht weitergeholfen.
Ich möchte etwas wie z.B.
Read Temp im Wohnzimmer - if < 20 Grad then Meldung an TV
Read Fenster Status Bas - if offen then Meldung an TV
Read AussenTemp -if > 20 Grad then Meldung an TV
usw.
Kann mir da jemand bitte etwas unter die Arme greifen und mir etwas
"Starthilfe" geben?
Vielen Dank
Markus
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Hi Markus,
Zwei Möglichkeiten:
Du betreibst "Polling", das kommt Deiner Denkweise wohl näher: Einen
timer setzen (at) der zB alle 15 Minuten den Temperatur-Wert des
Sensors prüft und dann ggf Folgeaktionen auslöst.
http://fhem.de/commandref.html#at
fhem funktioniert jedoch Event-getrieben, dann wäre das was Du als
"Read" schreibst in fhem das notify:
http://fhem.de/commandref.html#notify
Der Unterschied in der Denkweise ist:
Du machst nicht ein 'read' wenn Du die Info brauchst, sondern Du
prüfst immer dann, wenn eine Nachricht vom entsprechenden Sensor
eingeht. Also 'sobald der Sensor die Temperatur-Info schickt, prüfe ob
Folgeaktionen erforderlich sind und führe diese ggf aus'.
Meine Vermutung war nun, dass Du innen ein FHT80b hast und draußen ein
S300TH.
> Read Temp im Wohnzimmer - if < 20 Grad then Meldung an TV
So ähnlich wie http://fhemwiki.de/wiki/Heizungskontrolle_Einfach
(nur statt Heizung einzuschalten schickst Du ne Meldung ans TV)
> Read Fenster Status Bas - if offen then Meldung an TV
http://fhemwiki.de/wiki/FHTTK:_Benachrichtigung_bei_offenem_Fenster
> Read AussenTemp -if > 20 Grad then Meldung an TV
#Pseudocode#
define notify MeldungWarm notify AussenTemp {if (%>20) {Nachricht an
TV} }
Gruß + viel Erfolg,
Uli
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hi Uli,
vielen Dank schonmal.
Hab jetzt anhand den Infos etwas gebastelt und das ist rausgekommen:
*define Badfenter +*00:30:00 { if ("{ReadingsVal("FHT_5133", "window",
"nA")}" ne "closed"){ fhem "trigger BadFensterOffen") } }
define act_on_BadFensterOffen notify BadFensterOffen " printf "showdialog
-time 5 -text Badfenster offen -header FHEM" | nc 192.168.0.7 1450 "
*Allerdings bin ich mir mit der ReadingsVal Abfrage noch nicht ganz sicher?
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hab nochmal ein bischen weiter gemacht:
define n_fenster notify n_fenster {\
my $fenster_offen=0;;\
my $heizung_status={ReadingsVal("FHT_5133","window","nA")};;\
my $ventil=ReadingsVal($_, "window", "nA");;\
if ($ventil = "open") {\
$fenster_offen=1\
}\
}\
if ($fenster_offen != 1) {\
fhem("trigger BadFensterOffen") \
}
define act_on_BadFensterOffen notify BadFensterOffen " printf "showdialog
-time 5 -text Badfenster offen -header FHEM" | nc 192.168.0.7 1450 "
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Bin am verzeifeln!!
Jetzt komm ich rigendwie nicht weiter.
Folgendes habe ich in der cfg:
*define a_Badfenster at +*00:10:00 trigger Badfenster
define Badfenster notify Badfenster { if ({ReadingsVal("FHT_5133",
"window", "nA")} ne "closed") { fhem ("trigger BadFensterOffen") } }
define BadFensterOffen notify BadFensterOffen " printf "showdialog -time 5
-text Badfenster offen -header FHEM" | nc 192.168.0.7 1450 "*
Das heißt, wenn der Status des Fensters nicht closed ist, dann soll die
Meldung verschickt werden.
Leider kommt die Meldung auch wenn das Fenster zu ist.
Wenn ich direkt in die Befehlszeile "*{ReadingsVal("FHT_5133", "window",
"nA")}" *eingebe, bekomme ich ein closed zurück.*
*Ändere ich das ungleich in ein gleich, kommt keine Meldung mehr??*
*
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hm.
Ich kapier das ganze Teil nicht so richtig. Du lehnst dich offenbar an
das Beispiel im Wiki an, das eigentlich einen erweiterten Zweck hat
und für deinen Fall daher möglicherweise zu komplex ist und ausserdem
das Modul 99_marte.pm (bzw ein Modul mit dem entsprechnden Code)
benötigt, wenn ich das richtig verstehe.
deine Anforderung ist grob folgendes:
Du willst alle 10 Minuten checken ob das Badfenster auf ist.
Du hast einen FHTTK, der am Badfenster ist, und der heisst FHT_5133.
Richtig?
(Komischer Name btw)
Wenn das Fenster auf ist, soll
" printf "showdialog -time 5
-text Badfenster offen -header FHEM" | nc 192.168.0.7 1450 "
abgesetzt werden.
Soweit richtig?
Was ich nicht verstehe ist, warum du zuerst was definierst, das alle
10 Minuten einen check definiert, der nicht direkt die Aktion ausloest
sondern einen weiteres notify ausloest, dass dann erst was macht. Das
ist ja 3x durchs Knie geschossen. Ich kann gerade furchtbar auf dem
Schlauch stehen, aber zumindest im Moment kapier ich nicht, wozu das
ganze Konstrukt gut sein soll.
Ich wuerd sowas versuchen:
define BadFensterChecker at +*00:10:00 { if ("$value{FHT_5133}" ne
"Closed") {"printf "showdialog -time 5 -text Badfenster offen -header
FHEM" | nc 192.168.0.7 1450 " }}
(dieser ganze printf Teil ist von mir undurchdrungen, da ich nicht nur
dem Anschein nach verstehe was das machen soll. Ich nehme an
192.168.0.7 1450 ist deine Glotze, die mit dem gepipten printf Kram
auch was anfangen kann. Das habe ich nur übernommen.)
Aber noch mal der Disclaimer:
Ich selber auch nur Anfaenger hier und mag da irgendeinen Sinn
übersehen. Mir geht es oft so, das hier total komplexe Sachen
abgeliefert werden, um meinem Verstaendnis nach simple Dinge zu
machen, wie die Uhrzeit in allen FHTs setzen und so. Und dann kommen
da Riesenklopper mit arreys und so raus (wie z.b. das WIKI Beispiel,
das aber immerhin noch checkt, ob das Jahr grob hinkommen kann) und
ich schreib dann
define hzg_set_time at *03:00:00 {if ($wday == 5) { fhem("set hzg.*
time") } }
Das setzt einmal pro Woche nachts die Uhrzeit und fertich und ich
komme mir dann immer ganz komisch vor, weil ich denke ich uebersehe
irgendwelche Vorteile oder Nachteile oder so. Ich kuemmer mich dann
schon nicht mal mehr drum, dass selbst { fhem("set hzg.* time") }
eigentlich auch noch einfacher ginge.
On 15 Feb., 21:32, Mitch wrote:
> Bin am verzeifeln!!
>
> Jetzt komm ich rigendwie nicht weiter.
> Folgendes habe ich in der cfg:
>
> *define a_Badfenster at +*00:10:00 trigger Badfenster
> define Badfenster notify Badfenster { if ({ReadingsVal("FHT_5133",
> "window", "nA")} ne "closed") { fhem ("trigger BadFensterOffen") } }
> define BadFensterOffen notify BadFensterOffen " printf "showdialog -time 5
> -text Badfenster offen -header FHEM" | nc 192.168.0.7 1450 "*
>
> Das heißt, wenn der Status des Fensters nicht closed ist, dann soll die
> Meldung verschickt werden.
>
> Leider kommt die Meldung auch wenn das Fenster zu ist.
> Wenn ich direkt in die Befehlszeile "*{ReadingsVal("FHT_5133", "window",
> "nA")}" *eingebe, bekomme ich ein closed zurück.*
>
> *Ändere ich das ungleich in ein gleich, kommt keine Meldung mehr??*
>
> *
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Vielen Dank für Deine Hilfe!
Aber ich denke, kann jetzt nicht testen, dass dein Script nicht funktioniert.
Der Fensterkontakt ist ja nur mit dem FHT80b verbunden, nicht direkt mit der Zentrale (FHZ1300PC).
Somit muss ich ja den windows status vom FHT80b auslesen, deswegen auch FHT_1533, das ist der FHT80b im Bad.
Mit deiner Idee $value{FHT_5133} wird ja nicht der Fensterstatus gelesen, oder?
Der Rest mit printf ist nur noch die Ausgabe auf dem SAT Receiver, sprich auf dem TV.
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
> Der Fensterkontakt ist ja nur mit dem FHT80b verbunden, nicht direkt mit der
> Zentrale (FHZ1300PC).
Hintergrundinfo: Der Fensterkontakt kann mit dem CUL/CUNO direkt empfangen
werden, mit dem FHZ1x00 nur indirekt ueber das FHT80b.
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Das war mir bewusst, deswegen die Anmerkung, dass der Fensterkontakt an einem FHT80b an der FHZ hängt.
Gibt es denn soetwas wie $value{FHT_5133} auch für den Fensterkontakt?
Sprich eine fertige Variable?
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
> Gibt es denn soetwas wie $value{FHT_5133} auch für den Fensterkontakt?
{ ReadingsVal("FHT5133", "window", "") eq "open" }
siehe auch Detailsicht von FHT5133)
Und statt $value{xxx} empfehle ich Value("xxx"), um beim etwaigen Umbau der
fhem internen Datenstrukturen keine Probleme zu haben.
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Danke Rudolf, das habe ich gestern auch probiert, aber wenn ich equal open nutze, reagiert der Skript gar nicht mehr.
Mir kommt es so vor, als das ReadingsVal("FHT5133", "window", "") irgend etwas anderes ausgibt, als wenn man es im Terminal eingibt?
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
>FHZ1300PC
okay, DAS habe ich übersehen.
Sorry.
On 16 Feb., 13:17, Mitch wrote:
> Danke Rudolf, das habe ich gestern auch probiert, aber wenn ich equal open nutze, reagiert der Skript gar nicht mehr.
>
> Mir kommt es so vor, als das ReadingsVal("FHT5133", "window", "") irgend etwas anderes ausgibt, als wenn man es im Terminal eingibt?
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Alos es geht mit Rudolfs Script auch nicht.
Diese habe ich getestet:
{ if ({ ReadingsVal("FHT_5133", "window", "") ne "closed" }) { fhem...
{ if ({ ReadingsVal("FHT_5133", "window", "") eq "open" }) { fhem...
{ if ({ReadingsVal("FHT_0a58", "window", "nA")} ne "closed") { fhem...
{ if ({ReadingsVal("FHT_0a58", "window", "nA")} eq "open") { fhem...
Es geht einfach nicht :-(
Ja jemand noch eine Idee??
Tausend Dank!
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
> Ja jemand noch eine Idee??
Ja:
- perl-Buch besorgen, und die Grundlagen durchlesen
- danach(!) unbedingt http://fhem.de/commandref.html#perl lesen.
Ansonsten muesste es so aehnlich sein:
define BadFensterChecker at +*00:10 {\
if(ReadingsVal("FHT_5133", "window", "") ne "closed") {\
my $msg = "showdialog -time 5 -text Badfenster offen -header FHEM";;\
system "echo '$msg' | nc 192.168.0.7 1450";;\
}\
}
\ und ;; kann man sich beim Editieren in FHEMWEB Detail-Ansicht des at Kommandos
sparen. D.h. erst definiere ich in FHEMWEB in der Eingabezeile oben:
define BadFensterChecker at +*00:10 hello
danach gehe ich auf Unsorted/BadFensterChecker und klicke auf DEF.
Sonst: die Reihenfolge der showdialog Parameter kommt mir komisch vor. Und ich
habe nichts getestet.
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Vielen Dank Rudolf.
Buch ist heute angekommen und wird jetzt erstmal durchgelesen :-)
Schlussendlich habe ich es so geschafft:
*define BadFensterChecker at +*00:04 {\
if(ReadingsVal("FHT_1533", "window", "") eq "open") {\
my $msg = "showdialog -time 5 -text Badfenster offen -header FHEM";;\
system ("printf '$msg' | nc 192.168.0.7 1450");;\
}\
}*
Danke nochmal!!
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Und für alle die sich wundern, dass bei ihnen das nicht funktioniert -
Window muss groß geschrieben werden (und vermutlich Open auch)!
-->
*define BadFensterChecker at +*00:04 {\
if(ReadingsVal("FHT_1533", "Window", "") eq "Open") {\
my $msg = "showdialog -time 5 -text Badfenster offen -header FHEM";;\
system ("printf '$msg' | nc 192.168.0.7 1450");;\
}\
}*
On Thursday, February 16, 2012 9:57:00 PM UTC+1, Mitch wrote:
>
> Vielen Dank Rudolf.
>
> Buch ist heute angekommen und wird jetzt erstmal durchgelesen :-)
>
> Schlussendlich habe ich es so geschafft:
> *define BadFensterChecker at +*00:04 {\
> if(ReadingsVal("FHT_1533", "window", "") eq "open") {\
> my $msg = "showdialog -time 5 -text Badfenster offen -header FHEM";;\
> system ("printf '$msg' | nc 192.168.0.7 1450");;\
> }\
> }*
>
> Danke nochmal!!
>
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Hallo,
wenn du fhem im Einsatz hast sollte sich der FHTTK aber auch darüber
auslesen lassen.
Dann kannst du dir den Weg über den FHT sparen.
Meine FHTTK am Fenster sind auch einmal mit dem zugehörigen FHT verbunden
und einmal in
fhem eingebunden.
Nur die FHTTK an den Türen werden direkt durch fhem abgefragt.
Mit folgendem Schnippsel
my $fhttk_bad_tuer = ReadingsVal("OG_Badezimmer_Tuer", "Window", "nA");;\
my $fhttk_sz_tuer = ReadingsVal("OG_Schlafzimmer_Tuer", "Window", "nA");;\
if(sunrise_abs(7200) gt $now or $now gt sunset_abs(-3600) or (
$fhttk_bad_tuer eq "Closed" and $fhttk_sz_tuer eq "Closed" ) ) {\
prüfe ich ob Badezimmer- und Schlafzimmertür geschlossen sind oder die
Uhrzeit innerhalb der Zeitspanne liegt.
Wenn also entweder beide Türen geschlossen sind oder es in der Nacht ist
schalte ich das Ganglicht über den
Bewegungsmelder ein.
ACHTUNG! Dies ist nur ein Auszug aus dem Progrämmchen.
Grüße
Am Donnerstag, 16. Februar 2012 21:57:00 UTC+1 schrieb Mitch:
>
> Vielen Dank Rudolf.
>
> Buch ist heute angekommen und wird jetzt erstmal durchgelesen :-)
>
> Schlussendlich habe ich es so geschafft:
> *define BadFensterChecker at +*00:04 {\
> if(ReadingsVal("FHT_1533", "window", "") eq "open") {\
> my $msg = "showdialog -time 5 -text Badfenster offen -header FHEM";;\
> system ("printf '$msg' | nc 192.168.0.7 1450");;\
> }\
> }*
>
> Danke nochmal!!
>
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Guten Morgen!
Ich hätte da mal auch eine frage aber zu dem Modul Wol und abfrage eines
Zustandes, ich möchte das Abgefragt wird ob mein PC im Wol on(true) oder
off(false) ist damit der Zustand
am FS20 dummy geändert wird. Was ich bis jetzt versucht hatte war das:
define PcCheck at +*00:01:00 {\
if(ReadingsVal"DoreenPc","state","off"){\
fhem("set Pc_Doreen off");;\
}\
}
aber leider sendet der immer den Befehl off an Fs20Dummy!
Das ist bestimmt ein Fehler und hoffe auf eure Hilfe?!
Mfg Steffen
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Originally posted by: <email address deleted>
Am Sonntag, 8. Juli 2012 10:38:01 UTC+2 schrieb Steffen:
>
> Guten Morgen!
>
> Ich hätte da mal auch eine frage aber zu dem Modul Wol und abfrage eines
> Zustandes, ich möchte das Abgefragt wird ob mein PC im Wol on(true) oder
> off(false) ist damit der Zustand
> am FS20 dummy geändert wird. Was ich bis jetzt versucht hatte war das:
> define PcCheck at +*00:01:00 {\
> if(ReadingsVal"DoreenPc","state","off"){\
> fhem("set Pc_Doreen off");;\
> }\
> }
> aber leider sendet der immer den Befehl off an Fs20Dummy!
> Das ist bestimmt ein Fehler und hoffe auf eure Hilfe?!
>
Mfg Steffen
>
Also versuche jetzt schon ne ganze weile aber er schaltet immer den
FS20Dummy egal was ich für werte in "DoreenPc","state","off" eintrage, bei
WOL steht ja unter "Readings" und genau bei diesem Wert
soll er den fhem befehl ausführen, wie könnte ich das einbauen???
Mfg Steffen
--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com