FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ChrisW am 08 Januar 2013, 08:59:42

Titel: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 08:59:42
Hallo,

ich suche eine Lösung mit Hilfe meiner Abwesenheitserkennung meine Heizung zu steuern. Ist vielleicht danach auch etwas für das Wiki ;)


Was passieren soll:
Chris oder Tanja oder beide zuhause = Heizung AUTO  ( Einer von beiden zuhause = Heizung AUTO )
Tanja und Chris NICHT Zuhause = Heizung ECO  ( Nur wenn beide OFF = Heizung ECO )

Problem ist das ich nicht jedes mal die Heizung erneut auf AUTO / ECO setzen will.
Also nur dann wieder auf AUTO schalten wenn der vorherige Status OFF gewesen ist.

Oder nur dann auf ECO schalten wenn der vorherige Status ON war.
Somit verhindere ich ein dauerhaftes AUTO / ECO Schalten.

Das schwere ist dabei das Chris und Tanja beachtet werden müssen.

Code zum schalten der Heizung:

define Heizung structure Heizung MAX_Bad MAX_Dach MAX_Kueche
attr Heizung room MAX
attr Heizung webCmd desiredTemperature

Code für die Abwesenheits erkennung:
# Anwesenheit von Christian, Handy

define Anwesenheit_Chris dummy
attr Anwesenheit_Chris loglevel 6
attr Anwesenheit_Chris room Anwesenheit
attr Anwesenheit_Chris setList on off

define Anwesenheit_Chris_FileLog FileLog ./log/Anwesenheit_Chris.log Anwesenheit_Chris
attr Anwesenheit_Chris_FileLog logtype text
attr Anwesenheit_Chris_FileLog room Logfiles

define Job_AnwesendChris at +*00:01:00 { \
use Net::Ping;; \
my $ip = "192.168.2.50";; \
my $p = Net::Ping->new("icmp", 9, 64);; \
if ($p->ping($ip)) { \
fhem("delete abwesend_Chris ;; set Anwesenheit_Chris on");; \
} \
else { \
fhem("define abwesend_Chris at +00:05:00 set Anwesenheit_Chris off");; \
} \
}

# Anwesenheit von Tanja, Handy

define Anwesenheit_Tanja dummy
attr Anwesenheit_Tanja loglevel 6
attr Anwesenheit_Tanja room Anwesenheit
attr Anwesenheit_Tanja setList on off

define Anwesenheit_Tanja_FileLog FileLog ./log/Anwesenheit_Tanja.log Anwesenheit_Tanja
attr Anwesenheit_Tanja_FileLog logtype text
attr Anwesenheit_Tanja_FileLog room Logfiles

define Job_AnwesendTanja at +*00:01:00 { \
use Net::Ping;; \
my $ip = "192.168.2.23";; \
my $p = Net::Ping->new("icmp", 9, 64);; \
if ($p->ping($ip)) { \
fhem("delete abwesend_Tanja ;; set Anwesenheit_Tanja on");; \
} \
else { \
fhem("define abwesend_Tanja at +00:05:00 set Anwesenheit_Tanja off");; \
} \
}


So schaut das Log aus :
2013-01-08_07:55:37 Anwesenheit_Chris on
2013-01-08_07:56:38 Anwesenheit_Chris on
2013-01-08_07:57:38 Anwesenheit_Chris on
2013-01-08_08:03:48 Anwesenheit_Chris off
2013-01-08_08:09:47 Anwesenheit_Chris off
2013-01-08_08:15:47 Anwesenheit_Chris off
2013-01-08_08:21:49 Anwesenheit_Chris off
2013-01-08_08:28:01 Anwesenheit_Chris off
2013-01-08_08:33:49 Anwesenheit_Chris off

Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 09:26:28
Hallo,

ich zwäng mich mal auch da rein ;-)

Mit

fhem("delete abwesend_Chris ;; set Anwesenheit_Chris on") if (Value("Anwesenheit_Chris") eq "off");; \

wird nur noch dann auf on geschaltet wenn du vorher off warst.

Bei Job_AnwesendTanja noch das selbe (nur mit Tanja) und auch dort sollte nur noch on geschaltet werden wenn vorher
off war.

Mit
define Heizung_AutoEco notify Anwesenheit.*:.* {
if (Value("Anwesenheit_Chris") eq "on") || (Value("Anwesenheit_Tanja") eq "on") {
fhem ("set Heizung auto") if (Value("Heizung") eq "off");
}
else {
fhem ("set Heizung eco") if (Value("Heizung") eq "on");
}
}


Ungetestet und ohne Anspruch auf Richtigkeit (Klammern und ich ärger mich grad an einem meiner Codeschnipsel mit dem ||).
Evtl. klappt es bei dir ja besser ;-)
Damit die Prüfung auch zutrifft musst du nur noch dafür sorgen das Heizung auch mal on oder off annehmen kann da das ja auch
abgefragt wird.

Mich wundert nur im Logfile-Auszug das fhem nicht meckert über das delete.
Ich hätte mir im Logfile sowas wie
unable to delete abwesend_Chris, define abwesend_Chris first
erwartet.

Anyway. So solltes du mal aufbauen können.

Grüße

P.S.: Für Fehler bin ich nicht haftbar aber bitte bei Rückfragen evtl. auftretende Fehlermeldungen aus dem Logfile posten ;-)
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 10:28:18
Hallo,
im Fhem Log hab ich natürlich auch die Fehler ;(

Hab erstmal versuche die Logs zu verkleinern aber leider kommt da trotzdem bei OFF doppelte Einträge:


2013-01-08_09:39:51 Anwesenheit_Chris off
2013-01-08_09:45:52 Anwesenheit_Chris off
2013-01-08_09:51:51 Anwesenheit_Chris off
2013-01-08_09:57:51 Anwesenheit_Chris off
2013-01-08_10:03:52 Anwesenheit_Chris off
2013-01-08_10:09:52 Anwesenheit_Chris off
2013-01-08_10:16:54 Anwesenheit_Chris off
2013-01-08_10:22:55 Anwesenheit_Chris off


efine Job_AnwesendChris at +*00:01:00 { \
use Net::Ping;; \
my $ip = "192.168.2.50";; \
my $p = Net::Ping->new("icmp", 9, 64);; \
if ($p->ping($ip)) { \
fhem("delete abwesend_Chris ;; set Anwesenheit_Chris on") if (Value("Anwesenheit_Chris") eq "off");; \
} \
else { \
fhem("define abwesend_Chris at +00:05:00 set Anwesenheit_Chris off");; \
} \
}


Muss die Zeile : fhem("define abwesend_Chris at +00:05:00 set Anwesenheit_Chris off");; \ nicht auch mit eq angepasst werde ??
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 10:35:54
Kann, muss aber nicht - würde aber auch Sinn machen ;-)

fhem("define abwesend_Chris at +00:05:00 set Anwesenheit_Chris off") if (Value("Anwesenheit_Chris") eq "on");; \

Da laut Logfile alle 6 Minuten der Status auf off geschaltet wird.
1 Minute prüfen ob Handy on + 5 Minuten at

Grüße
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 11:12:44
Danke ist ja doch gar nicht so Kompliziert mit dem EQ :) Jetzt scheint Log sauber zu sein. Somit gehts weiter.

define Heizung_AutoEco notify Anwesenheit.*:.* {
if (Value("Anwesenheit_Chris") eq "on") || (Value("Anwesenheit_Tanja") eq "on") {
fhem ("set Heizung auto") if (Value("Heizung") eq "off");
}
else {
fhem ("set Heizung eco") if (Value("Heizung") eq "on");
}
}

Muss ich da nicht auch eine Zeit per at einfügen ? Weil wann soll dies den ausgeführt werden ?
Diese Prüfung kann von mir aus auch alle 5 Minuten laufen .. das so zimlich egal muss ja nicht sofort Zeitgleich die Heizung runtersetzen ;)
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 11:24:00
Der Teil wird ausgeführt sobald
Anwesenheit(irgendwer)(irgendwas)sendet.
Nun wird geprüft ob EINER on ist oder BEIDE nicht on sind und
dementsprechend Auto bzw. Eco gesetzt werden.
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 11:35:33
ah okay ich verstehe :D

Kann man das auch in nem Log Speichern damit ich es zum Testen paar Tage Kontrollieren kann ?
Könnte das so funktionieren ?

define Heizung_AutoEco notify Anwesenheit.*:.* {
if (Value("Anwesenheit_Chris") eq "on") || (Value("Anwesenheit_Tanja") eq "on") {
fhem ("set Heizung auto") if (Value("Heizung") eq "off");
}
else {
fhem ("set Heizung eco") if (Value("Heizung") eq "on");
}
}
attr Heizung_AutoEco loglevel 6
define Heizung_AutoEco_FileLog FileLog ./log/Heizung_AutoEco.log Heizung_AutoEco
attr Heizung_AutoEco_FileLog logtype text
attr Heizung_AutoEco_FileLog room Logfiles

Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 11:37:05
Hab das Log noch nicht eingebaut aber gerade folgendes im Log gefunden :
2013.01.08 11:35:45 3: Heizung_AutoEco return value: Unknown command {, try help
2013.01.08 11:36:11 3: Heizung_AutoEco return value: Unknown command {, try help
2013.01.08 11:36:11 3: delete abwesend_Tanja ; set Anwesenheit_Tanja on : Please define abwesend_Tanja first
2013.01.08 11:36:11 3: Please define abwesend_Tanja first
2013.01.08 11:36:11 3: Heizung_AutoEco return value: Unknown command {, try help
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 11:38:30
Wieso gibs hier kein edit .. hab \ vergessen überall dahinter zu machen ..
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 11:42:42
Logeinträge kannst du mit
Log (3,"Eintrag im Logfile");
erstellen.
Einfach dorthin kopieren wann du den logeintrag sehen willst.
Und Tanja nicht vergessen die prüfung ein zu bauen - sonst wird das Log
zugemüllt.

Grüße
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 11:52:16
also irgendwie ist da noch der Wurm drin :


# Anwesenheit von Christian, Handy

define Anwesenheit_Chris dummy
attr Anwesenheit_Chris loglevel 6
attr Anwesenheit_Chris room Anwesenheit
attr Anwesenheit_Chris setList on off

define Anwesenheit_Chris_FileLog FileLog ./log/Anwesenheit_Chris.log Anwesenheit_Chris
attr Anwesenheit_Chris_FileLog logtype text
attr Anwesenheit_Chris_FileLog room Logfiles

define Job_AnwesendChris at +*00:01:00 { \
use Net::Ping;; \
my $ip = "192.168.2.50";; \
my $p = Net::Ping->new("icmp", 9, 64);; \
if ($p->ping($ip)) { \
fhem("delete abwesend_Chris ;; set Anwesenheit_Chris on") if (Value("Anwesenheit_Chris") eq "off");; \
} \
else { \
fhem("define abwesend_Chris at +00:05:00 set Anwesenheit_Chris off") if (Value("Anwesenheit_Chris") eq "on");; \
} \
}

# Anwesenheit von Tanja, Handy

define Anwesenheit_Tanja dummy
attr Anwesenheit_Tanja loglevel 6
attr Anwesenheit_Tanja room Anwesenheit
attr Anwesenheit_Tanja setList on off

define Anwesenheit_Tanja_FileLog FileLog ./log/Anwesenheit_Tanja.log Anwesenheit_Tanja
attr Anwesenheit_Tanja_FileLog logtype text
attr Anwesenheit_Tanja_FileLog room Logfiles

define Job_AnwesendTanja at +*00:01:00 { \
use Net::Ping;; \
my $ip = "192.168.2.23";; \
my $p = Net::Ping->new("icmp", 9, 64);; \
if ($p->ping($ip)) { \
fhem("delete abwesend_Tanja ;; set Anwesenheit_Tanja on") if (Value("Anwesenheit_Tanja") eq "off");; \
} \
else { \
fhem("define abwesend_Tanja at +00:05:00 set Anwesenheit_Tanja off") if (Value("Anwesenheit_Tanja") eq "on");; \
} \
}








define Heizung_AutoEco notify Anwesenheit.*:.* { \
if (Value("Anwesenheit_Chris") eq "on") || (Value("Anwesenheit_Tanja") eq "on") { \
fhem ("set Heizung auto") if (Value("Heizung") eq "off"); \
} \
else { \
fhem ("set Heizung eco") if (Value("Heizung") eq "on"); \
}\
}


Fhem Neustart im Log:
2013.01.08 11:48:30 1: configfile: Unknown command }, try help
Unknown command }\
}, try help

Und wenn ich Manuell beide auf OFF mache steht dort:
2013.01.08 11:48:37 3: Heizung_AutoEco return value: Unknown command {, try help
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 11:55:04
okay hatte doppel ;; vergessen Anfänger fehler :P

Aber folgendes schaut nach beide Anwesenheit OFF schon Schlimmer aus:

2013.01.08 11:53:53 3: Heizung_AutoEco return value: syntax error at (eval 28) line 1, near ") ||"
syntax error at (eval 28) line 1, near "}  else"
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 12:02:47
Versuchs mal damit:

if (Value("Anwesenheit_Chris") eq "on") { \

In dem Fehler mit dem || (sollte doch ODER sein??) hänge ich auch grad mit meinem Schnipsel.
Wenn es mit einem Handy mal klappt ist das zweite schnell eingetragen ;-)

Grüße
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 12:07:37
Jo das kennt er wohl nicht ??

Also mit

define Heizung_AutoEco notify Anwesenheit.*:.* { \
if (Value("Anwesenheit_Chris") eq "on") { \
fhem ("set Heizung auto") if (Value("Heizung") eq "off");; \
} \
else { \
fhem ("set Heizung eco") if (Value("Heizung") eq "on");; \
}\
}
Hab ich derzeit keiner fehler.
Kann ich das ganze für Tanja nicht doppelt einfügen ??


define Heizung_AutoEco_tanja notify Anwesenheit.*:.* { \
if (Value("Anwesenheit_Tanja") eq "on") { \
fhem ("set Heizung auto") if (Value("Heizung") eq "off");; \
} \
else { \
fhem ("set Heizung eco") if (Value("Heizung") eq "on");; \
}\
}

Aber ich glaube das gibt verwirrung da ja nicht immer BEIDE Anwesend sind ... Na gut mach ich erstmal nur Tanja. Bei mir ist es nicht GANZ so wichtig bis das mit dem || klappt
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 12:21:20
Hm funktioniert aber nicht.

Hab Heizung_bad Manuell auf 28c eingestellt.
Probiert mit Button Heizung auf ECO = Heizung_bad 17c

So wieder Heizung_bad auf 28c

Dann status anwesenheit_Chris mal ON / OFF gesetzt

Heizung_bad = 28c ... der scheint die Heizung nicht zu schalten

Logs steht nix
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 12:23:57
Was steht im Logfile?
Pflaster die Abfrage mal mit LOG bitte

define Heizung_AutoEco notify Anwesenheit.*:.* { \
if (Value("Anwesenheit_Chris") eq "on") { \
fhem ("set Heizung auto") if (Value("Heizung") eq "off");; \
Log (3,"Setze Heizung Auto");; \
} \
else { \
fhem ("set Heizung eco") if (Value("Heizung") eq "on");; \
Log (3,"Setze Heizung Eco");;\
}\
Log (3,"Ich mach nix warum auch immer);;\
}


Grüße
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 13:29:33
Nach Manuell Abwesenheit_Chris ON / OFF folgendes im Log ..

2013.01.08 13:28:31 3: Heizung_AutoEco return value: Can't find string terminator '"' anywhere before EOF at (eval 28) line 1.

2013.01.08 13:28:37 3: Heizung_AutoEco return value: Can't find string terminator '"' anywhere before EOF at (eval 29) line 1.
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 13:35:50
Hast " vergessen schon selbst gefunden ;)

Hier die Logs ..
2013.01.08 13:34:49 3: Setze Heizung Auto
2013.01.08 13:34:49 3: Ich mach nix warum auch immer
2013.01.08 13:35:04 3: Setze Heizung Eco
2013.01.08 13:35:04 3: Ich mach nix warum auch immer
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 13:43:33
Hallo,

mir fehlt aber das
set Heizung auto
und
set Heizung Eco.
Die logeinträge sind ok - also wird das notify abgearbeitet.
Den letzten Log kannst du wieder raus werfen - der zeigt nur das das notify überhaupt angesprungen wird.
Hat
Heizung
den Status on oder off??

Grüße
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 14:00:22
Hab es mal mit
set MAX_Bad desiredTemperature 7.0 usw. versucht das macht er auch nicht ! Quasi gar nichts.


Die Heizung hat keinen Status on / off

Man kann nur ECO AUTO BOOST 4.0 5.0 6.0 usw. auswählen zum einstellen.

Hab den Code oben im 1. Post drin.

Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 14:07:14
Hallo,

naja, mit

fhem ("set Heizung auto") if (Value("Heizung") eq "off");; \
und
fhem ("set Heizung eco") if (Value("Heizung") eq "on");; \
schalten wir ja nur dann auf auto bzw. eco wenn der status zum Prüfzeitpunkt
off oder on ist - das wird er aber nie also wird auch nicht auf Auto / Eco gesetzt.

Entweder finden wir passende Prüfkriterien oder wir lassen die Prüfung ganz weg.

Versuchs mal mit
fhem ("set Heizung auto");; \
und
fhem ("set Heizung eco");; \
bitte und poste nochmal das Logfile nachher.

Danke und Grüße
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 14:13:31
hmm das stimmt. Aber so wichtig ist die Prüfung eig. nicht oder ?

2013.01.08 14:09:46 3: Setze Heizung Auto
2013.01.08 14:09:59 3: Setze Heizung Eco

ABER es wurde nichts geschaltet ..

Aber wie ich sehe passietr bei dem befehl: set Heizung eco NICHTS ..
auch wenn ich Ihn manuell eingebe komisch ..
Per Auswahl siehe 1. post im room MAX wenn ich da eco auswähle und das setze macht er es ..
vielleicht muss so eine structure anders angesteuert werden ???
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 14:20:25
AHHHHHHHHHHH der Befehl muss :
set Heizung desiredTemperature eco
set Heizung desiredTemperature auto

Jetzt funktioniert es.

Wofür war die Überprüfung ist die wirklich wichtig ?? Da ich ja AUTO und ECO nur schalten will?

Kann man nicht statt On / OFF auf ECO / AUTO Prüfen ??

Nu fehlt ja nurnoch die ODER || Geschichte ;=)
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: justme1968 am 08 Januar 2013, 15:03:12
hallo,

noch eine anmerkung zum ping... so einfach ohne eine wartezeit oder hysterese einzubauen wird das nicht funktionieren weil die telefone normalerweise sofort oder nach einer weile das netz stilllegen wenn das display aus ist. d.h. auch wenn das handy im haus ist ist es so lange es in der tasche ist es per ping meistens bis garnicht erreichbar.

der ansatz der funktioniert ist im wlan router nachzuschauen ob das geraet angemeldet ist weil es dort erst nach sehr viel längerer inaktivität rausfliegt und durch die periodischen verbindungsversuche für mail abholen oder ähnliches immer wieder aktualisiert wird.

gruss
  andre
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 15:07:46
Hallo,
also ich habe bei meinen Android Handys keine Probleme.
Bei Handy 1 ist Ping fast immer 100% Okay
Bei Handy 2 jedoch mal OFF obwohl Ping Okay ist. Daher auch die Prüfung wenn OFF ;)

Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 15:10:50
Hallo,

ob die Prüfung wichtig ist oder nicht, darüber scheiden sich die Geister.
Sie ist nicht unbedingt notwendig (für den Code) aber sie schadet auch nicht da nicht nochmal der Status gesendet wird wenn er schon denselben hat.
So gesehen hilft die Prüfung, "etwas" Sendelast zu sparen.
Du kannst also hergehen und
nur dann AUTO wenn ECO und umgekehrt
oder
nur dann AUTO wenn nicht AUTO und umgekehrt.
Was dir lieber ist.
Prüfen kann man in FHEM so gut wie alles (wenn man weiß wie ;-) ).

Und die ODER-Geschichte, hmmm...
In einem anderen Codeschnipsel bei mir in der fhem.cfg prüfe ich die Uhrzeit or (also nicht ||) Türkontakt und das funktioniert auch.
Aber das ist ein anderer Beitrag.

@andre
Deine Anmerkung mit dem pink ist richtig.
Da muss aber der Anfang der Kette nachgebessert werden - die Abfrage ob die Handys on sind.
Der Code für die Auswertung klappt soweit ja schon.

Grüße
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 15:27:46
Okay dann lasse ich die Prüfung weg.

Kann man den irgendwie das mit dem ODER anders lösen ?

Quasi noch ein Schleife einbauen die dann Tanja abfragt ?

Oder  man verbindet beide Ping in einen " Jemand Zuhause " On / Off ?

Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 15:37:26
Oder versuch doch mal anstelle von || or zu schreiben.

Wie im anderen Beitrag schon geschrieben - ich bin grad am klein anfangen aber bisher
klappts und das Licht schaltet.
Ok der Code ist noch ganz am Anfang.
Aber ich hab einen Schnipsel da frage ich mit or ab und nciht mit 2 |

Grüße
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 15:42:12
ne klappt auch nicht wie ärgerlich :(

2013.01.08 15:40:55 3: Heizung_AutoEco return value: syntax error at (eval 32) line 1, near ") or"
syntax error at (eval 32) line 1, near "}  else"
syntax error at (eval 32) line 1, near "; }"

2013.01.08 15:41:19 3: Heizung_AutoEco return value: syntax error at (eval 40) line 1, near ") or"
syntax error at (eval 40) line 1, near "}  else"
syntax error at (eval 40) line 1, near "; }"

2013.01.08 15:41:22 3: Heizung_AutoEco return value: syntax error at (eval 41) line 1, near ") or"
syntax error at (eval 41) line 1, near "}  else"
syntax error at (eval 41) line 1, near "; }"
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 15:46:06
Hallo,

da hat es aber nen anderen Fehler drinnen, oder?

Ich meinte eigentlich so:
if (Value("Anwesenheit_Chris") eq "on") or (Value("Anwesenheit_Tanja") eq "on") { \

Was hast du eingetragen?
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 15:50:05
Eingetragen:

define Heizung_AutoEco notify Anwesenheit.*:.* { \
if (Value("Anwesenheit_Chris") eq "on") or (Value("Anwesenheit_Tanja") eq "on") { \
fhem ("set Heizung desiredTemperature auto");; \
Log (3,"Setze Heizung Auto");; \
} \
else { \
fhem ("set Heizung desiredTemperature eco");; \
Log (3,"Setze Heizung Eco");;\
}\
}



Fehler:

2013.01.08 15:48:37 3: Heizung_AutoEco return value: syntax error at (eval 28) line 1, near ") or"
syntax error at (eval 28) line 1, near "}  else"
syntax error at (eval 28) line 1, near "; }"

2013.01.08 15:48:41 3: Heizung_AutoEco return value: syntax error at (eval 29) line 1, near ") or"
syntax error at (eval 29) line 1, near "}  else"
syntax error at (eval 29) line 1, near "; }"
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 16:04:45
Wie könnte man das ganze den so umschreiben vielelicht funktioniert ja und && ?

abwesenheit_Chris && abwesenheit_Tanja = Heizung ECO

Dann für beide Chris & Tanja einzeln bei
Anwesenheit_Chris on = Heizung Auto

2. Abfrage:
Anwesenheit_Tanja on = Heizung Auto.


Somit würde zwar passieren das wenn Chris zuhause ist und dadurch Heizung AUTO gesetzt wurde das wenn Tanja nachhause kommt abwesenheit_Tanja On das 2. mal Heizung AUTO gesetzt wird.
Das wäre ja nicht schlimm.
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 16:22:38
Hallo,

& und | sind lt. DeMorgan äquivalent und lassen sich gegeneinander tauschen wenn man einiges beachtet.

Du musst auch alle zugehörigen Abfragen negieren.
D.h. du darfst nicht einfach nur && einsetzen und das wars.

Wenn du && nimmst musst du auf nicht da prüfen.
Bei | prüfst du auf da.

Chris da ODER Tanja da            dann AUTO sonst ECO
Chris nicht da und Tanja nicht da dann ECO sonst AUTO

Puh. Ich hoff das war einigermassen richtig so.

Kurzfassung. Wenn du || gegen && tauschen willst musst du u.u die gesamte Abfrage umbauen und das Ergebniss ist verkehrt rum ;-)

Grüße
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 16:24:42
Hallo,
okay das habe ich verstanden. Die frage ist bevor ich da rumbastele ob das dann überhaupt klappt :) wenn schon || oder or nicht gehen ..
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 16:29:38
Ich bin dran ;-)
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 16:52:19
So

if ((Value("Keller_GZ_Deckenlicht") eq "Aus") || (Value("Wasserpumpe") eq "Aus")) {

klappts.
Klammern beachten!

Grüße
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: ChrisW am 08 Januar 2013, 16:57:53
Oha so einfach kann es sein. Klappt.
DANKE :)
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Puschel74 am 08 Januar 2013, 17:02:04
Wunderbar.

Und nun nur noch abschliessend den kompletten funktionierenden Code posten bitte.
Schön in den Code-Tags damit der nächste seine Freude hat und nur copy&paste machen braucht ;-)

Oder noch besser mit ein bischen Dokumentation drum rum in die Abteilung Codeschnipsel damit.

Danke

Grüße
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: RedOne am 07 Oktober 2013, 20:46:09
Hallo,

ich würde gerne dieses Projekt bei mir auch einsetzen und wollte fragen,
ob ihr irgendwo ein Tutorial habt oder ähnliches.

Anwesenheitserkennung via WLAN Ping habe ich schon umgesetzt.

Gruß RedOne
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: Markus M. am 07 Oktober 2013, 22:49:34
Zitat von: RedOne schrieb am Mo, 07 Oktober 2013 20:46Hallo,

ich würde gerne dieses Projekt bei mir auch einsetzen und wollte fragen,
ob ihr irgendwo ein Tutorial habt oder ähnliches.

Anwesenheitserkennung via WLAN Ping habe ich schon umgesetzt.

Gruß RedOne

Einfach mal in das PRESENCE Modul einlesen, ist sehr viel bequemer.
Auf die Anwesenheit dann ein paar Notifys, damit lässt sich einiges anstellen.

Hier mal ein Beispiel für das Verlassen der Wohnung mit Bewegungsmeldern und zwei Telefonen:
define presence_mode_away notify (motion_hallway|presence_iphone|presence_android).*:.*(normal|absent) { \
  if( Value("motion_livingroom") ne "alert" and Value("motion_bedroom") ne "alert" and Value("motion_office") ne "alert" and Value("motion_kitchen") ne "alert" and Value("motion_bathroom") ne "alert" and Value("motion_toilet") ne "alert" and Value("motion_hallway") ne "alert" and Value("presence_iphone") eq "absent" and Value("presence_android") eq "absent" ) { \
    fhem "set presence_state away";; \
  } \
}

presence_state wird dann auf away gesetzt wenn keines der beiden Telefone anwesend ist und sich in der Wohnung nirgendwo mehr was bewegt.
Titel: Aw: Projekt Abwesenheit Erkennung (Ping) + Heizung Steuerung
Beitrag von: RedOne am 08 Oktober 2013, 10:13:10
Hast du gerade ein link für mich wo das genau erklärt?

Da ich mit Fhem erst angefangen haben und von der Programmierung
Nicht wirklich ahnung habe.

Gruß RedOne