Erstellen von "auto" Profilen

Begonnen von CulDeSac, 27 Dezember 2012, 18:17:29

Vorheriges Thema - Nächstes Thema

CulDeSac

wenn ich aus fhem die MAX Thermostate steuere schalten diese auf manuell um.
Ich möchte aber lieber ein neues automatisches Wochenprofil anlegen. Das gibt bei Ausfall des fhem servers
wenigstens kein Heizungschaos, da die Thermostate dann einfach das Profil weiter abfahren.

Wie kann man das "auto" Profil einstellen?
Notfalls könnten man ein Profil mit dem MAX! Konfigurator-Programm unter Windows einstellen und
den Wochencode zurückspielen. Dieser liegt mindestens als Zeichenkette vor.

Kann mir da jemand helfen?


reacend

hi also ich nehme die orignal maxsoftware...
entweder vorher fhem stoppen oder die ondemand option eintragen.

ansonsten kannst du noch mit maxbuddy wochenprofile verwalten...

bg
reacend

CulDeSac

Sinn der Übung war es aber fhem zu nutzen, oder?

Tobias

Hoffe Matthias Gehre kann etwas dazu sagen. Ich habe nämlich auch nur ein CUL und kein Cube
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

Also das aktuelle Wochenprofil steht in $hash->{internal}{weekProfile} der MAX Geräte.
Bisher nur als Zeichenkette. Das Parsen müsste man noch machen. Das Format ist:

Format:
DataTag(Samstag)
...
DataTag(Montag)

DataTag:
13 einzelne Profile

einzelnes Profil:
16 Bit Integer: (high byte kommt zuerst im String)
int time = (value & 0x1FF) * 5;
int hour = time / 60 % 24;
int minute = time % 60;
int temperature = value >> 9 & 0x3F;

Würde mich über einen Diff freuen.

Dann braucht man noch einen Möglichkeit, um über get/set das Wochenprofil zu verändern.

Das Senden des neuen Wochenprofiles an die Geräte kann dann wieder ich implementieren.

CulDeSac

Hi, damit ist ja schon einmal viel geholfen, denn so kann man schon einmal ein vorhandenes Profil speichern und
blind wieder draufspielen. (Ich denke da an Profile für Urlaub, Schulferien  und natürlich auch Weihnachten - sonst bekomme ich nächstes Jahr wieder geschimpft, weil alle unterm Baum frieren, weil Wochentag)

Adam

Hallo zusammen,

ich beschäftige mich seit kurz vor Weihnachten mit dem MAX System und somit auch mit FHEM.
Ich benutzte einen Cube und habe mehrere Thermostate auch einen WT+ Wandthermostat.
Zum Programmieren der Wochenprofile nutze ich z.Zt. das MAX eigene Programm mit dem Cube.
Ich finde toll was bisher alles für das MAX System gemacht wurde!

Ich wollte auch gern in FHEM meine Profile zumindest einmal sichtbar haben
und habe mich dann also auch noch der Fremdsprache PERL hingegeben ;-)
Mit den Hinweisen von Matthias habe ich auch das Parsen und die Darstellung hinbekommen (juhu)

Im Bild Könnt Ihr ein Besipie von den Wochenprofilen sehen.
Jeweils eine Zeile für die Zeiten pro Tag und eine Zeile für die zugehörigen Temperaruren.

Den Code zum Parsen habe ich auch angehangen, vielleicht kann Matthias ja mal einen code-review machen und das eventuell auch übernehmen.
Wie gesagt das waren meine ersten PERL Versuche und die Interna von FHEM kenne ich auch noch nicht!

Bei dem Wandthermostaten wird das Profil leider noch nicht korrekt dargestellt, da der String in $shash->{internal}{weekProfile} zu kurz ist.
Es müssten ja 4 Zeichen mal 13 Stellpunkte mal 7 Tage also 364 Zeichen sein, es sind aber nur 298.

Vielleicht kann Matthias sich das mal anschauen, ich habe da auf Anhieb den Fehler nicht gefunden.
Könnte sein, dass in der Config Message Dinge wie valveposition und valveoffset bei einem WT gar nicht übertragen werden???

Naja probierts mal aus.
Wie gesagt ich nutze einen Cube und habe das mit CUL nicht probiert!

Adam

Matthias Gehre

Hey, danke für den Code!
Sieht sehr gut aus, habs mit kleinen Änderungen übernommen. Kommt morgen mit dem Update.

Zum Wandthermostat kann ich selbst wenig sagen. Was gibt denn der Cube für eine C: Nachricht zum Wandthermostat?
Im Log sieht das so ähnlich aus wie
2013.01.10 21:43:20 5: Msg C:04c3fe,0gPD7gEAFf9KRVEwMTM1MzI4KiI9CQcYAzAM/wBESFUIRSBFIEUgRSBFIEUgRSBFIEUgRSBFIERIVQhFIEUgRSBFIEUgRSBFIEUgRSBFIEUgREhUbETMVRRFIEUgRSBFIEUgRSBFIEUgRSBESFRsRMxVFEUgRSBFIEUgRSBFIEUgRSBFIERIVGxEzFUURSBFIEUgRSBFIEUgRSBFIEUgREhUbETMVRRFIEUgRSBFIEUgRSBFIEUgRSBESFRsRMxVFEUgRSBFIEUgRSBFIEUgRSBFIA==

Adam

Hi Matthias,

freut mich auch was beitragen zu können.
 
Hatte bei mir auch noch die Anzeigenamen geändert mit einer laufenden Nummer,
so dass die Wochentage in der richtigen Reihenfolge aufgelistet werden.

readingsBulkUpdate($shash, "weekprofile-$i-$decalcDays[$i]-time", $time_prof_str );
readingsBulkUpdate($shash, "weekprofile-$i-$decalcDays[$i]-temp", $temp_prof_str );

Und ich hatte noch auf die Länge des weekprofiles variable im $hash abgefragt,
damit bei dem kurzen WT+ String nicht immer eine Fehlermeldhung kommt!

Habe hier mal ein C: String von einem WT+ und einem normalen Thermostat,
die mit einander gekoppelt sind und somit das gleiche weekprofil haben!

Wandthermostat:
2013.01.10 22:05:22 5: Msg C:057fa4,ywV/pAMBEP9KRVEwNTAxNjcxKiE9CTxUWRQ9ID0gPSA9ID0gRSBFIEUgRSBFIEUgPGBZFD0gPSA9ID0gPSBFIEUgRSBFIEUgRSA8SFkUPSA9ID0gPSA9IEUgRSBFIEUgRSBFIDxIWRQ9ID0gPSA9ID0gRSBFIEUgRSBFIEUgPEhZFD0gPSA9ID0gPSBFIEUgRSBFIEUgRSA8SFkUPSA9ID0gPSA9IEUgRSBFIEUgRSBFIDxIWRQ9ID0gPSA9ID0gRSBFIEUgRSBFIEUg
Thermostat mit gleichem Wochenprogramm:
2013.01.10 22:05:22 5: Msg C:04c9db,0gTJ2wEBFv9KRVEwMzg3NTA5KiE9CQcYAzAM/wA8VFkUPSA9ID0gPSA9IEUgRSBFIEUgRSBFIDxgWRQ9ID0gPSA9ID0gRSBFIEUgRSBFIEUgPEhZFD0gPSA9ID0gPSBFIEUgRSBFIEUgRSA8SFkUPSA9ID0gPSA9IEUgRSBFIEUgRSBFIDxIWRQ9ID0gPSA9ID0gRSBFIEUgRSBFIEUgPEhZFD0gPSA9ID0gPSBFIEUgRSBFIEUgRSA8SFkUPSA9ID0gPSA9IEUgRSBFIEUgRSBFIA==

Würde mich auch wenn mal Zeit ist an einem set für die Profile probieren, weiss nur nicht wie das intern in FHEM passieren muss.
Also in welche "globalen" Strukturen muss das rein, bzw. wie muss die MSG aussehen?

Gruß
Adam

Matthias Gehre

Hey,

das parsen der WallThermostatConfig sollte nun auch passen und die richtige Länge des weekprofiles liefern.

Wie das setzten geht, ist noch nicht klar.
Am besten mit dem CUL beobachten (CUL_MAX_Parse Nachrichten) oder den Cube beobachten (wireshark)
während man mit der offiziellen Max! Software das Wochenprofil ändert.
Es gibt wahrscheinlich ein extra Paket, dass im Payload dann diesen langen Hex-String beinhaltet.

Adam

Hi Matthias,

cool! Werde ich morgen direkt mal ausprobieren.

Habe auch einen CUL hier, habe aber noch nichts richtung MAX damit gemacht.
Mal sehen, ob ich beim Setzen der Profile über den Cube was damit tracen kann!

Adam

Adam

Hi Matthias,

die Profile sehen gut aus sowohl beim Thermostat als auch beim WT+.
Die Änderung hat geholfen!

Ich sehe jedoch beim Start die folgende Melungen:

Scalar value @time_prof[$j] better written as $time_prof[$j] at ./FHEM/10_MAX.pm  line 505, <> line 16.
Scalar value @temp_prof[$j] better written as $temp_prof[$j] at ./FHEM/10_MAX.pm line 506, <> line 16.

Gruß
Adam

Tobias

Den Fehler beim Start habe ich auch, aber ich habe keine neuen Readings für die Profile hinzubekommen.
Werden keine Readings dazu angelegt wenn keine Profile existieren?
Existieren überhaupt im Thermostat Profile im Auslieferungszustand?
Habe nur ein CUL und demnach keine Auto-Profile angelegt
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

Die Profile können m.E. nicht abgefragt werden. Der Cube speichert für uns das zuletzt eingestellte Profil,
sodass wir über MAXLAN das abfragen können.
Per CUL geht das nicht. Man kann nur ein neues Profil setzen, und sich das dann merken.

snowyrain

Hallo Adam,

vielen Dank an Dich für das Erstellen und an Matthias für das Einbinden der Anzeige des Wochenprogramms.

Super Sache!

Gruß

Snowyrain