Ich kaue seit einiger Zeit auf einem Problem mit notify herum, dabei geht es doch um die absoluten Basics!
Aber von Vorn: Ich hebe FHEM auf einem Mini-ITX-System mit Knoppix installiert. Der Server startet ohne Fehlermeldungen auch nach dem Update von soeben.
WEB, CUN2 und auch alles andere startet ohne Probleme. Momentan betreibe ich daran meine 7 MAX-Heizkörperthermostate, 3 MAX-Fensterkontakte und den MAX-Ecotaster. Alle Zustände, manuellen Änderungen, Ansprache der Geräte in der Gruppe, Messungen kommen auf dem Server an und werden sauber protokolliert.
Das klingt so weit alles sehr gut, jetzt möchte ich aber "nur", dass die Heizkörperthermostate einen bestimmten Wert annehmen, wenn der Ecotaster gedrückt wird. Dazu habe ich ausprobiert
define EcoTasterNotifyAn notify EcoTaster:open set HKT_Wohnzimmer desiredTemperature 13
define EcoTasterNotifyAn notify EcoTaster:on set HKT_Wohnzimmer desiredTemperature 13
define EcoTasterNotifyAn notify EcoTaster:1 set HKT_Wohnzimmer desiredTemperature 13
oder
define EcoTasterNotifyAn notify MAX_023cdc:open set MAX_085c90 desiredTemperature 13
define EcoTasterNotifyAn notify MAX_023cdc:on set MAX_085c90 desiredTemperature 13
define EcoTasterNotifyAn notify MAX_023cdc:1 set MAX_085c90 desiredTemperature 13
oder
define di_EcoTasterAn DOIF ([EcoTaster] eq "open") (set HKT_Wohnzimmer desiredTemperature 13)
define di_EcoTasterAn DOIF ([EcoTaster] eq "on") (set HKT_Wohnzimmer desiredTemperature 13)
define di_EcoTasterAn DOIF ([EcoTaster] eq "1") (set HKT_Wohnzimmer desiredTemperature 13)
oder
define di_EcoTasterAn DOIF ([MAX_023cdc] eq "open") (set MAX_085c90 desiredTemperature 13)
define di_EcoTasterAn DOIF ([MAX_023cdc] eq "on") (set MAX_085c90 desiredTemperature 13)
define di_EcoTasterAn DOIF ([MAX_023cdc] eq "1") (set MAX_085c90 desiredTemperature 13)
oder, oder, oder...
jedes Mal ohne Erfolg.
Kann mir mal jemand den entscheidenden Tipp geben?
Hallo,
ohne zu wissen wie die Geräte bei dir definiert sind wird das wie das berühmte stochern im Heuhaufen.
http://forum.fhem.de/index.php/topic,16311.0.html (http://forum.fhem.de/index.php/topic,16311.0.html)
Grüße
Danke für die erste Reaktion. Bin immer wieder überrascht...
OK, dann hier die Definitionen (darum geht es doch, oder?):
Der Taster:
Internals:
CULMAX0_MSGCNT 20
CULMAX0_TIME 2014-09-21 10:16:55
DEF PushButton 023cdc
IODev CULMAX0
LASTInputDev CULMAX0
MSGCNT 20
NAME MAX_023cdc
NR 64
RSSI -71.5
STATE closed
TYPE MAX
addr 023cdc
type PushButton
Readings:
2014-09-21 10:16:55 battery ok
2014-09-21 10:16:55 connection 0
2014-08-25 19:58:21 msgcnt 5
2014-09-21 10:16:55 onoff 0
2014-09-21 10:16:55 state closed
Internals:
interfaces switch_passive;battery
Attributes:
IODev CULMAX0
alias EcoTaster
room Zentrale
Heizkörpertaster-Thermostat:
Internals:
CULMAX0_MSGCNT 11
CULMAX0_TIME 2014-09-21 10:22:15
DEF HeatingThermostat 040e0e
IODev CULMAX0
LASTInputDev CULMAX0
MSGCNT 11
NAME MAX_040e0e
NR 44
RSSI -51
STATE 12.0 °C (rf error)
TYPE MAX
addr 040e0e
backend CULMAX0
dstsetting 1
mode 1
rferror 1
serial JEW0016324
type HeatingThermostat
Readings:
2014-08-21 20:28:56 TimeInformationHour 5
2014-09-21 10:22:15 battery ok
2014-08-24 19:46:19 comfortTemperature 21
2014-09-21 10:22:15 desiredTemperature 12.0
2014-08-24 10:37:37 ecoTemperature 17
2014-09-21 09:42:23 firmware 1.6
2014-09-21 09:42:23 groupid 0
2014-08-24 19:46:19 maximumTemperature on
2014-08-21 21:22:15 measurementOffset 0
2014-08-24 19:46:19 minimumTemperature off
2014-09-21 10:22:15 mode manual
2014-09-21 10:21:58 msgcnt 142
2014-09-21 10:22:15 state 12.0 °C (rf error)
2014-09-21 10:22:15 temperature 20.2
2014-09-21 09:42:23 testresult 255
2014-09-21 10:22:15 valveposition 0
2014-08-24 19:46:26 windowOpenDuration 30
2014-08-24 19:46:19 windowOpenTemperature 12
Internals:
interfaces thermostat;battery;temperature
Attributes:
IODev CULMAX0
_map AlleHKT
alias HKT_Wohnzimmer
event-on-change-reading .*
fp_Erdgeschoss 595,550,5,
icon hc_wht_regler
room Wohnzimmer
es kommen keine Fehlermeldungen und je nachdem, welche Zeile ich teste erscheint in Unsorted:
Internals:
CFGFN
DEF MAX_023cdc:open set MAX_085c90 desiredTemperature 13
NAME EcoTasterNotifyAn
NOTIFYDEV MAX_023cdc
NR 355
NTFY_ORDER 50-EcoTasterNotifyAn
REGEXP MAX_023cdc:open
STATE active
TYPE notify
Attributes:
Was mich verunsichert ist:
Wie ist das Ereignis auszuwerten: "open", "on", oder "1"?
Wenn ich z.B. "list HKT_Wohnzimmer", also den Alias verwende, eingebe, kommt als Antwort: "No device named HKT_Wohnzimmer found"
Hallo,
wenn du den EventMonitor öffnest und den Taster drückst siehst du was FHEM sieht.
Ein list auf den alias wird nicht klappen - du musst ein list auf den NAME machen.
Da ich nicht weiß was dir der Taster an Events schickt musst du erstmal im EventMonitor schauen.
Grüße
Der Monitor bringt folgendes:
2014-09-21 10:58:14 MAX MAX_023cdc battery: ok
2014-09-21 10:58:14 MAX MAX_023cdc onoff: 0
2014-09-21 10:58:14 MAX MAX_023cdc connection: 0
2014-09-21 10:58:14 MAX MAX_023cdc closed
2014-09-21 10:58:22 MAX MAX_023cdc battery: ok
2014-09-21 10:58:22 MAX MAX_023cdc onoff: 1
2014-09-21 10:58:22 MAX MAX_023cdc connection: 0
2014-09-21 10:58:22 MAX MAX_023cdc opened
Hi QuaGS
deine Frage gehört eigentlich in das Max-Forum.
versuchs mal hiermit:
define EcoTasterNotifyAn notify MAX_023cdc:opened {Log (1,"Device %NAME %EVTPART0 wurde gefeuert");;}
Nachdem du den Eco-Taster auf Auto (=opened) gedrückt hast, sollte in der Log-Datei folgender Eintrag erscheinen:
Zitat2014.09.21 13:32:30 1: Device EcoTasterNotifyAn opened wurde gefeuert
Damit quälst du in deiner derzeitigen Lernphase nicht deine Geräte, sondern nur die Log-Datei.
Ein notify kann man nur richtig konfigurieren, wenn man die genaue Struktur der Ereignisse kennt und die findest du
wie Puschel74 richtig erklärt immer über den Event-Monitor.
Du kannst also entweder mit onoff 0/1 oder closed/opened arbeiten.
Mit deinem bisherigen Lösungsansatz, kann jedermann mit dem Eco-Taster sämtliche Credits deines Culs in sehr kurzer Zeit
verbraten. Hast du daran gedacht ?
John
Danke für die Antworten! Der Fehler lag in dem Status-Wort "opened" bzw. "closed" für den anderen Befehl.
mit:
define di_EcoTasterAus DOIF ([MAX_023cdc] eq "closed") (set MAX_085c90 desiredTemperature 11)
bzw.
define di_EcoTasterAn DOIF ([MAX_023cdc] eq "opened") (set MAX_085c90 desiredTemperature 15)
kann ich das Ereignis vom Taster in den entsprechenden Befehl umsetzen.
versuchs mal damit:
Zitatdefine EcoTasterNotifyAn notify MAX_023cdc:opened {set MAX_085c90 desiredTemperature 15;;}
Tip: du kannst deinen Geräten auch aussagekräftige Namen geben wie: MAX_Wohnzimmer.
rename MAX_085c90 MAX_Wohnzimmer
John