Temperatur-Scanner für MAX-Thermostate

Begonnen von John, 12 März 2013, 09:44:59

Vorheriges Thema - Nächstes Thema

John

Ich habe die angesprochenen Punkte der letzten Tage umgesetzt und die neue Skript-Version 1.3 angehängt.

Fixes:
- verbesserte Filterung der MAX-Komponenten
- die Bezeichnung des CUL's war mit "CUL" nicht dynamisch ausgefuehrt;
- nach dem Befehl "reload 99_MaxScan.pm" wurde ein neuer weiterer Timer gestartet; dies wird nun unterbunden

Neues Attribut scanTemp
Das Attribut scanTemp wird nun direkt vom 10_MAX.pm unterstützt, so dass 99_MaxScan.pm es nutzen kann.
Es dient dazu, die Thermostate zu markieren, die in den Scannerlauf einbezogen werden sollen.


keepAuto
wenn das Attribut keepAuto=1 ist, wird eine Fehlermeldung via Logger ausgegeben.
(keepAuto und Scanner vertragen sich nicht)

Datumsverarbeitung
fuer die Datumsverbeitung werden nur noch Mechanismen verwendet, die in fhem.pl vorhanden sind.
Somit sollte die Fritzbox-Fraktion keine Probleme mehr haben.

Intelligenter Scheduler
der Wiederaufruf von MaxScan erfolgt nun intelligent, der Timer wird auf die Scanzeit des nächsten Thermostats gesetzt.
(Nicht wie bisher alle 10 Sekunden)
 

Inbetriebsetzung:

1. 99_MaxScan.pm in das Verzeichnis /opt/fhem/FHEM kopieren.

2. Bei den Thermostaten, die gescannt werden sollen, dass Attribut scanTemp setzen:
attr VT_HW scanTemp 1
UND keinesfalls keepAuto setzen

3. FHEM neu starten



John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

f.reddy

Hallo John,

erm jaaa... Jetzt wo du es erwähnst - das keepauto hatte ich gesetzt. Im Changelog von 10_MAX gesehen und mir gedacht "Schön, das machste mal rein"... selten doof.
Frei nach dem Motto "Kaum machts mach richtig, schon funktionierts" hab ich heute schonmal einen schönen Graphen bekommen, der mir recht deutlich sagt, dass ich mal an der Heizkurve schrauben sollte.

Deine V1.3 läuft seit eben. Sieht alles wunderbar aus. Temperatur aktualisiert sich im MAX Log & im Logfile wirds auch schön ausgegeben.
Was auch zu sehen ist: über die letzten 15 Min ist der load an der Box runter gegangen. Dass fhem jetzt nicht alle 10sek aktiv wird macht sich durchaus bemerkbar!

Vielen Dank dafür!

Marcel_R

Guten Abend John,

Vielen herzlich Dank für Dein Programm und die schnellen Updates. Jetzt klappt alles auch bei mir!


Du hast Dir einen Orden nach Wahl verdient.
 
Gruss

Marcel
FHEM / Fritz!Box 7490 / CULv3 / Raspi / COC / MAX! / HomeMatic /

Marcel_R

Salut John,

Leider hatte ich mich letzte Nacht zu früh gefreut. Auf jeden Fall fand ich heute Morgen nicht die gewünschte Datenfolge.

Einträge in FHEM.cfg betreffend diesem Heizkörperthermostat:

define HKT_1_Buero MAX HeatingThermostat 05adca
attr HKT_1_Buero room MAX
define FileLog_HKT_1_Buero FileLog ./log/HKT_1_Buero-%Y.log HKT_1_Buero
attr FileLog_HKT_1_Buero logtype text
attr FileLog_HKT_1_Buero room MAX

define HC_1_Buero Heating_Control HKT_1_Buero 07:00:19_22:00:16


Ich habe nochmal kontrolliert, dass es sich bei 99_MaxScan um die Version 1.3 (d.h. 11'973 Bytes) handelt.

LogFile:
2013.03.24 08:48:42 5: Begin##################>HC_1_Buero
2013.03.24 08:48:42 5: wday------------>7
2013.03.24 08:48:42 5: d------------>0--->nextSwitch:0
2013.03.24 08:48:42 5: days[0]------------>7
2013.03.24 08:48:42 5: d------------>1--->nextSwitch:0
2013.03.24 08:48:42 5: days[1]------------>1
2013.03.24 08:48:42 5: d------------>2--->nextSwitch:0
2013.03.24 08:48:42 5: days[2]------------>2
2013.03.24 08:48:42 5: d------------>3--->nextSwitch:0
2013.03.24 08:48:42 5: days[3]------------>3
2013.03.24 08:48:42 5: d------------>4--->nextSwitch:0
2013.03.24 08:48:42 5: days[4]------------>4
2013.03.24 08:48:42 5: d------------>5--->nextSwitch:0
2013.03.24 08:48:42 5: days[5]------------>5
2013.03.24 08:48:42 5: d------------>6--->nextSwitch:0
2013.03.24 08:48:42 5: days[6]------------>6
2013.03.24 08:48:42 5: d------------>7--->nextSwitch:0
2013.03.24 08:48:42 5: days[7]------------>7
2013.03.24 08:48:42 5: NowSwitch: 01.01.1970 01:00:00 ; AktDesiredTemp: 15.0 ; newDesTemperature: 15.0
2013.03.24 08:48:42 5: NextSwitch=01.01.1970 01:00:00
2013.03.24 08:48:42 5: Triggering HC_1_Buero (3 changes)
2013.03.24 08:48:42 5: Notify loop for HC_1_Buero nextUpdate: 01.01.1970 01:00:00
2013.03.24 08:49:00 4: Connection accepted from FHEMWEB:192.168.178.29:62744


    
FileLog_HKT_1_Buero
 2013-03-24_05:25:36 HKT_1_Buero mode: auto
2013-03-24_05:25:36 HKT_1_Buero battery: ok
2013-03-24_05:25:36 HKT_1_Buero desiredTemperature: 15.0
2013-03-24_05:25:36 HKT_1_Buero valveposition: 11
2013-03-24_05:25:36 HKT_1_Buero 15.0 °C
2013-03-24_07:10:23 HKT_1_Buero mode: auto
2013-03-24_07:10:23 HKT_1_Buero battery: ok
2013-03-24_07:10:23 HKT_1_Buero desiredTemperature: 15.0
2013-03-24_07:10:23 HKT_1_Buero valveposition: 17
2013-03-24_07:10:23 HKT_1_Buero temperature: 15.2
2013-03-24_07:10:23 HKT_1_Buero 15.0 °C
 


Schaue ich nach den Daten am falschen Ort?

Danke und Gruss

Marcel
FHEM / Fritz!Box 7490 / CULv3 / Raspi / COC / MAX! / HomeMatic /

f.reddy

Guten Morgen zusammen,

eine Beobachtung:
Ich steuere meine Heizkörper ja per Wochenprogramm. 2 identische Programme auf beiden Heizkörpern im Raum.
Heizung links funktioniert wunderbar, Heizung rechts steht immer wieder auf Manuell. Dadurch hat er gestern Abend die Temperatur schon nicht absenken wollen.
Habe ihn dann per Befehl (desiredTemperatur auto 17.0) wieder auf Auto und die richtige Temperatur gesetzt.

Beim Blick eben steht links wieder auf 17 Auto, Rechts auf 17 Manu - somit wird der Wochenplan wieder nicht greifen...
Kanns sein, dass das Script einfach hin und her wechselt u   nd der zum Scriptstart eingestellte Modus dann der Führende bleibt?


Viele Grüße
Stefan

f.reddy

Hallo Marcel,

V1.3 schaut per Argument scantemp nach, ob es das Thermostat "betreuen" soll.
Mach mal ein "update", es sollte in der Liste der aktualisierten Dateien die 10_MAX befinden. Da wurde das Update gemacht, dass ein MAX Gerät das Argument scantemp tragen kann.
Dann per attr MAX_xxxxxx scanTemp 1 das Thermostat für Maxscan aktivieren.
Ich glaube es ging dann sofort los - ich mach danach immer einen shutdown restart (save davor nicht vergessen ;-) )

Es sollten dann im normalen Logfile ab Loglevel 3 folgende Meldungen erscheinen:
2013.03.24 09:03:48 3: MaxScan.MAX_065d92 temperature received NextScan:2013-03-24 09:05:10
2013.03.24 09:03:48 3: MaxScan next scan in seconds:60  next thermostat-scan : 1364112288 curTime:1364112228
2013.03.24 09:04:48 3: MaxScan next scan in seconds:22  next thermostat-scan : 1364112310 curTime:1364112288


VG
Stefan

John

Hallo Stefan,

anbei meine Anmerkungen
Zitat...Heizung links funktioniert wunderbar,
Das ist eher Zufall

ZitatHeizung rechts steht immer wieder auf Manuell.
so soll es sein

ZitatBeim Blick eben steht links wieder auf 17 Auto, Rechts auf 17 Manu - somit wird der Wochenplan wieder nicht greifen...
richtig.

ZitatKanns sein, dass das Script einfach hin und her wechselt und der zum Scriptstart eingestellte Modus dann der Führende bleibt?
so muss es sein.

Das Grundprinzip des Scanners beruht darauf den Modus (Auto<_>Manu) zu wechseln

aus dem ersten Beitrag dieses Threads:

ZitatMan muss dafür sorgen, dass das Automatik-Programm im Thermostat selbst praktisch inaktiv ist.
Mit Automatik-Programm ist das gemeint was du als Wochenprogramm bezeichnest.

Wenn du den Scanner und zugleich Wochenprogramme nutzen willst, MUSST du auf das Heating_Control wechseln und wie beschrieben
das Wochenprogramm im Thermostat deaktivieren.


John


CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

f.reddy

Okidoke - dann kucke ich mir das Heating Control doch gleich mal an.
Dank dir!

Marcel_R

Hoi Stefan und alle anderen,

Danke für Deine Ausführungen.

Mit Deinem Hinweis auf das save hast Du ins Schwarze getroffen....

In der Zwischenzeit ist scanTemp aktiviert und save'd. Testweise habe ich dann auch Heating control aus dem fhem.cfg gelöscht. Trotzdem kein Erfolg.

Update force brachte auch keine Besserung. Habe dann mein Glück mit einem andern Heizkörperthermostat versucht. Gleiches Ergebnis.

Langsam verlassen mich die guten Ideen, was ich noch tun könnte.

Hat jemand einen Hinweis?

Danke für alle Anregungen.

Marcel
FHEM / Fritz!Box 7490 / CULv3 / Raspi / COC / MAX! / HomeMatic /

John

Hallo Marcel

1. credits

in einem deiner Posts hast du geschrieben
ZitatBeim CUL gibt es leider kein Reading "credit10ms".

Ist das Thema schon geklärt ?


2. Definitionsblock für Thermostat
Schick uns doch mal einen Define-Block mit allen Attributen.
keepAuto darf NICHT gesetzt sein.
scanTemp MUSS gesetzt sein

3. Filesysem
Die Datei 99_MaXScan.pm muss im selben Verzechnis sein wie z.B. 10_MAX.pm.
Sind die Zugriffsrechte bei beiden identisch ?
Wenn nein, anpassen.

4. Logging
Setze den LogLevel des zu scannenden Thermostats auf 2

attr HT_BAD loglevel 2
Alle Logfiles, die ich von dir bisher gesehen haben, haben keinen Eintrag von MaxScan.
Ein solcher beginnt IMMER mit MaxScan:
Zitat2013.03.24 21:35:46 2: MaxScan HT_BAD not enough credits(33) need 366/540 NextScan:2013-03-24 21:44:46

5. Version
In der 3. Zeile von 99_MaxScan.pm steht
Zitat# V 1.03
richtig ?

John

ps: schade,hab mich so auf den Orden gefreut.
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Marcel_R

Hallo John,

Danke, dass Du mich noch einmal unter Deine Fittiche nimmst.

1. credits
i.O. nach update
Readings
cmds B C F i A Z E G M R T V W X e f m l t u x 2013-03-25 10:47:24
credit10ms 788 2013-03-25 10:47:57


2. Definitionsblock für Thermostat
Siehe PDF (nach Schritt 4)

3. Filesystem
Selbes Verzeichnis, selbe Berechtigung (777)

4. Logging
loglevel jetzt auf 2 gesetzt (siehe Punkt 2.)

Dass LogFiles keine Einträge von MaxScan haben, diese jedoch haben sollten, ist mir seit der Antwort von Stefan bewusst.

Dies ist meiner Ansicht nach die Folge meines Problems. Ich habe das Gefühl, dass 99_MaxScan.pm nicht geladen wird, bzw. ausgeführt wird. Soweit ich dies verstanden habe, sollte FHEM dies automatisch machen (falls alles andere richtig ist).

5. Version
Zeilen 1 + 2:
# $Id: 99_MaxScan.pm 2013-03-23 20:15:33 john $
# V 1.03

Von meiner Warte aus sollte alles richtig sein.

Als Fehler-Quelle sehe ich folgende möglichen Gründe:

A) mangelnde Ressourcen
Ist 99_MaxScan.pm sehr hungrig nach Ressourcen (sodass es bei der FB7270 nicht genügend Speicher haben könnte)?

http://fhem.de/fritzbox.html > "Since these devices have less memory than the FB7390, fhem may suffer from memory-shortage, esp. inspecting large logs directly in the browser my lead to a reboot." (Was es jeweils beim Laden des LogFiles macht.)

B) Fehlerhafter CUL (vermutlich nicht, da das Problem kaum mit Übertragung zu tun hat und CUL sonst richtig arbeitetet)

C) Anderes "Gerät" stört (kaum, da ich die "Exoten" herausgelöscht habe > habe noch CUL (1), CUL_Max (1), FHEMWEB (2), Floorplan (1), FileLog (12), Global (1), Max (10), autocreate (1), notify (1),  telnet (1)) ergebend 31 defined entities.

2013.03.25 10:47:30 0: Server started with 31 defined entities (version Fhem 5.3 (DEVELOPMENT), $Id: fhem.pl 2866 2013-03-07 15:10:37Z rudolfkoenig $, pid 5436)

D) Falsche Software (Linux, Perl, ?)
Ich habe diese unverändert von http://fhem.de/fritzbox.html fhem-5.3-fb7270.zip

E) Falsche Firmwares (kaum)

Wie Du siehst habe ich nicht mehr viele Ideen.

Interessant wäre es zu wissen, ob es bei jemandem auf der FB7270 (original nicht Freetz) läuft.

Gruss und Danke noch einmal

Marcel

P.S. Verdient hast Du Dir den Orden auf jeden Fall. Wenn Du Dir den passenden ausgesucht hast, bemühe ich mich gerne bei der zuständigen Stelle, dass diese ihn Dir dann auch verleiht.
Sicher ist natürlich nichts - meist bekommen eh nicht diejenigen die Orden, die diese verdient hätten.
FHEM / Fritz!Box 7490 / CULv3 / Raspi / COC / MAX! / HomeMatic /

John

Hallo Marcel
kannst du bitte folgende Zeile hinzufügen (fett dargestellt):

sub
MaxScan_Initialize($$)
{
  my ($hash) = @_;

  # timer fuer das scanning aktivieren
  RemoveInternalTimer("MaxScan");  # wenn schon vorhanden, dann loeschen
  InternalTimer(gettimeofday()+20, "MaxScan", "MaxScan", 0);
 Log 2,"MaxScan is starting";
}

nach einem Neustart von FHEM wird man diesen Logeintrag sehen:

013.03.25 12:08:26 0: Server shutdown
2013.03.25 12:08:30 1: Including fhem.cfg
2013.03.25 12:08:30 2: MaxScan is starting

Dann wissen wir, dass das Modul geladen wird.

Danach unter Telnet:
reload 99_MaxScan.pm

Sende mir die Ausgaben von Telnet.

John

CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Marcel_R

Salut John,

Per Telnet im Root eingegeben:
-sh: reload: not found

Falls dies falsch war, bitte ich um präzisere Infos (da Linux-Laie):

In FHEM im Befehlsfeld eingegeben gibt es als LogFile-Eintrag:
2013.03.25 13:02:41 4: Connection accepted from FHEMWEB:192.168.178.29:54253
2013.03.25 13:02:41 4: HTTP FHEMWEB:192.168.178.29:54253 GET /fhem?cmd=reload+99_MaxScan.pm
2013.03.25 13:02:41 5: Cmd: >reload 99_MaxScan.pm<
2013.03.25 13:02:41 5: Loading ./FHEM/99_MaxScan.pm
2013.03.25 13:02:41 2: MaxScan is starting
2013.03.25 13:02:41 4: HTTP FHEMWEB:192.168.178.29:54253 GET /fhem
2013.03.25 13:02:41 4: /fhem / RL: 746 / text/html; charset=UTF-8 / Content-Encoding: gzip
 /
2013.03.25 13:02:42 4: Connection accepted from FHEMWEB:192.168.178.29:54254
2013.03.25 13:02:42 4: HTTP FHEMWEB:192.168.178.29:54253 GET /fhem/css/style.css
2013.03.25 13:02:42 4: Connection accepted from FHEMWEB:192.168.178.29:54255
2013.03.25 13:02:42 4: HTTP FHEMWEB:192.168.178.29:54254 GET /fhem/js/svg.js
2013.03.25 13:02:42 4: HTTP FHEMWEB:192.168.178.29:54255 GET /fhem/js/fhemweb.js
2013.03.25 13:02:42 4: Connection accepted from FHEMWEB:192.168.178.29:54256
2013.03.25 13:02:42 4: HTTP FHEMWEB:192.168.178.29:54256 GET /fhem/icons/favicon
2013.03.25 13:02:42 4: HTTP FHEMWEB:192.168.178.29:54253 GET /fhem/icons/icoEverything
2013.03.25 13:02:42 4: HTTP FHEMWEB:192.168.178.29:54253 GET /fhem/images/default/fhemicon.png
2013.03.25 13:02:51 4: HTTP FHEMWEB:192.168.178.29:54253 GET /fhem?cmd=logwrapper%20Logfile%20text%20fhem-2013-03.log



Gruss (und guten Appetit)
Marcel
FHEM / Fritz!Box 7490 / CULv3 / Raspi / COC / MAX! / HomeMatic /

John

Hallo Marcel,

das sieht ja schon mal gut aus.
Wenn der Eintrag auch beim Neustart von FHEM zu sehen ist, wird das Modul definitiv geladen.

Jetzt wollen wir mal sehen ob auch der Timer kommt.

Bitte folgendes (wieder in fett)  einfuegen
-----------------------------
sub MaxScan($) {
 Log 2,"MaxScan is called";

  my $dummy = shift;
  ...
---------------------------

und dann noch am Ende

---------------------------
  ...
   InternalTimer($numCurTime+$numDiffTime, "MaxScan", "MaxScan", 0);
  Log 2,"MaxScan is finished";
}

---------------------------




Nun sollte folgende Ausgabe im Log erscheinen:

Zitat2013.03.25 13:35:16 2: MaxScan is starting
2013.03.25 13:35:36 2: MaxScan is called
2013.03.25 13:35:36 2: MaxScan is finished
2013.03.25 13:36:12 2: MaxScan is called
2013.03.25 13:36:12 2: MaxScan is finished


John

CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Marcel_R

Danke John!!

MaxScan wurde zwischen 16:58:41 und 17:06:50 92 mal "called". Da läuft was.

Ausser MaxScan is called und MaxScan is finished gibt es keinen anderen Textabschnitt "MaxScan" im LogFile.

Wieso ich wohl die Früchte dieser Durchläufe nicht sehe?

Gruss
Marcel

FHEM / Fritz!Box 7490 / CULv3 / Raspi / COC / MAX! / HomeMatic /