HM-WDS100-C6-O-2 Datenauswertung CCU

Kabellose und kabelgebundene Sender und Empfänger der klassischen Homematic-Serie

Moderator: Co-Administratoren

Antworten
flottit
Beiträge: 9
Registriert: 24.08.2021, 18:44
System: CCU

HM-WDS100-C6-O-2 Datenauswertung CCU

Beitrag von flottit » 26.08.2021, 14:32

Liebe Wetterexperten,

ich habe hier seit einer Weile einen HM-WDS100-C6-O-2 parallel an einer CCU3 und eine m HM-WDC7000 im "Live"-Modus. Der Sensor wurde vor einiger Zeit durch einen baugleichen ersetzt (Ersetzen-Funktion beim Anlernen). Mir ist das bisher nicht aufgefallen, aber seit dem scheinen die Regenmengen (gestern / heute) nicht mehr korrekt berechnet (=0, vgl. Screenshot):
wettersensor-status.png
Zwar habe ich in der Bedienungsanleitung (https://www.eq-3.de/downloads/download/ ... ge_web.pdf) keine direkten Infos dazu gefunden, aber wenn ich u.a. viewtopic.php?f=60&t=51238&p=616639&hil ... te#p616639, oder bzgl. der neuen IP-Version auch z.B. viewtopic.php?f=58&t=42383 richtig verstehe, werden beim erstmaligen Anlernen des Kombisensors ja offensichtlich zusätzliche Skripte + (versteckte?) Systemvariablen erstellt, um diese Werte aus der Gesamtregenmenge zu berechnen.

Beim Versuch, diese Variablen per dom.GetObject(ID_SYSTEM_VARIABLES).EnumNames() aufzulisten bekomme ich die Namen

${sysVarRainToday}
${sysVarRainYesterday}

Zusätzlich wurden wohl mal folgende beiden systeminternen Programme angelegt, die allerdings diese Variablen nicht referenzieren (oder gilt hier ein implizites Präfix "sysVar..."?), sondern Zählerstände über (ggf. nicht mehr funktionierende?) ObjectIDs berechnen:
skript-regenmenge-aktualisieren.png

Code: Alles auswählen

var rainToday = dom.GetObject(9431);
var rainYesterday = dom.GetObject(9432);
var rainCounter = dom.GetObject(9425);

          if ( (rainToday) && (rainYesterday) && (rainCounter) )
          {
            if (rainCounter.LastTimestamp())
            {
              var diff = rainCounter.Value() - rainCounter.LastValue();
              if ( diff < 0.0)
              {
                diff = diff + rainCounter.ValueMax();
              }
              rainToday.State(rainToday.State() + diff);
            }
            else
            {
              rainToday.State(0.0);
              rainYesterday.State(0.0);
            }
          }
        
skript-regenmenge-zuruecksetzen.png

Code: Alles auswählen

var rainToday = dom.GetObject(9431);
var rainYesterday = dom.GetObject(9432);

          if ( (rainToday) && (rainYesterday) )
          {
            rainYesterday.State(rainToday.Value());
            rainToday.State(0.0);
}
 

Ich habe jetzt hier im Forum schon etwas gesucht, konnte aber für diesen älteren Kombisensor keine Default-Skripte finden. Ein Ab- und Anlernen hat die Skripte interessanterweise auch nicht neu erstellt. Deshalb folgende Fragen an alle Wetterexperten:

1. Die Skripte oben erscheinen mir nicht korrekt. Zumindest ist die Regenmenge immer 0 - selbst, wenn man Wasser über den Sensor kippt. Sieht jemand auf Anhieb eine Korrekturmöglichkeit bzw. kann mir aus seinem Kombisensor mal die Default-Skripte zur Verfügung stellen?

2. In den beiden oberen Screenshots von viewtopic.php?t=43666 sind verschiedene andere Werte aufgelistet / berechnet, die bei meinem Sensor überhaupt nicht angezeigt werden (u.a. die Tages-Max-Werte sowie die tagesspezifischen Sonnenscheindauern gestern / heute). Bekommt man diese Werte auch bei einem älteren Device (nicht IP) ausgelesen / berechnet? Falls ja, gibt es hier im Forum ein entsprechendes Beispielskript? Ich habe u.a. viewtopic.php?f=60&t=65631 gefunden, aber keiner meiner Versuche über die dort referenzierten Variablen auf die Werte zuzugreifen hat mit dem alten Sensor funktioniert.

Würde mich freuen, wenn mir jemand kurz auf die Sprünge helfen könnte ...

Benutzeravatar
stan23
Beiträge: 2030
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 576 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: HM-WDS100-C6-O-2 Datenauswertung CCU

Beitrag von stan23 » 26.08.2021, 15:43

Willkommen im Forum!
flottit hat geschrieben:
26.08.2021, 14:32
Beim Versuch, diese Variablen per dom.GetObject(ID_SYSTEM_VARIABLES).EnumNames() aufzulisten bekomme ich die Namen

${sysVarRainToday}
${sysVarRainYesterday}
Die werden von der WebUI in "Regen heute" und "Regen gestern" übersetzt.
flottit hat geschrieben:
26.08.2021, 14:32
Zusätzlich wurden wohl mal folgende beiden systeminternen Programme angelegt, die allerdings diese Variablen nicht referenzieren (oder gilt hier ein implizites Präfix "sysVar..."?), sondern Zählerstände über (ggf. nicht mehr funktionierende?) ObjectIDs berechnen:

Code: Alles auswählen

var rainToday = dom.GetObject(9431);
var rainYesterday = dom.GetObject(9432);
var rainCounter = dom.GetObject(9425);
Diese Variablen sind (lokale) Skriptvariablen, und nicht die oben genannten Systemvariablen. Allerdings sollten die IDs 9431 und 9432 auf genau diese Systemvariablen zeigen.

Das Problem dürfte sein, dass nach dem Tausch der Gerätekanal nicht mehr die ID 9425 hat, und damit nie ein Delta dazu addiert werden kann.

Vielleicht meldet sich einer der Skript-Experten und zeigt dir, wie du an die neue ID kommst, oder du benutzt den SDV von Black um sie selber herauszufinden und anzupassen.
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

flottit
Beiträge: 9
Registriert: 24.08.2021, 18:44
System: CCU

Re: HM-WDS100-C6-O-2 Datenauswertung CCU

Beitrag von flottit » 27.08.2021, 16:40

Das Problem dürfte sein, dass nach dem Tausch der Gerätekanal nicht mehr die ID 9425 hat, und damit nie ein Delta dazu addiert werden kann.
Ja, so was in der Art dachte ich mir, Marco @stan23, danke!
[...] oder du benutzt den SDV von Black um sie selber herauszufinden und anzupassen.
Über den bin ich auch schon gestolpert. Nachdem sich bis jetzt - auch zu meiner anderen Frage - außer dir leider noch niemand gemeldet hat, habe ich Black mal für eine Lizenz angeschrieben. Das SysVar-Auslesen geht glaube ich nicht ohne ...

Falls noch jemand der "Skript-Experten" einen Tipp für mich hat, wäre ich natürlich weiterhin dankbar!

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: HM-WDS100-C6-O-2 Datenauswertung CCU

Beitrag von Black » 27.08.2021, 19:28

man kann schon alles auch mit Scripten auslesen. der SDV macht ja auch nix anderes. Wenn du jede Fragestellung in Scripten ausprogen willst, ist halt Back To The Roots proggen.
Man nimmt heutzutage ja auch für eine Problemlösung eine Hochsprache und versucht nicht, dieses in Assembler proggen. Kann man zwar machen, kann man aber auch lassen.

Dann ist es halt noch notwendig, die Daten aufzubereiten und darzustellen, so dass man aus diesen Daten dann auch Erkenntnisse gewinnen kann.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

flottit
Beiträge: 9
Registriert: 24.08.2021, 18:44
System: CCU

Re: HM-WDS100-C6-O-2 Datenauswertung CCU

Beitrag von flottit » 31.08.2021, 17:45

So, ich habe inzwischen mal im SDV die IDs durchgesehen, werde aber immer noch nicht ganz schlau draus, was die CCU da an Referenzen erstellt hat.

In den Skripten stand bisher (wie oben geschrieben):

Code: Alles auswählen

var rainToday = dom.GetObject(9431);
var rainYesterday = dom.GetObject(9432);
var rainCounter = dom.GetObject(9425);
Ausgelesene Program- und Variablen-IDs aus SDV:
domIDs.png
sysVarIDs.png
sysVarIDs.png (22.87 KiB) 493 mal betrachtet
Es fehlt ja scheinbar der rainCounter, oder geht der direkt über die untergeordneten Channel-DPs?
chnVars.png
Wie dem auch sei, mit folgenden abgeänderten Skriptbestandteil (Reset-Skript analog) bekomme ich leider immer noch keine Regenmengen gestern / heute:

Code: Alles auswählen

[...]
var rainToday = dom.GetObject(4962);
var rainYesterday = dom.GetObject(4963);
var rainCounter = dom.GetObject(4956);
[...]
Sieht jemand vielleicht den Fehler, oder hat noch einen Tipp für mich?

Und, nochmal zurück zu meiner zweiten Fragen oben: (wie) bekommt man zusätzlich zu den Regenmengen, bei diesem älteren Kombisensor Max- / Min-Werte oder z.B. auch Sonnenscheindauern gestern / heute mit in die Anzeige?

Benutzeravatar
stan23
Beiträge: 2030
Registriert: 13.12.2016, 21:14
System: Alternative CCU (auf Basis OCCU)
Wohnort: Altmühltal
Hat sich bedankt: 576 Mal
Danksagung erhalten: 335 Mal
Kontaktdaten:

Re: HM-WDS100-C6-O-2 Datenauswertung CCU

Beitrag von stan23 » 31.08.2021, 19:28

flottit hat geschrieben:
31.08.2021, 17:45
Wie dem auch sei, mit folgenden abgeänderten Skriptbestandteil (Reset-Skript analog) bekomme ich leider immer noch keine Regenmengen gestern / heute:
Hat es denn geregnet?
Mach doch ein paar

Code: Alles auswählen

WriteLine("printf-debugging rulez!!1elf");
in das Skript und führe es manuell aus, und beobachte nebenbei auf der Konsole das Log mit

Code: Alles auswählen

tail -f /var/log/messages
oder entsprechend mit dem SDV 8)

Ich vermute dass diff = 0 ist.
flottit hat geschrieben:
31.08.2021, 17:45
Und, nochmal zurück zu meiner zweiten Fragen oben: (wie) bekommt man zusätzlich zu den Regenmengen, bei diesem älteren Kombisensor Max- / Min-Werte oder z.B. auch Sonnenscheindauern gestern / heute mit in die Anzeige?
In dem du die Systemvariablen manuell anlegst, dem Wettersensor zuordnest und auch das Skript manuell anlegst?
Viele Grüße
Marco

RaspberryMatic als VM auf einem NUC mit Proxmox und USB-Funkmodul
~80 Geräte (HM, HmIP, HMW, HBW, AskSin)

Antworten

Zurück zu „HomeMatic Aktoren und Sensoren (klassisch)“