Hallo zusammen,
bin noch Anfänger was Sachen Fhem und Perl betrifft, deswegen wende ich mich mit meinen Frage mal an euch Profis.
Ich hatte vor, das wenn die Anwesenheit von 2 Gtags erkannt wird sich die Homematic Heizungsthermostate nach vorgegebenen Grad Celsius einstellen. ( Das soll mal so sein)
Bild 1.1: Übersicht
Bild 2 : Anwesenheit_Gesamt
Bild 3 : Anwesenheit_ All
Bisheriges vorgehen:
1: 2 x Gtags angelegt. Diese werden auch erkannt present/ absent ( Anwesenheit J & Anwesenheit T). Diese werden im Moment zu Testzwecken alle 10 sec abgefragt.
2: structure ( Anwesenheit_Gesamt ) angelegt. Diese erkennt das present / abesent der Gtags und schaltet wenn 1 Person da ist auf present, wenn beide Personen nicht da sind natürlich auf absent. Dieses hab ich gemacht das ich nur 2 und nicht 4 present/absent Zustände habe.
3: Notify ( Anwesenheit_All ) angelegt. Dieses soll dann mal die Heizungen schalten.
Momentan soll nur bei present ein Licht an bzw. bei absent das Licht aus geschaltet werden.
Anwesenheit_Gesamt:.* [Ich denke hier liegt mein Fehler :.* ]
{
if (ReadingsVal("Anwesenheit_Gesamt","state","absent") eq "present")
{
{fhem ('set Licht_Kueche on')}
}
elsif (ReadingsVal("Anwesenheit_Gesamt","state","absent") eq "absent")
{
{fhem ('set Licht_Kueche off')}
}
}
dies funktioniert auch soweit das Licht wird geschaltet . Das Problem ist aber, das dass Licht bei jedem mal wo erkannt wird das ein Gtag present ist (also alle 10 sec) das Licht erneut eingeschaltet wird. Wie verwirkliche ich es, das dass Licht nur einmal schaltet?
Ich bedanke mich schon mal für eure Hilfe.
Warum beschäftigst Du Dich nicht erst einmal mit RESIDENTS, ROOMMATE und GUEST?
Danach evtl. zur allgemeinen Automatisierung HOMEMODE (https://forum.fhem.de/index.php/topic,64317.0.html) testen.
Gruß
Dan
Hallo Dan
danke für deine Antwort bzw Verlinkung. Werde mir das mal anschauen und versuchen es zu verstehen.
Wusste bis jetzt leider nichts von HOMEMODE . Hatte auch nichts bei der Benutzung der Suchmaschine meines Vertrauens gefunden. ???
Danke
HOMEMODE ist im Prinzip nur die Erweiterung für RESIDENTS.
Mit RESIDENTS solltest Du beginnen und Deine Bewohner damit abbilden.
Der Rest findet sich dann.
Gruß
Dan
Zitat von: To am 21 März 2017, 11:55:00
Das Problem ist aber, das dass Licht bei jedem mal wo erkannt wird das ein Gtag present ist (also alle 10 sec) das Licht erneut eingeschaltet wird. Wie verwirkliche ich es, das dass Licht nur einmal schaltet?
Hi,
Das Problem liegt einfach daran, dass jedesmal ein Event erzeugt wird. Wenn Du bei Deine gtags das attribute event-on-change-reading auf state setzt ist alles gut :)
Ist ein Punkt den Du immer wieder brauchen wirst, egal ob es um Anwesenheit und Bewohner geht oder um Temperaturen die geloggt werden.
Ich hatte mir hier (http://heinz-otto.blogspot.de/2016/01/anwesenheitserkennung.html)mal grundlegende Gedanken gemacht. Wichtig ist, dass Du sauber zur einzelnen Person kommst. Danach kannst Du zu Fuß oder mit RESIDENTS & Co weiter machen
Gruß Otto
@ Dan
danke ich werde mir das alles mal in ruhe durch lesen und verdauen für Anfänger eine schwere Mahlzeit :-)
vllt kann ich es damit alles sauberer und schöner Abbilden. ( Hatte bei dem ganzen etwas Hilfe von einem Kumpel der wesentlich mehr Ahnung hat als ich er Programmiert aber mit JAVA. Perl ist auch nicht so ganz seine Welt.
@ Otto
Danke für die Antwort. An das event-on-change-reading hatte ich auch gedacht, wollte es aber in structure der ja die Anwesenheit abfragt einbauen.
Das an die Gtags Attribute anzuhängen bin ich natürlich nicht gekommen ::)
Ja vielleicht ist das am Ende egal an welcher Stelle, aber warum soll an der Quelle jedesmal ein Event erzeugt werden, wenn man den gar nicht wissen will? Also das ist mein Ansatz -> quasi Strom sparen ;)
Hab es direkt umgesetzt und Teste gerade und es scheint wunderbar zu funktioniern :-) ( Happy )
Also habe jetzt bei beiden Personen event-on-change-reading state
und in der structure event-on-change-reading state
Hab jetzt mal verschiedene szenarien ausprobiert und es geht so wie ich es mir erhofft hatte.
Jetzt muss ich noch schauen wie ich dann die heizungsthermostat anspreche und diese wechseln.
Wenn Perl nicht so dein Ding ist, schau Dir auch DOIF an. Da geht gerade für Deinen Zweck wahrscheinlich vieles relativ simpel.
Gruß Otto
Zitat von: To am 21 März 2017, 12:49:38
Hab es direkt umgesetzt und Teste gerade und es scheint wunderbar zu funktioniern :-) ( Happy )
Also habe jetzt bei beiden Personen event-on-change-reading state
und in der structure event-on-change-reading state
Hab jetzt mal verschiedene szenarien ausprobiert und es geht so wie ich es mir erhofft hatte.
Jetzt muss ich noch schauen wie ich dann die heizungsthermostat anspreche und diese wechseln.
Du machst da was doppelt.
Kurzer Exkurs. Attribute die Du für eine Strukture setzt, werden automatisch an die Mitglieder der Struktur vererbt. Also entweder das Attribut in der Strukture rausnehmen oder drin lassen und bei den Mitgliedern rausnehmen.
Danke CoolTux
hab ich wieder was gelernt
ZitatAttribute die Du für eine Strukture setzt, werden automatisch an die Mitglieder der Struktur vererbt
war mir leider nicht bekannt. Ist dies irgendwie ersichtlich, das dass Attribute an die Mitglieder vererbt wird ?
Zitat von: To am 21 März 2017, 13:38:20
Danke CoolTux
hab ich wieder was gelernt
war mir leider nicht bekannt. Ist dies irgendwie ersichtlich, das dass Attribute an die Mitglieder vererbt wird ?
Hab die Info nie nachgelesen. Hatte aber mal ein Problem das meine Attribute für Geräte einfach innerhalb des Startprozesses geändert wurden. Am Ende hat mir Rudi erzählt das dies an meiner Struktur und an den Attributen in der Struktur liegen.
Betrifft auch nicht alle Attribute. Room zum Beispiel oder Group klappt super. Ich hatte das Problem aber genau bei event-on-change-reading.
Danke CoolTux gut zu wissen :-)
Werde mich dann mal an DOIF , HOMEMODE & RESIDENTS probieren.
Danke @ all für die Hilfe