Heizung bei An-/Abwesenheit Regeln

Begonnen von anilini, 25 Januar 2014, 11:32:47

Vorheriges Thema - Nächstes Thema

anilini

Hallo zusammen,

ich habe jetzt seit ein paar Tage alle Komponenten für meine geplante Hausteuerung zusammen:

Ich möchte eigentlich nur das sich die Heizung runter regelt, wenn ich das Haus verlasse und umgedreht.

Komponenten: FB 7390, HMLan, HM-CC-TC + Thermostat

In der config-Datei habe ich folgendes eingetragen:

#Anwesenheit
define HandyNorman PRESENCE fritzbox android-7c18279
attr HandyNorman room System

define HandyTini PRESENCE fritzbox Tinis-iPhone
attr HandyTini room System

##define NoHandy PRESENCE lan-ping 192.168.178.56 10
##attr NoHandy room System

##define TiHandy PRESENCE lan-ping 192.168.178.123 10
##attr TiHandy room System


define Norman_absent notify HandyNorman:absent {\
if (ReadingsVal("HzArbeitszimmer_Climate", "controlMode","") eq "auto") {\
             fhem("set HzArbeitszimmer_Climate controlMode manual");;\
}\
}\

define Norman_present notify HandyNorman:present {\
if (ReadingsVal("HzArbeitszimmer_Climate", "controlMode","") eq "manual") {\
             fhem("set HzArbeitszimmer_Climate controlMode auto");;\
}\
}\


Problem eins ist: das erkennen der "Presents", wobei das mit LAN-Ping zumindest etwas besser läuft....
Problem zwei ist: das Schalten des ControlMode vom HM-CC-TC, klappt einfach nicht...wenn ich den Befehl:  "set HzArbeitszimmer_Climate controlMode manual" in der Eingabezeile ausführe geht es...aber auch da muss ich sagen, dass mir das alles sehr sehr träge vorkommt...bzw. klappt es auch da nicht zuverlässig...
Beim lesen hier im Forum habe ich gesehen, dass der RSSI wert relevant ist: der ist bei mir bei -59...

Vielleicht hat jemand einen Tipp....würde mich sehr freuen...


Hier noch meine restliche config:

attr global autoload_undefined_devices 1
attr global logfile ./log/fhem-%Y-%m.log
attr global modpath .
attr global port 7072 global
attr global room System
attr global sendStatistics never
attr global statefile ./log/fhem.save
attr global verbose 3


# pgm2 / autocreate configfile. Take a look at the other examples for more.
#

define WEB FHEMWEB 8083 global
attr WEB fwcompress 0
attr WEB hiddenroom Howto,Wiki,Details,Examples,Select style,FAQ
attr WEB refresh 600
attr WEB room System


# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
attr Logfile room System

define autocreate autocreate
attr autocreate autosave 1
attr autocreate device_room %TYPE
attr autocreate filelog ./log/%NAME-%Y.log
attr autocreate room System
attr autocreate weblink 1
attr autocreate weblink_room Plots

define HMLan1 HMLAN 192.168.178.62:1000
attr HMLan1 hmId AF89E2
attr HMLan1 hmLanQlen 1_min
attr HMLan1 wdTimer 25
attr HMLan1 room System

define HzArbeitszimmer CUL_HM 20654E
attr HzArbeitszimmer .devInfo 00FFFF
attr HzArbeitszimmer .stc 58
attr HzArbeitszimmer actCycle 000:10
attr HzArbeitszimmer actStatus alive
attr HzArbeitszimmer autoReadReg 4_reqStatus
attr HzArbeitszimmer expert 2_full
attr HzArbeitszimmer firmware 2.1
attr HzArbeitszimmer model HM-CC-TC
attr HzArbeitszimmer peerIDs
attr HzArbeitszimmer room Arbeitszimmer
attr HzArbeitszimmer serialNr KEQ0040620
attr HzArbeitszimmer subType thermostat

define FileLog_HzArbeitszimmer FileLog ./log/HzArbeitszimmer-%Y.log HzArbeitszimmer
attr FileLog_HzArbeitszimmer logtype text
attr FileLog_HzArbeitszimmer room Arbeitszimmer

define HzArbeitszimmer_Weather CUL_HM 20654E01
attr HzArbeitszimmer_Weather expert 1
attr HzArbeitszimmer_Weather model HM-CC-TC
attr HzArbeitszimmer_Weather peerIDs
attr HzArbeitszimmer_Weather room Arbeitszimmer

define FileLog_HzArbeitszimmer_Weather FileLog ./log/HzArbeitszimmer_Weather-%Y.log HzArbeitszimmer_Weather
attr FileLog_HzArbeitszimmer_Weather logtype text
attr FileLog_HzArbeitszimmer_Weather room Arbeitszimmer

define HzArbeitszimmer_Climate CUL_HM 20654E02
attr HzArbeitszimmer_Climate expert 1
attr HzArbeitszimmer_Climate model HM-CC-TC
attr HzArbeitszimmer_Climate peerIDs
attr HzArbeitszimmer_Climate room Arbeitszimmer

define FileLog_HzArbeitszimmer_Climate FileLog ./log/HzArbeitszimmer_Climate-%Y.log HzArbeitszimmer_Climate
attr FileLog_HzArbeitszimmer_Climate logtype text
attr FileLog_HzArbeitszimmer_Climate room Arbeitszimmer

#define HzArbeitszimmer_WindowRec CUL_HM 20654E03
#attr HzArbeitszimmer_WindowRec expert
#attr HzArbeitszimmer_WindowRec model HM-CC-TC
#attr HzArbeitszimmer_WindowRec peerIDs
#attr HzArbeitszimmer_WindowRec room Arbeitszimmer
#attr HzArbeitszimmer_WindowRec stateFormat last:trigLast

#define FileLog_HzArbeitszimmer_WindowRec FileLog ./log/HzArbeitszimmer_WindowRec-%Y.log HzArbeitszimmer_WindowRec
#attr FileLog_HzArbeitszimmer_WindowRec logtype text
#attr FileLog_HzArbeitszimmer_WindowRec room Arbeitszimmer

define ActionDetector CUL_HM 000000
attr ActionDetector actCycle 600
attr ActionDetector event-on-change-reading .*
attr ActionDetector room Arbeitszimmer

define FileLog_ActionDetector FileLog ./log/ActionDetector-%Y.log ActionDetector
attr FileLog_ActionDetector logtype text
attr FileLog_ActionDetector room Arbeitszimmer


#Anwesenheit
define HandyNorman PRESENCE fritzbox android-7c18279dcf0eceb
attr HandyNorman room System

define HandyTini PRESENCE fritzbox Tinis-iPhone
attr HandyTini room System

#define Norman_absent notify HandyNorman:absent {\
## if (ReadingsVal("HzArbeitszimmer_Climate", "controlMode","") eq "auto") {\
  #           fhem("set HzArbeitszimmer_Climate controlMode manual");;\
# }\
#}\

#define Norman_present notify HandyNorman:present {\
#if (ReadingsVal("HzArbeitszimmer_Climate", "controlMode","") eq "manual") {\
  #           fhem("set HzArbeitszimmer_Climate controlMode auto");;\
# }\
#}\




Puschel74

Hallo,

Problem 1: Kommt auf dein Gerät an das du abfragst.
Hier sollten sich einige Beiträge finden lassen.

Problem 2: Wenn es nicht klappt solltest du mal schauen ob
a) das notify überhaupt auslöst (Log-Meldungen einbauen) und
b) du schaltest beidemale den HM-Regeler auf controlmode manual?
Was ist der Sinn dahinter?

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

anilini

Zu 1: eine Lösung die ich gefunden haben, ist es zusätzlich über Lan-Ping zu prüfen....so habe ich die Chance, dass es zumindest "presence fritzbox" oder eben "lan-ping" richtig erkennt....

Zu 2: wie mache ich das mit dem Log am besten? (das mit dem manual war noch ein alter stand, sorry...in der kompletten Config war es richtig)

es wäre wahrscheinlich eh sinnvoller abzufragen, nur zu prüfen ob der Ziel-ControlMode bereits anliegt und falls nicht zu schalten....

Aber meine FHEM-Karriere steht noch ganz am Anfang ;)

Puschel74

Hallo,

Zitatin der kompletten Config war es richtig
Speziell bei "gewachsenen" FHEM-Installationen und seitenlangen Konfigfiles schauen ich mir gepostete Konfigs nichtmehr durch.
Ich schaue hier im Forum privat vorbei und möchte meine Zeit nicht mit fhem.cfg-Files durchbringen in denen 99% uninteressant sind und mit der Frage nichts zu tun haben.

zu 2:
define Norman_absent notify HandyNorman:absent {
        Log(3,"Notify getriggert);
if (ReadingsVal("HzArbeitszimmer_Climate", "controlMode","") eq "auto") {
             Log(3,"Heizungsregler geprüft");
             fhem("set HzArbeitszimmer_Climate controlMode manual");
}
}


Ja - ich verwende noch Log und nicht Log3 - ich muss mal mein Hirn umstellen (evtl. mal ein update machen  8) ).

Grüße

P.S.: Das hätte sich aber auch im Forum finden lassen  ;)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

anilini

Danke für deine schnelle Antwort...

Ich habe auch schon vorher im Forum gesucht, aber leider findet man nicht immer alles....was aber eher am Suchbegriff und damit an mir liegt :)...
was das durcharbeiten von Config Files angeht, hast du natürlich recht...

Den Code habe ich grad mal nach deiner Vorlage eingebaut, da ich noch einen Syntaxfehler beim ReadingsVal bekomme, muss ich da gleich noch mal ran...


anilini

So ich bin jetzt schon ein gutes Stück weiter nur ein Verständnisproblem besteht doch noch:

ich mache es mal am Beispiel vom "absent" (der "present-Fall ist analog"):

define Norman_absent notify HandyNorman:absent.* {\
        my $Mode = ReadingsVal("HzArbeitszimmer","controlMode","");;\
        Log(3,"Notify getriggert: Norman_absent, aktueller Mode: " . $Mode);;\
        if ($Mode ne "manual"){\
            Log(3,"If-Bedingung: nicht manual-> aktuell:  " . $Mode);;\
            if ($Mode ne "set_manual"){\
              Log(3,"If-Bedingung: nicht set_manual -> aktuell:  " . $Mode);;\
              fhem("set HzArbeitszimmer_Climate controlMode manual")\
            }\
        }\
}


der Quelltext arbeit soweit rund, Probleme macht nur die Umschaltphase, d.h. wenn ich den Mode: set_manual bekomme...deshalb wollte ich das ganze mit  if ($Mode ne "manual" &&  $Mode ne "set_manual") abfangen. Hat nicht geklappt.
Gut dann habe ich in 2 if-Bedingungen aufgeschlüsselt wie man es jetzt oben sieht....nur das komische ist, dass er trotzdem bis zum fhem("...") kommt...

hier auch noch meine log, wo man es auch gut sieht:
2014.01.26 17:22:48 3: Notify getriggert: Norman_absent, aktueller Mode: set_manual
2014.01.26 17:22:48 3: If-Bedingung: nicht manual-> aktuell:  set_manual
2014.01.26 17:22:48 3: If-Bedingung: nicht set_manual -> aktuell:  set_manual
2014.01.26 17:22:48 2: CUL_HM set HzArbeitszimmer_Climate controlMode manual


Ich denke ich bin irgendwie schon langsam blind...

Puschel74

Hallo,

versuch mal folgendes bitte und poste den Logeintrag:

Log(3,"If-Bedingung: nicht manual-> aktuell:".$Mode."<--");;\
Bitte genau so eingeben.
Ich möchte schauen ob es nicht vorne oder hinten noch Leerzeichen hat.
Ich bin mir nicht sicher ob die weggefiltert werden bei der Abfrage.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

anilini

#7
[2014.01.26 19:28:34 3: Notify getriggert: Norman_present, aktueller Mode:set_auto <--

2014.01.26 19:33:32 3: Notify getriggert: Norman_absent, aktueller Mode:set_manual <--


Das könnte der entscheidende Tipp gewesen sein :D. Ich habe jetzt mal ein Trim eingebaut...*Hoffnung*

Falls es jetzt wirklich funktionieren sollte: ist es möglich das 2.Handy ebenfalls mit den Trigger zu verknüpfen. Sodass egal ob Handy A oder Handy B anwesend ist, die Heizung an/aus geht....oder würdest du mir empfehlen das Ganze analog über extra Trigger zu lösen?

Puschel74

Hallo,

evtl. reicht ja auch ein
if ($Mode ne "manual "){\
also ein Leerzeichen am Ende einfügen bei der Abfrage.

Du kannst ruhig beide Handys in das notify mit aufnehmen.

define Norman_absent notify (HandyNorman|[i]weitereHandys[/i]):absent.* {\
Sollte reichen.
Wenn das zweite/die weiteren Handys auch mit Handy beginnen sollte ein
define Norman_absent notify Handy.*:absent.* {\
genügen.
Sobald ein Handy absent (oder present) auslöst wird das notify ausgelöst.
Ob beide Handys dann absent oder present sind musst du im Code abfragen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

anilini

#9
Soooo ich hatte jetzt mal Zeit und habe das ganze mal umgesetzt (vielleicht hilft es jemanden):

Heißt: bei Abwesenheit geht Heizung wird in 3 Zimmern in den MANUAL Mode  und auf 16.5 Grad.....
          bei Anwesenheit schaltet alles in den AUTO Modus...

#Anwesenheit: FB-PING
define HandyNorman PRESENCE fritzbox Nexus5
attr HandyNorman room System

define HandyTini PRESENCE fritzbox Tinis-iPhone
attr HandyTini room System

define Norman_absent notify (HandyNorman):absent.* {\
        my $StatusTini   =  trim(ReadingsVal("HandyTini","state",""));;\
        my $StatusNorman =  trim(ReadingsVal("HandyNorman","state",""));;\
        my $ModeKU       =  trim(ReadingsVal("HzKueche_Clima","mode",""));;\
        my $ModeAZ       =  trim(ReadingsVal("HzArbeitszimmer_Climate","R-controlMode",""));;\
        my $ModeWZ       =  trim(ReadingsVal("HzWohnzimmer_Climate","R-controlMode",""));;\
        if (($ModeKU ne "manu") && ($ModeKU ne "set_manu") && ($StatusTini eq "absent") && ($StatusNorman eq "absent")){\
              Log(3,"Kueche auf MANUAL:".$ModeKU."<--");;\
              fhem("set HzKueche_Clima controlManu on;;set HzKueche_Clima desired-temp 16.5");;\
        };;\
        if (($ModeAZ ne "manual") && ($ModeAZ ne "set_manual") && ($StatusTini eq "absent") && ($StatusNorman eq "absent")){\
              Log(3,"Arbeitszimmer auf MANUAL:".$ModeAZ."<--");;\
              fhem("set HzArbeitszimmer_Climate controlMode manual;;set HzArbeitszimmer_Climate desired-temp 16.5");;\
        };;\
        if (($ModeWZ ne "manual") && ($ModeWZ ne "set_manual") && ($StatusTini eq "absent") && ($StatusNorman eq "absent")){\
              Log(3,"Wohnzimmer auf MANUAL:".$ModeWZ."<--");;\
              fhem("set HzWohnzimmer_Climate controlMode manual;;set HzWohnzimmer_Climate desired-temp 16.5");;\
        }\
}
attr Norman_absent room System

define Norman_present notify (HandyNorman):present.* {\
        my $StatusTini   =  trim(ReadingsVal("HandyTini","state",""));;\
        my $StatusNorman =  trim(ReadingsVal("HandyNorman","state",""));;\
        my $ModeKU       =  trim(ReadingsVal("HzKueche_Clima","mode",""));;\
        my $ModeAZ       =  trim(ReadingsVal("HzArbeitszimmer_Climate","R-controlMode",""));;\
        my $ModeWZ       =  trim(ReadingsVal("HzWohnzimmer_Climate","R-controlMode",""));;\
        if (($ModeKU ne "auto") && ($ModeKU ne "set_auto") && (($StatusTini eq "present") || ($StatusNorman eq "present"))){\
              Log(3,"Kueche auf AUTO:".$ModeKU."<--");;\
              fhem("set HzKueche_Clima controlMode auto;;");;\
        };;\
        if (($ModeAZ ne "auto") && ($ModeAZ ne "set_auto") && (($StatusTini eq "present") || ($StatusNorman eq "present"))){\
              Log(3,"Arbeitszimmer auf AUTO:".$ModeAZ."<--");;\
              fhem("set HzArbeitszimmer_Climate controlMode auto;;");;\
        };;\
        if (($ModeWZ ne "auto") && ($ModeWZ ne "set_auto") && (($StatusTini eq "present") || ($StatusNorman eq "present"))){\
              Log(3,"Wohnzimmer auf AUTO:".$ModeWZ."<--");;\
              fhem("set HzWohnzimmer_Climate controlMode auto;;");;\
        }\
}
attr Norman_present room System


gibt eigentlich nur noch ein Punkt der mich leicht stört, wenn ich nach Hause komme schaltet alles sauber von MANUAL auf AUTO nur komischerweise wird nicht die eigentlich gültige Temperatur als Wunschtemp. genommen, sondern die es bleibt bis zum nächsten schalten der Automatik bei der runtergeregelten Temperatur....aber sollte sich auch noch lösen lassen

2knight

Super Thread, und danke dass du deinen letzten Stand noch mal gepostet hast.
Ich hätte noch einen Einwurf, obwohl das ganze schön schon rund läuft.

Bei uns sind die Handys in der Nacht beide im Flugmodus, ich würde aber trotzdem gerne schon vor dem Aufwachen in der Früh heizen, also nach dem Wochenprogramm im Modus auto.

Gibt es eine Möglichkeit noch einen Ausschluss je nach Uhrzeit einzubauen?
Also sowas wie "(Uhrzeit ne 05:00-09:00)"

if (($ModeKU ne "manu") && (Uhrzeit ne 05:00-09:00)  && ($ModeKU ne "set_manu") && ($StatusTini eq "absent") && ($StatusNorman eq "absent")){\


2knight

Hab es nun selbst raus gefunden...  8)

if (($ModeKU ne "manu") && ($hour >= 8) || ($hour < 23) && ($ModeKU ne "set_manu") && ($StatusTini eq "absent") && ($StatusNorman eq "absent")){\

Tedious

Nur ums abzurunden. Handy Ping ist sicherlich eine einfache Variante, birgt aber viele mitunter unbedachte Probleme... Akku leer, Flugmodus, wasauchimmer. Ist bei einer Hizung vielleicht suboptimal. Ich würde G-Tags empfehlen, die kosten nicht die Welt und machen das sehr zuverlässig wenn man sie an den Schlüsselbund hängt.
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

2knight

Interessante Option. Und berechtigter Einwand...

Allerdings muss man dann schon wieder ein Ding mehr verwalten.  :-\
Und bei mir ist das z.B. so, dass ich nicht immer den kompletten Schlüsselbund mitnehme, sondern manchmal den einzelnen Drittschlüssel weil ich alle anderen nicht benötige.

Die Mobiltelefone werden im Übrigen per PRESENCE Funktion erkannt.
Mal sehen wie sich das entwickelt.

Tedious

Naja, Presence macht ja nix weiteres als einen Lan-Ping ;) Insofern... ;)

Ich hab noch einen Gast-Tag. Wenn mal keiner zuhause ist und die Oma das Kind sittet schalte ich den an. Aber klar, ein weiteres Gerät, man muss es mitnehmen - ich hab halt immer den Schlüsselbund dabei, da ist aber auch nicht viel dran (Auto - Firma - Haustür), alle weiteren evtl. benötigten Schlüssel sind bei mir an einem weiteren Bund.
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...