Temperatur-Scanner für MAX-Thermostate

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

Vorheriges Thema - Nächstes Thema

John

Hallo Harald,

ich möchte dich für weitere Tests bitten, die offizielle Version von 00_MAXLAN.pm und 10_MAX.pm einzusetzen ?

Ist das für dich möglich ?

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Harald

#241
Hallo John,

natürlich geht das. Ich muss nur dutycycle per userReadings von MAXLAN nach Cube transportieren, weil es diese dort nicht gibt. Das habe ich früher auch so gemacht. Du bekommst dann morgen ein neues Log.

Ich hoffe, dass Jürgens Änderungen bald in die offiziellen Versionen einfließen.

Viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

John

Hallo   cotecmania

Zitat von: cotecmania am 30 Oktober 2013, 18:23:06
Neue warnings auf der Console :

Argument "No answer" isn't numeric in addition (+) at C:/fhem-5.5/FHEM/99_UtilsMaxScan.pm line 289.
Argument "No answer" isn't numeric in addition (+) at C:/fhem-5.5/FHEM/99_UtilsMaxScan.pm line 289.
Argument "No answer" isn't numeric in addition (+) at C:/fhem-5.5/FHEM/99_UtilsMaxScan.pm line 289.
Argument "No answer" isn't numeric in addition (+) at C:/fhem-5.5/FHEM/99_UtilsMaxScan.pm line 289.

Ich hatte heute einen ähnlichen Fehler
Zitat
Argument "No answer" isn't numeric in numeric lt (<) at ./FHEM/14_CUL_MAX.pm line 436.
Argument "No answer" isn't numeric in addition (+) at ./FHEM/99_UtilsMaxScan.pm line 384.
Das hat in beiden Fällen mit credit10ms zu tun, das von CUL_MAX geliefert wird.
Normalerweise ist hier eine Zahl und nicht "No answer" zu erwarten.

Vielleicht kann Matthias etwas dazu sagen.


John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

John

Hallo Harald,
Zitat von: Harald am 31 Oktober 2013, 22:39:03
natürlich geht das. Ich muss nur dutycycle per userReadings von MAXLAN nach Cube transportieren. Das habe ich früher auch so gemacht. Du bekommst dann morgen ein neues Log.

versteh ich da etwas falsch ?

Das einzige was ich von MAXLAN brauche ist dutycycle und das ist doch in der offiziellen Version schon drin.
   $hash->{dutycycle} = hex($args[0]); (Zeile 660)

Das kann ich entweder direkt oder über InternalVal(..) holen.


John

CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Harald

#244
Hallo John,

Du hast natürlich recht. Für Dein Modul ist userReading nicht nötig. Ich benötige DutyCycle aber in Cube als Readings.

So, nun zu meinem Vorgehen:

Beim gestrigen Start Deines neuen Moduls stand das Abfrageinterval von MAXLAN auf 180 sec.
Gegen 23:00 Uhr habe ich diesen Wert auf 360 sec geändert, um zu sehen, wie die Umschaltungen man/auto sich dann verhalten. Wie Du siehst, gab es danach keine mehr, zumindest in den Diagrammen.

Um 5:13 Uhr habe ich mittels ECO-Taster alle Geräte auf auto geschaltet, damit nicht der Haussegen schief hängt, wenn die Räume kalt sind.

Bis zur Änderung (9:17 Uhr) der Intervalzeit von MAXLAN von 360 auf 120 sec gab es weithin keine Umschaltungen und DutyCycle blieb bis dahin auf 73 und zeigte danach erst 0. Das könnte ein Fehler von Original-MAXLAN sein. Das habe ich schon öfter beobachtet. Mit den Änderungen von Jürgen I. folgt die DutyCycle-Anzeige immer dem wahren Wert.

Ab 9:17 Uhr wird wieder umgeschaltet. Allerdings fällt mir auf, dass im Wohnzimmer (die Geräte haben alle 3 die gleiche GrupID) der lange Man-Mode von 2 sehr kurzen eingerahmt ist. Der lange ist bei allen Geräten ca. 15 min lang. Interessant ist auch, dass in der Man-Phase keine Credits verbraucht werden.

Es wäre schön, wenn in der endgültigen Version diese Phase möglichst kurz wäre, damit die Gefahr, dass in dieser Zeit eine Umschaltung durch das Wochenprogramm geschieht, möglichst gering ist. Dass das wohl nicht ganz vermeidbar sein wird, ist mir klar.

Besten Dank dass Du dieses Modul weiter entwickelst, damit Cube-Anwender auch in den Genuss der kontinuierlichen Temperaturanzeige kommen. Große Hochachtung !!!!!

Viele Grüße

Harald
PS: z.Z. laufen die Original-Module MAX und MAXLAN
Ich habe soeben (10:53) über die Web-Oberfläche die Temperatur des Wohnzimmers auf auto gesetzt. Danach sankt schlagartig die DutyCycle-Anzeige von 72 auf 38.
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

John

Hallo Harald,
der Wert von dutycacle ist nichts wert, wenn wir nicht wissen, wann er zuletzt berschrieben wurde.
Daher brauchen wir den Wert als Readings analog zu credit10ms bei CUL.

Es passiert genau das was zu beschrieben hast. Der Scanner wird unter bestimmten Bedingungen komplett inaktiv.
z.B:
letzer Wert von dutycycle liegt < 30, dann denkt der Scanner es sind nicht genug Ressourcen vorhanden.

(siehe mein Posting an Matthias)

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Harald

Das verstehe ich. Ich habe mir bisher so geholfen.attr Cube userReadings dutycycle {InternalVal ("MAXLAN","dutycycle",0)}

Dann hat der Zeitstempel von dutycycle zwar einen etwas abweichenden Wert (nämlich die Zeit, wann dutycycle mittels userReadings nach Cube übertragen wurde) aber immerhin einen.

Ich habe mich mal an Deinen Beitrag an Matthias angehängt.

Viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

Harald

#247
Hallo John,

mir fällt noch etwas ein. Jürgen's Änderungen bewirken nicht nur, dass dutycycle in MAXLAN dem tatsächliche Wert folgt sondern auch, dass dieser Wert in Cube als Readings verfügbar ist. Dort gibt es auch einen Zeitstempel dazu.

Viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

Harald

#248
Hallo John,

könntest Du versuchsweise den timeStamp des Dutycycles vom Cube holen? Ich würde das dann mit Jürgens Modulen testen. Dort ist ja, wie ich schon schrieb, dutycycle incl. timeStamp in den Readings vefügbar, folgt auch brav dem tatsächlichen Wert des Cubes und timeStamp wird auch immer aktualisiert. Würde mich mal interessieren, was da passiert und es wäre eine Ausweichmöglichkeit bis zur Realisierung Deines Vorschlags durch Matthias.

Viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

John

Hallo Harald
Zitatkönntest Du versuchsweise den timeStamp des Dutycycles vom Cube holen?

Damit meinst du das MAXLAN-Device ?

schick mir davon (also auch von dem Reading) bitte die Ausgabe von
list <maxlan-device>

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Harald

#250
Ja, das meine ich. Hier die gewünschte Ausgabe von "list Cube":
Internals:
   DEF        Cube 06a6ad
   IODev      MAXLAN
   LASTInputDev MAXLAN
   MAXLAN_C_RAWMSG C: ED 06 A6 AD 00 12 01 00 4B 45 51 30 30 30 30 37 38 35 01 0B 00 04 40 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 0B 00 04 40 00 00 00 00 00 00 00 41 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 68 74 74 70 3A 2F 2F 77 77 77 2E 6D 61 78 2D 70 6F 72 74 61 6C 2E 65 6C 76 2E 64 65 3A 38 30 2F 63 75 62 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 43 45 54 00 00
00 03 00 00 0E 10 43 45 53 54 00 03 00 02 00 00 1C 20
   MAXLAN_H_RAWMSG H:KEQ0000785,06a6ad,0112,00000000,2889582d,49,32,0d0b01,112f,03,0000
   MAXLAN_MSGCNT 84
   MAXLAN_M_RAWMSG M: 56 02 05 01 08 43 6F 6D 70 75 74 65 72 06 6C 61 02 04 46 6C 75 72 06 5B E9 03 06 4B C3 BC 63 68 65 06 6B 67 05
57 6F 68 6E 7A 69 6D 6D 65 72 06 6A 43 04 03 42 61 64 06 69 5F 08 01 06 6C 61 4A 45 51 30 36 39 30 35 39 36 08 43 6F 6D 70 75 74 65 72 01 01 06 5B
   MAXLAN_S_RAWMSG S:46,0,31
   MAXLAN_TIME 2013-11-01 17:47:06
   MSGCNT     84
   NAME       Cube
   NR         104
   STATE      not connected
   TYPE       MAX
   addr       06a6ad
   backend    MAXLAN
   clocknotset
   serial     KEQ0000785
   type       Cube
   Readings:
     2013-11-01 17:47:06   connection      0
     2013-11-01 17:47:02   dutycycle       73
     2013-11-01 17:47:02   groupid         0
     2013-11-01 17:47:06   state           not connected
   Internals:
     interfaces
Attributes:
   alias      Cube
   devStateIcon con.*:message_socket_on_off not.*:message_socket_off
   icon       it_net
   room       MAX

Störe Dich nicht an "not connected". Das wird automatisch verbunden. Funktioniert einwandfrei. Ich weiß nicht, warum Jürgen das so gemacht hat.
Ich hoffe, Du kannst etwas damit was anfangen. Viele Grüße

Harald
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus

stgeran

HILFE: Durch die 17 Seiten bin ich nun ganz verwirrt. Was muss ich tun, um die Plots mit dem Temperaturscanner zu erzeugen? Ich habe den gplotfile temp4valve4.
"99_MaxScan.pm ist in das Verzeichnis /opt/fhem/FHEM zu kopieren" habe ich gemacht und auch "define at_MaxScan at +*00:00:10 { MaxScan("HT_ZIMMER01 HT_ZIMMER01 HT_ZIMMER03",15 );;}" in die cfg eingetragen.
FHEM auf Raspberry
CSM 866MHz für EM1010 mit Strom und Gaszähler
CUL 866MHz für MAX! Radiator Thermostat 
CUL 433MHz für Innen und Aussen Temp
HMLAN für HM-LC-Sw1-PI-2

John

#252
Hallo stgeran,
ich kann dein Problem absolut verstehen.

Habe das Thema im Wiki ergänzt.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

John

#253
Hallo Harald,
die neue Version "V 1.04d.MaxLan.07"
berücksichtigt Reading dutyCycle, wenn vorhanden und nimmt den Zeitstempel.
Ausserdem wird das % von dutyCycle toleriert.

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

Harald

#254
Guten Morgen John,

ich habe soeben das neue Modul in Betrieb genommen. Allerdings habe ich eine kleine Änderung durchgeführt, da Du dutycycle und den zugehörigen timeStamp von MAXLAN und nicht vom Cube geholt hast. Hier die Änderungen:
    my $sdTempTime = time_str2num($strTempTime);
    my $sdDesiTime =  ($strDesiTime) ? time_str2num($strDesiTime) : gettimeofday();   
    my $strCubeName = "Cube"; ########
    my $strCulName;
    my $strCreditTime="";
    my $numCulCredits;
    my $numDutyCycle="?";
    my $strIOHash=$defs{$therm}{IODev};  # CULMAX0, hash des IO-Devices
    my $strIOName=$strIOHash->{NAME};
    my $strType=$strIOHash->{TYPE};       # CUL_MAX,MAXLAN type des IO-Devices   
    my $isCUL = 1;
   
    MaxScan_Log $hash,($MaxScanDEBUGCredit)?2:3,"TYPE:$strType IOName:$strIOName";
   
    if ($strType eq "MAXLAN")  # fuer MAXLAN
    {   
      $strCulName       =$strIOName;                   # name des io devices bestimmen
      #$strCreditTime    =TimeNow();                    #xxx
      my $strDutyCycle  = ReadingsVal($strCubeName,"dutycycle","?"); #######
      Log 2,"Zeile 340, CulName:$strCulName, CubeName:$strCubeName, DuCyCube:$strDutyCycle"; #######
#    $strDutyCycle     = InternalVal($strCubeName,"dutycycle",0) if ($strDutyCycle eq "?"); #######
#    Log 2,"Zeile 342, $strCubeName, $strDutyCycle";  #######
      $strCreditTime    = ReadingsTimestamp($strCubeName,"dutycycle",""); #######
      Log 2,"Zeile 344, CulName:$strCulName, CubeName:$strCubeName, CreditTime:$strCreditTime"; #######
      my ($a1,$a2,$a3)  =($strDutyCycle=~ /([\s]*)(\d+)(.*)/);
      if (defined($a2))
      {
         $numDutyCycle = $a2;
      }
      else {
        $numDutyCycle=100;
        MaxScan_Log $hash,2,"dutycyle not a number: <$strDutyCycle>; force to 100";
      }
     
      $numCulCredits    = (100 - $numDutyCycle )*10;
      $isCUL         = '';
    }
    else { # fuer CUL    ####### meine Änderungen

Außerdem habe ich meinen Wohnzimmerthermostaten unterschiedliche grupID's zugewiesen. Dein Modul schreibt, glaube ich, auf jedes Gerät getrennt. Bei gleichen grupId's wird auf jeden Thermostaten somit 3x geschrieben, da das Modul ja die grupId nicht abfragt. Ist eigentlich auch nicht nötig, da ja jedes Ventil autark arbeiten kann.

Ich werde das jetzt beobachten und Dir heute Mittag die Ergebnisse zukommen lassen.

Angenehmen Tag und viele Grüße

Harald
PS: Wie kann ich bei Deinem neuen Log-System jetzt die Log-Ausgabe beeinflussen?
Router:AVM7590 1&1 FW:FRITZ!OS 07.56 Anbindung:1&1 50/10 Mb/s, WLAN-Repeater 300E
ELV MAX!Cube, 7xThermostat, ECO, RasPi 4B mit bullseye auf Festplatte,
CUL V 1.67, JeeLink v3_10.1c, nanoCUL, 1xS300TH, 4xHMS100T, 4xELRO, 1xTFA, 2xMAX_FK
ELV MAX!1.4.5, FHEM 5.7 auf RasPi, Kostal PIKO plus