MAX! WindowOpen ohne MAX-Fensterkontakt setzen?

Begonnen von Tobias, 08 Januar 2013, 09:40:28

Vorheriges Thema - Nächstes Thema

Tobias

Hi,
ich habe teilweise Fensterkontakte auf 1wire Basis, also kein MAX! Fensterkontakt.
Wie kann ich dem MAX!-Thermostat nun beibringen, das das Fenster offen ist?
Gibt es soetwas wie einen Befehl:

set MAX_WZ WindowOpen
set MAX_WZ WindowClose

Ich könnte zwar sagen:
set MAX_WZ DesiredTemperature Off
aber dann müsste man sich ja die zuvor eingestellte Temperatur explizit merken um sie wieder einzustellen wenn das Fenster geschlossen wird...
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Matthias Gehre

Technisch möglich ist das, indem man über den CUL so tut, als wäre man ein Fensterkontakt.
Dann kann man dem Thermostat die Nachricht "Fenster ist offen" schicken.

Wenn du etwas Ahnung von Perl hast,
dann kann ich dir beim schreiben eines Patches mir Rat behilflich sein.

Tobias

hab mir mal den Code angesehen. Da steht soetwas wie folgendes... Weißt du was man dem Thermostat genau senden muss damit der in den WindowOpen/Close Status geht?
Zitat($hash->{IODev}{SendDeviceCmd})->($hash->{IODev},pack("CCCCCCH6CC",0x00,0x00,0x22,0x00,0x00,0x00,$hash->{addr},0x00,$args[0]));
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Matthias Gehre

Mit SendDeviceCmd geht es zwar, ist aber deprecated. Komfortabler ist Send ala,
  ($hash->{IODev}{Send})->($hash->{IODev},$cmd, $dst, $payload);

$cmd muss "ShutterContactState" state sein, $dst ist die Adresse des HeatingThermostat als Hex-String (z.B. "ab12ef"),
$payload ist ein Hex-string des Payloads. Für ShutterContactState findet man dazu was in MAX_Parse().
Der Payload ist ein Byte, entweder "10" für zu oder "12" für auf.

Damit der HeatingThermostat auf dein ShutterContactState reagiert, muss er aber zuerst per associate
mit dem Cube als "ShutterContact" assoziert werden. Dazu muss eine AddLinkPartner Nachricht geschickt werden,
Details sind in MAX_Set() unter dem Befehl "associate".
  set associate MAX_Heizung [adresseVonCUL_MAX]
geht nicht direkt, da das intern als Typ=Cube in die Nachricht steckt, wo wir hier Typ=ShutterContact brauchen.

Tobias

als Merker:
folgendes sendet der FK wenn das Fenster geöffnet wird
2013.01.11 21:55:32 5: CUL: Z0BBE063005E5791234560012 -68
2013.01.11 21:55:32 5: CUL dispatch Z0BBE063005E5791234560012
2013.01.11 21:55:32 5: CUL_MAX_Parse: len 11, msgcnt BE, msgflag 06, msgTypeRaw ShutterContactState, src 05e579, dst 123456, groupid 0, payload 12
2013.01.11 21:55:32 5: CULMAX0 dispatch MAX,1,ShutterContactState,05e579,12
2013.01.11 21:55:32 5: MAX_Parse MAX,1,ShutterContactState,05e579,12
2013.01.11 21:55:32 5: ShutterContact isopen 1, rferror 0, battery 0, unkbits 0
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Matthias Gehre


Tobias

ich würde jetzt sagen: WOW... du bist der Wahnsinn :) (im postiven sinne) :)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter