Netatmo Modul - 38_netatmo.pm (Support)

Begonnen von Markus M., 17 Mai 2016, 12:37:34

Vorheriges Thema - Nächstes Thema

idansch

#1185
Habe eine ganz kurze Frage. Wie kann man die Anwesenheitserkennung der Netatmo Aussen Kamera aktivieren bzw. deaktivieren? Eingebunden in FHEM ist sie. Habe auch eine Set .... disable /enable. Aber in der Netatmo App verändert sich nicht der Aktivierungsstatus. Danke.

- hat sich erledigt, nach einem Neustart waren alle Readings da und auch die Steuerung geht
Raspberry PI3 mit Stretch-Raspbian | CUL V3 868Mhz | RFXtrx 433Mhz | ...

idansch

Hatte leider nur einen kurzen Erfolg. Muss man bei der Aktivierung / Deaktivierung etwas beachten bzw. einen Code mit hinzufügen.


Zitat von: idansch am 09 September 2021, 17:57:15
Habe eine ganz kurze Frage. Wie kann man die Anwesenheitserkennung der Netatmo Aussen Kamera aktivieren bzw. deaktivieren? Eingebunden in FHEM ist sie. Habe auch eine Set .... disable /enable. Aber in der Netatmo App verändert sich nicht der Aktivierungsstatus. Danke.

- hat sich erledigt, nach einem Neustart waren alle Readings da und auch die Steuerung geht
Raspberry PI3 mit Stretch-Raspbian | CUL V3 868Mhz | RFXtrx 433Mhz | ...

fabtie

Mit den Befehlen "set presence_record_humans/vehicles/movements" kann du einstellen z.B. nur aufgenommen "record" oder aufgenommen und benachrichtigt "record_and_notify" werden soll.
(set netatmo_xyz presence_record_humans record_and_notify;;\
set netatmo_xyz presence_record_vehicles record_and_notify;;\
set netatmo_xyz presence_record_movements record)


Ist es das was du suchst?
FHEM auf RPi3|HM-CUL und piVCCU, 20x HM-IP | ZigBee/HUE über conbeeII-Stick, 17x ZigBee

stelzi76

Hallo, ich habe das Netatmo Modul seit geraumer Zeit mit meiner Wetterstation mit mehreren Indoormodulen, Regen- und Windmesser am Laufen. Ich habe mir jetzt eine Netatmo Türklingel installiert. Hat die jemand mit dem Modul einbinden können? Presence geht ja. Mit autocreate wird die Klingel bei mir nicht gefunden. Über die Klingel finde ich in Verbindung mit FHEM nichts, was mir weiterhilft.

KyleK

Hallo,

ich habe 3 Netatmo Innenraummodule, und heute folgendes Verhalten festgestellt:
Die einzelnen Module liefern jeweils im Intervall von ca. 10 Minuten neue Daten, aber:
Wenn neue Daten abgefragt werden, dann kommen immer gleich 2 Datensätze auf einmal.
An den timestamps im Log bzw. Eventmonitor sieht man, dass die Ereignisse zu unterschiedlichen Zeiten von der Netatmo-Hardware erfasst wurden, und zwar mit einem Intervall von ~ 5 Minuten.
Die im Eventmonitor gelisteten Events sind zudem von den Timestamps her nicht in monotoner Reihenfolge.

Ich habe das interval Attribut bereits auf 5 Minuten gesetzt, aber das hat nichts gebracht.

Mein Problem ist nun, dass ich auf Events von den Netatmo-Modulen in einem DOIF "höre", und dieses immer 2x direkt hintereinander auslöst.

Hat jemand eine Idee wie man das Problem lösen kann?


FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

McShire

Hallo,
ein DOIF wird zwar von einem EVENT getriggert, aber zur Entscheidung, ob und was etwas ausgeführt wird, wird nicht das Event ausgewertet, sondern der in den Bedingungen aufgeführte Zustand. Wenn sich der Zustand also während der 2 aufeinanderfolgenden Datensätzen der gleiche ist, sollte die daraus resultierende Anweisung nur einmal ausgeführt werden, da ein DOIF die gleiche Anweisung nicht mehrfach hintereinander ausführt, es sei denn, das Attribut always ist gesetzt.
Ich habe bei mir das attr interval gar nicht gesetzt und habe keine Probleme damit.
Ohne weitere Informationen, lists, logs, kann man dein Problem kaum analysieren.
Viele Grüße
Werner

KyleK

Zitat von: McShire am 11 November 2021, 01:24:13
Hallo,
ein DOIF wird zwar von einem EVENT getriggert, aber zur Entscheidung, ob und was etwas ausgeführt wird, wird nicht das Event ausgewertet, sondern der in den Bedingungen aufgeführte Zustand. Wenn sich der Zustand also während der 2 aufeinanderfolgenden Datensätzen der gleiche ist, sollte die daraus resultierende Anweisung nur einmal ausgeführt werden, da ein DOIF die gleiche Anweisung nicht mehrfach hintereinander ausführt, es sei denn, das Attribut always ist gesetzt.
Ich habe bei mir das attr interval gar nicht gesetzt und habe keine Probleme damit.
Ohne weitere Informationen, lists, logs, kann man dein Problem kaum analysieren.
Viele Grüße
Werner

Ich nutze die ereignis-gesteuerte Eventauswertung von DOIF, und schaue explizit auf vom Netatmo-Modul gelieferten co2-Werte.

List des DOIF:

Internals:
   DEF        DEF TPL_CO2 (
{
    if(["$1:^co2", 0] > 2000)
    {
       #fhem("msg audio Die Luft im {(AttrVal(\"$device\", \"alias\", \"$device\"))} ist SEHR schlecht. Bitte lüften!");
       $_count{$device} = 0 if(!defined $_count{$device});
       $_count{$device}++;
       Log 2,"$device >= 2000 ($EVENT) [$_count{$device}]";
    }
    elsif(["$1:^co2", 0] > 1500)
    {
       #fhem("msg audio Schlechte Luft im {(AttrVal(\"$device\", \"alias\", \"$device\"))}. Bitte lüften!")
       set_Reading("$1_count", get_Reading("$1_count", 0) + 1);
       $_count{$device} = 0 if(!defined $_count{$device});
       $_count{$device}++;
       Log 2, "$device >= 1500 ($EVENT) [$_count{$device}]";
    }
    else
    {
       set_Reading("$1_count", 0);
       $_count{$device} = 0;
       Log 2, "$device < 1500 ($EVENT) [$_count{$device}]";
    }
}
)

TPL_CO2(Netatmo_Sensor_Wohnzimmer)
TPL_CO2(Netatmo_Sensor_Greta)
TPL_CO2(Netatmo_Sensor_Schlafzimmer)
   DOIFDEV    ^global$|^Netatmo_Sensor_Greta$|^Netatmo_Sensor_Wohnzimmer$|^Netatmo_Sensor_Schlafzimmer$|Netatmo_Sensor_Schlafzimmer|Netatmo_Sensor_Wohnzimmer|Netatmo_Sensor_Greta
   FUUID      618c1216-f33f-9ecb-f5b0-c8cd40072f9fd3bb
   MODEL      Perl
   NAME       di.co2
   NR         433
   NTFY_ORDER 50-di.co2
   STATE      initialized
   TYPE       DOIF
   VERSION    24905 2021-09-01 18:35:54
   READINGS:
     2021-11-11 09:50:24   Device          Netatmo_Sensor_Schlafzimmer
     2021-11-11 09:50:07   Netatmo_Sensor_Greta_count 0
     2021-11-11 09:50:24   Netatmo_Sensor_Schlafzimmer_count 0
     2021-11-11 09:49:52   Netatmo_Sensor_Wohnzimmer_count 0
     2021-11-11 09:49:52   block_01        executed
     2021-11-11 09:50:07   block_02        executed
     2021-11-11 09:50:24   block_03        executed
     2021-11-10 21:40:39   mode            enabled
     2021-11-10 21:40:39   state           initialized
   Regex:
     accu:
     collect:
     cond:
       :
         0:
           "Netatmo_Sensor_Wohnzimmer:^co2" Netatmo_Sensor_Wohnzimmer:^co2
         1:
           "Netatmo_Sensor_Greta:^co2" Netatmo_Sensor_Greta:^co2
         2:
           "Netatmo_Sensor_Schlafzimmer:^co2" Netatmo_Sensor_Schlafzimmer:^co2
   condition:
     0         
    if(::EventDoIf('Netatmo_Sensor_Wohnzimmer',$hash,'^co2',0,'[^\:]*: (.*)','',' 0') > 2000)
    {
       #fhem("msg audio Die Luft im {(AttrVal(\"$device\", \"alias\", \"$device\"))} ist SEHR schlecht. Bitte lüften!");
       $hash->{var}{count}{$device} = 0 if(!defined $hash->{var}{count}{$device});
       $hash->{var}{count}{$device}++;
       Log 2,"$device >= 2000 ($EVENT) [$hash->{var}{count}{$device}]";
    }
    elsif(::EventDoIf('Netatmo_Sensor_Wohnzimmer',$hash,'^co2',0,'[^\:]*: (.*)','',' 0') > 1500)
    {
       #fhem("msg audio Schlechte Luft im {(AttrVal(\"$device\", \"alias\", \"$device\"))}. Bitte lüften!")
       set_Reading("Netatmo_Sensor_Wohnzimmer_count", get_Reading("Netatmo_Sensor_Wohnzimmer_count", 0) + 1);
       $hash->{var}{count}{$device} = 0 if(!defined $hash->{var}{count}{$device});
       $hash->{var}{count}{$device}++;
       Log 2, "$device >= 1500 ($EVENT) [$hash->{var}{count}{$device}]";
    }
    else
    {
       set_Reading("Netatmo_Sensor_Wohnzimmer_count", 0);
       $hash->{var}{count}{$device} = 0;
       Log 2, "$device < 1500 ($EVENT) [$hash->{var}{count}{$device}]";
    }

     1         
    if(::EventDoIf('Netatmo_Sensor_Greta',$hash,'^co2',0,'[^\:]*: (.*)','',' 0') > 2000)
    {
       #fhem("msg audio Die Luft im {(AttrVal(\"$device\", \"alias\", \"$device\"))} ist SEHR schlecht. Bitte lüften!");
       $hash->{var}{count}{$device} = 0 if(!defined $hash->{var}{count}{$device});
       $hash->{var}{count}{$device}++;
       Log 2,"$device >= 2000 ($EVENT) [$hash->{var}{count}{$device}]";
    }
    elsif(::EventDoIf('Netatmo_Sensor_Greta',$hash,'^co2',0,'[^\:]*: (.*)','',' 0') > 1500)
    {
       #fhem("msg audio Schlechte Luft im {(AttrVal(\"$device\", \"alias\", \"$device\"))}. Bitte lüften!")
       set_Reading("Netatmo_Sensor_Greta_count", get_Reading("Netatmo_Sensor_Greta_count", 0) + 1);
       $hash->{var}{count}{$device} = 0 if(!defined $hash->{var}{count}{$device});
       $hash->{var}{count}{$device}++;
       Log 2, "$device >= 1500 ($EVENT) [$hash->{var}{count}{$device}]";
    }
    else
    {
       set_Reading("Netatmo_Sensor_Greta_count", 0);
       $hash->{var}{count}{$device} = 0;
       Log 2, "$device < 1500 ($EVENT) [$hash->{var}{count}{$device}]";
    }

     2         
    if(::EventDoIf('Netatmo_Sensor_Schlafzimmer',$hash,'^co2',0,'[^\:]*: (.*)','',' 0') > 2000)
    {
       #fhem("msg audio Die Luft im {(AttrVal(\"$device\", \"alias\", \"$device\"))} ist SEHR schlecht. Bitte lüften!");
       $hash->{var}{count}{$device} = 0 if(!defined $hash->{var}{count}{$device});
       $hash->{var}{count}{$device}++;
       Log 2,"$device >= 2000 ($EVENT) [$hash->{var}{count}{$device}]";
    }
    elsif(::EventDoIf('Netatmo_Sensor_Schlafzimmer',$hash,'^co2',0,'[^\:]*: (.*)','',' 0') > 1500)
    {
       #fhem("msg audio Schlechte Luft im {(AttrVal(\"$device\", \"alias\", \"$device\"))}. Bitte lüften!")
       set_Reading("Netatmo_Sensor_Schlafzimmer_count", get_Reading("Netatmo_Sensor_Schlafzimmer_count", 0) + 1);
       $hash->{var}{count}{$device} = 0 if(!defined $hash->{var}{count}{$device});
       $hash->{var}{count}{$device}++;
       Log 2, "$device >= 1500 ($EVENT) [$hash->{var}{count}{$device}]";
    }
    else
    {
       set_Reading("Netatmo_Sensor_Schlafzimmer_count", 0);
       $hash->{var}{count}{$device} = 0;
       Log 2, "$device < 1500 ($EVENT) [$hash->{var}{count}{$device}]";
    }

   defs:
     tpl:
       TPL_CO2   
{
    if(["$1:^co2", 0] > 2000)
    {
       #fhem("msg audio Die Luft im {(AttrVal(\"$device\", \"alias\", \"$device\"))} ist SEHR schlecht. Bitte lüften!");
       $hash->{var}{count}{$device} = 0 if(!defined $hash->{var}{count}{$device});
       $hash->{var}{count}{$device}++;
       Log 2,"$device >= 2000 ($EVENT) [$hash->{var}{count}{$device}]";
    }
    elsif(["$1:^co2", 0] > 1500)
    {
       #fhem("msg audio Schlechte Luft im {(AttrVal(\"$device\", \"alias\", \"$device\"))}. Bitte lüften!")
       set_Reading("$1_count", get_Reading("$1_count", 0) + 1);
       $hash->{var}{count}{$device} = 0 if(!defined $hash->{var}{count}{$device});
       $hash->{var}{count}{$device}++;
       Log 2, "$device >= 1500 ($EVENT) [$hash->{var}{count}{$device}]";
    }
    else
    {
       set_Reading("$1_count", 0);
       $hash->{var}{count}{$device} = 0;
       Log 2, "$device < 1500 ($EVENT) [$hash->{var}{count}{$device}]";
    }
}

   helper:
     DEVFILTER  ^global$|^Netatmo_Sensor_Greta$|^Netatmo_Sensor_Wohnzimmer$|^Netatmo_Sensor_Schlafzimmer$|Netatmo_Sensor_Schlafzimmer|Netatmo_Sensor_Wohnzimmer|Netatmo_Sensor_Greta
     NOTIFYDEV  global|Netatmo_Sensor_Greta|Netatmo_Sensor_Wohnzimmer|Netatmo_Sensor_Schlafzimmer|.*Netatmo_Sensor_Schlafzimmer.*|.*Netatmo_Sensor_Wohnzimmer.*|.*Netatmo_Sensor_Greta.*
     event      co2: 1182
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev Netatmo_Sensor_Schlafzimmer
     triggerEvents:
       co2: 1182
     triggerEventsState:
       co2: 1182
   internals:
   perlblock:
     0          block_01
     1          block_02
     2          block_03
   readings:
   trigger:
   uiState:
   uiTable:
   var:
     count:
       Netatmo_Sensor_Greta 0
       Netatmo_Sensor_Schlafzimmer 0
       Netatmo_Sensor_Wohnzimmer 0
Attributes:


Auszug aus dem Log eines Netatmo devices:

2021-11-11_08:53:22 Netatmo_Sensor_Schlafzimmer temperature: 17.9
2021-11-11_09:00:24 Netatmo_Sensor_Schlafzimmer dewpoint: 5.16
2021-11-11_08:53:22 Netatmo_Sensor_Schlafzimmer co2: 711
2021-11-11_08:53:22 Netatmo_Sensor_Schlafzimmer humidity: 43
2021-11-11_08:58:30 Netatmo_Sensor_Schlafzimmer temperature: 17.9
2021-11-11_09:00:24 Netatmo_Sensor_Schlafzimmer dewpoint: 5.16
2021-11-11_08:58:30 Netatmo_Sensor_Schlafzimmer co2: 692
2021-11-11_08:58:30 Netatmo_Sensor_Schlafzimmer humidity: 43
2021-11-11_09:03:37 Netatmo_Sensor_Schlafzimmer temperature: 17.9
2021-11-11_09:10:24 Netatmo_Sensor_Schlafzimmer dewpoint: 5.16
2021-11-11_09:03:37 Netatmo_Sensor_Schlafzimmer co2: 678
2021-11-11_09:03:37 Netatmo_Sensor_Schlafzimmer humidity: 43
2021-11-11_09:08:45 Netatmo_Sensor_Schlafzimmer temperature: 17.9
2021-11-11_09:10:24 Netatmo_Sensor_Schlafzimmer dewpoint: 5.16
2021-11-11_09:08:45 Netatmo_Sensor_Schlafzimmer co2: 700
2021-11-11_09:08:45 Netatmo_Sensor_Schlafzimmer humidity: 43
2021-11-11_09:13:01 Netatmo_Sensor_Schlafzimmer temperature: 18.0
2021-11-11_09:20:24 Netatmo_Sensor_Schlafzimmer dewpoint: 5.25
2021-11-11_09:13:01 Netatmo_Sensor_Schlafzimmer co2: 871
2021-11-11_09:13:01 Netatmo_Sensor_Schlafzimmer humidity: 43
2021-11-11_09:18:09 Netatmo_Sensor_Schlafzimmer temperature: 18.2
2021-11-11_09:20:24 Netatmo_Sensor_Schlafzimmer dewpoint: 5.43
2021-11-11_09:18:09 Netatmo_Sensor_Schlafzimmer co2: 976
2021-11-11_09:18:09 Netatmo_Sensor_Schlafzimmer humidity: 44
2021-11-11_09:23:16 Netatmo_Sensor_Schlafzimmer temperature: 18.4
2021-11-11_09:30:24 Netatmo_Sensor_Schlafzimmer dewpoint: 5.94
2021-11-11_09:23:16 Netatmo_Sensor_Schlafzimmer co2: 1172
2021-11-11_09:23:16 Netatmo_Sensor_Schlafzimmer humidity: 44
2021-11-11_09:28:24 Netatmo_Sensor_Schlafzimmer temperature: 18.4
2021-11-11_09:30:24 Netatmo_Sensor_Schlafzimmer dewpoint: 5.94
2021-11-11_09:28:24 Netatmo_Sensor_Schlafzimmer co2: 1280
2021-11-11_09:28:24 Netatmo_Sensor_Schlafzimmer humidity: 45
2021-11-11_09:35:23 Netatmo_Sensor_Schlafzimmer batteryPercent: 82
2021-11-11_09:33:32 Netatmo_Sensor_Schlafzimmer temperature: 18.4
2021-11-11_09:40:24 Netatmo_Sensor_Schlafzimmer dewpoint: 6.26
2021-11-11_09:33:32 Netatmo_Sensor_Schlafzimmer co2: 1296
2021-11-11_09:33:32 Netatmo_Sensor_Schlafzimmer humidity: 45
2021-11-11_09:38:39 Netatmo_Sensor_Schlafzimmer temperature: 18.4
2021-11-11_09:40:24 Netatmo_Sensor_Schlafzimmer dewpoint: 6.26
2021-11-11_09:38:39 Netatmo_Sensor_Schlafzimmer co2: 1294
2021-11-11_09:38:39 Netatmo_Sensor_Schlafzimmer humidity: 45
2021-11-11_09:43:47 Netatmo_Sensor_Schlafzimmer temperature: 18.3
2021-11-11_09:50:24 Netatmo_Sensor_Schlafzimmer dewpoint: 6.17
2021-11-11_09:43:47 Netatmo_Sensor_Schlafzimmer co2: 1215
2021-11-11_09:43:47 Netatmo_Sensor_Schlafzimmer humidity: 45
2021-11-11_09:48:54 Netatmo_Sensor_Schlafzimmer temperature: 18.3
2021-11-11_09:50:24 Netatmo_Sensor_Schlafzimmer dewpoint: 6.17
2021-11-11_09:48:54 Netatmo_Sensor_Schlafzimmer co2: 1182
2021-11-11_09:48:54 Netatmo_Sensor_Schlafzimmer humidity: 45
2021-11-11_09:54:02 Netatmo_Sensor_Schlafzimmer temperature: 18.3
2021-11-11_10:00:24 Netatmo_Sensor_Schlafzimmer dewpoint: 6.17
2021-11-11_09:54:02 Netatmo_Sensor_Schlafzimmer co2: 1145
2021-11-11_09:54:02 Netatmo_Sensor_Schlafzimmer humidity: 45
2021-11-11_09:59:10 Netatmo_Sensor_Schlafzimmer temperature: 18.3
2021-11-11_10:00:24 Netatmo_Sensor_Schlafzimmer dewpoint: 6.17
2021-11-11_09:59:10 Netatmo_Sensor_Schlafzimmer co2: 1111
2021-11-11_09:59:10 Netatmo_Sensor_Schlafzimmer humidity: 45

Hier sieht man schon, dass die Werte zeitlich nicht (immer) monoton kommen.


Ich hab das verbose-Level des Schlafzimmer-Devices hochgedreht, hier ist ein Auszug aus dem globalen FHEM log.
Enthalten sind auch die Logausgaben aus obigem DOIF:

2021.11.11 09:00:24 3: Netatmo_Sensor_Schlafzimmer: poll (MODULE)
2021.11.11 09:00:24 4: Netatmo_Sensor_Schlafzimmer: pollDevice types [Temperature,CO2,Humidity] for modules [xx:xx:xx:xx:xx:xx]
2021.11.11 09:00:24 3: Netatmo_Sensor_Schlafzimmer: requestDeviceReadings (Temperature,CO2,Humidity)
2021.11.11 09:00:24 4: Netatmo_Sensor_Schlafzimmer: dispatch (getmeasure)
2021.11.11 09:00:24 4: Netatmo_Sensor_Schlafzimmer: dispatch return: getmeasure
2021.11.11 09:00:24 4: Netatmo_Sensor_Schlafzimmer: parsereadings Temperature,CO2,Humidity
2021.11.11 09:00:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 711) [0]
2021.11.11 09:00:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 692) [0]
2021.11.11 09:00:24 4: Netatmo_Sensor_Schlafzimmer: updatereadings
2021.11.11 09:00:24 3: Netatmo_Sensor_Schlafzimmer: next fixed interval update for device (Temperature,CO2,Humidity) at 2021-11-11 09:05:24
2021.11.11 09:05:24 3: Netatmo_Sensor_Schlafzimmer: poll (MODULE)
2021.11.11 09:05:24 4: Netatmo_Sensor_Schlafzimmer: pollDevice types [Temperature,CO2,Humidity] for modules [xx:xx:xx:xx:xx:xx]
2021.11.11 09:05:24 3: Netatmo_Sensor_Schlafzimmer: requestDeviceReadings (Temperature,CO2,Humidity)
2021.11.11 09:05:24 4: Netatmo_Sensor_Schlafzimmer: dispatch (getmeasure)
2021.11.11 09:05:24 4: Netatmo_Sensor_Schlafzimmer: dispatch return: getmeasure
2021.11.11 09:05:24 4: Netatmo_Sensor_Schlafzimmer: parsereadings Temperature,CO2,Humidity
2021.11.11 09:05:24 3: Netatmo_Sensor_Schlafzimmer: next fixed interval update for device (Temperature,CO2,Humidity) at 2021-11-11 09:10:24
2021.11.11 09:10:24 3: Netatmo_Sensor_Schlafzimmer: poll (MODULE)
2021.11.11 09:10:24 4: Netatmo_Sensor_Schlafzimmer: pollDevice types [Temperature,CO2,Humidity] for modules [xx:xx:xx:xx:xx:xx]
2021.11.11 09:10:24 3: Netatmo_Sensor_Schlafzimmer: requestDeviceReadings (Temperature,CO2,Humidity)
2021.11.11 09:10:24 4: Netatmo_Sensor_Schlafzimmer: dispatch (getmeasure)
2021.11.11 09:10:24 4: Netatmo_Sensor_Schlafzimmer: dispatch return: getmeasure
2021.11.11 09:10:24 4: Netatmo_Sensor_Schlafzimmer: parsereadings Temperature,CO2,Humidity
2021.11.11 09:10:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 678) [0]
2021.11.11 09:10:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 700) [0]
2021.11.11 09:10:24 4: Netatmo_Sensor_Schlafzimmer: updatereadings
2021.11.11 09:10:24 3: Netatmo_Sensor_Schlafzimmer: next fixed interval update for device (Temperature,CO2,Humidity) at 2021-11-11 09:15:24
2021.11.11 09:15:24 3: Netatmo_Sensor_Schlafzimmer: poll (MODULE)
2021.11.11 09:15:24 4: Netatmo_Sensor_Schlafzimmer: pollDevice types [Temperature,CO2,Humidity] for modules [xx:xx:xx:xx:xx:xx]
2021.11.11 09:15:24 3: Netatmo_Sensor_Schlafzimmer: requestDeviceReadings (Temperature,CO2,Humidity)
2021.11.11 09:15:24 4: Netatmo_Sensor_Schlafzimmer: dispatch (getmeasure)
2021.11.11 09:15:24 4: Netatmo_Sensor_Schlafzimmer: dispatch return: getmeasure
2021.11.11 09:15:24 4: Netatmo_Sensor_Schlafzimmer: parsereadings Temperature,CO2,Humidity
2021.11.11 09:15:24 3: Netatmo_Sensor_Schlafzimmer: next fixed interval update for device (Temperature,CO2,Humidity) at 2021-11-11 09:20:24
2021.11.11 09:20:24 3: Netatmo_Sensor_Schlafzimmer: poll (MODULE)
2021.11.11 09:20:24 4: Netatmo_Sensor_Schlafzimmer: pollDevice types [Temperature,CO2,Humidity] for modules [xx:xx:xx:xx:xx:xx]
2021.11.11 09:20:24 3: Netatmo_Sensor_Schlafzimmer: requestDeviceReadings (Temperature,CO2,Humidity)
2021.11.11 09:20:24 4: Netatmo_Sensor_Schlafzimmer: dispatch (getmeasure)
2021.11.11 09:20:24 4: Netatmo_Sensor_Schlafzimmer: dispatch return: getmeasure
2021.11.11 09:20:24 4: Netatmo_Sensor_Schlafzimmer: parsereadings Temperature,CO2,Humidity
2021.11.11 09:20:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 871) [0]
2021.11.11 09:20:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 976) [0]
2021.11.11 09:20:24 4: Netatmo_Sensor_Schlafzimmer: updatereadings
2021.11.11 09:20:24 3: Netatmo_Sensor_Schlafzimmer: next fixed interval update for device (Temperature,CO2,Humidity) at 2021-11-11 09:25:24
2021.11.11 09:25:24 3: Netatmo_Sensor_Schlafzimmer: poll (MODULE)
2021.11.11 09:25:24 4: Netatmo_Sensor_Schlafzimmer: pollDevice types [Temperature,CO2,Humidity] for modules [xx:xx:xx:xx:xx:xx]
2021.11.11 09:25:24 3: Netatmo_Sensor_Schlafzimmer: requestDeviceReadings (Temperature,CO2,Humidity)
2021.11.11 09:25:24 4: Netatmo_Sensor_Schlafzimmer: dispatch (getmeasure)
2021.11.11 09:25:24 4: Netatmo_Sensor_Schlafzimmer: dispatch return: getmeasure
2021.11.11 09:25:24 4: Netatmo_Sensor_Schlafzimmer: parsereadings Temperature,CO2,Humidity
2021.11.11 09:25:24 3: Netatmo_Sensor_Schlafzimmer: next fixed interval update for device (Temperature,CO2,Humidity) at 2021-11-11 09:30:24
2021.11.11 09:30:24 3: Netatmo_Sensor_Schlafzimmer: poll (MODULE)
2021.11.11 09:30:24 4: Netatmo_Sensor_Schlafzimmer: pollDevice types [Temperature,CO2,Humidity] for modules [xx:xx:xx:xx:xx:xx]
2021.11.11 09:30:24 3: Netatmo_Sensor_Schlafzimmer: requestDeviceReadings (Temperature,CO2,Humidity)
2021.11.11 09:30:24 4: Netatmo_Sensor_Schlafzimmer: dispatch (getmeasure)
2021.11.11 09:30:24 4: Netatmo_Sensor_Schlafzimmer: dispatch return: getmeasure
2021.11.11 09:30:24 4: Netatmo_Sensor_Schlafzimmer: parsereadings Temperature,CO2,Humidity
2021.11.11 09:30:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 1172) [0]
2021.11.11 09:30:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 1280) [0]
2021.11.11 09:30:24 4: Netatmo_Sensor_Schlafzimmer: updatereadings
2021.11.11 09:30:24 3: Netatmo_Sensor_Schlafzimmer: next fixed interval update for device (Temperature,CO2,Humidity) at 2021-11-11 09:35:24
2021.11.11 09:35:24 3: Netatmo_Sensor_Schlafzimmer: poll (MODULE)
2021.11.11 09:35:24 4: Netatmo_Sensor_Schlafzimmer: pollDevice types [Temperature,CO2,Humidity] for modules [xx:xx:xx:xx:xx:xx]
2021.11.11 09:35:24 3: Netatmo_Sensor_Schlafzimmer: requestDeviceReadings (Temperature,CO2,Humidity)
2021.11.11 09:35:24 4: Netatmo_Sensor_Schlafzimmer: dispatch (getmeasure)
2021.11.11 09:35:24 4: Netatmo_Sensor_Schlafzimmer: dispatch return: getmeasure
2021.11.11 09:35:24 4: Netatmo_Sensor_Schlafzimmer: parsereadings Temperature,CO2,Humidity
2021.11.11 09:35:24 3: Netatmo_Sensor_Schlafzimmer: next fixed interval update for device (Temperature,CO2,Humidity) at 2021-11-11 09:40:24
2021.11.11 09:40:24 3: Netatmo_Sensor_Schlafzimmer: poll (MODULE)
2021.11.11 09:40:24 4: Netatmo_Sensor_Schlafzimmer: pollDevice types [Temperature,CO2,Humidity] for modules [xx:xx:xx:xx:xx:xx]
2021.11.11 09:40:24 3: Netatmo_Sensor_Schlafzimmer: requestDeviceReadings (Temperature,CO2,Humidity)
2021.11.11 09:40:24 4: Netatmo_Sensor_Schlafzimmer: dispatch (getmeasure)
2021.11.11 09:40:24 4: Netatmo_Sensor_Schlafzimmer: dispatch return: getmeasure
2021.11.11 09:40:24 4: Netatmo_Sensor_Schlafzimmer: parsereadings Temperature,CO2,Humidity
2021.11.11 09:40:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 1296) [0]
2021.11.11 09:40:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 1294) [0]
2021.11.11 09:40:24 4: Netatmo_Sensor_Schlafzimmer: updatereadings
2021.11.11 09:40:24 3: Netatmo_Sensor_Schlafzimmer: next fixed interval update for device (Temperature,CO2,Humidity) at 2021-11-11 09:45:24
2021.11.11 09:45:24 3: Netatmo_Sensor_Schlafzimmer: poll (MODULE)
2021.11.11 09:45:24 4: Netatmo_Sensor_Schlafzimmer: pollDevice types [Temperature,CO2,Humidity] for modules [xx:xx:xx:xx:xx:xx]
2021.11.11 09:45:24 3: Netatmo_Sensor_Schlafzimmer: requestDeviceReadings (Temperature,CO2,Humidity)
2021.11.11 09:45:24 4: Netatmo_Sensor_Schlafzimmer: dispatch (getmeasure)
2021.11.11 09:45:24 4: Netatmo_Sensor_Schlafzimmer: dispatch return: getmeasure
2021.11.11 09:45:24 4: Netatmo_Sensor_Schlafzimmer: parsereadings Temperature,CO2,Humidity
2021.11.11 09:45:24 3: Netatmo_Sensor_Schlafzimmer: next fixed interval update for device (Temperature,CO2,Humidity) at 2021-11-11 09:50:24
2021.11.11 09:50:24 3: Netatmo_Sensor_Schlafzimmer: poll (MODULE)
2021.11.11 09:50:24 4: Netatmo_Sensor_Schlafzimmer: pollDevice types [Temperature,CO2,Humidity] for modules [xx:xx:xx:xx:xx:xx]
2021.11.11 09:50:24 3: Netatmo_Sensor_Schlafzimmer: requestDeviceReadings (Temperature,CO2,Humidity)
2021.11.11 09:50:24 4: Netatmo_Sensor_Schlafzimmer: dispatch (getmeasure)
2021.11.11 09:50:24 4: Netatmo_Sensor_Schlafzimmer: dispatch return: getmeasure
2021.11.11 09:50:24 4: Netatmo_Sensor_Schlafzimmer: parsereadings Temperature,CO2,Humidity
2021.11.11 09:50:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 1215) [0]
2021.11.11 09:50:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 1182) [0]
2021.11.11 09:50:24 4: Netatmo_Sensor_Schlafzimmer: updatereadings
2021.11.11 09:50:24 3: Netatmo_Sensor_Schlafzimmer: next fixed interval update for device (Temperature,CO2,Humidity) at 2021-11-11 09:55:24
2021.11.11 10:00:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 1145) [0]
2021.11.11 10:00:24 2: Netatmo_Sensor_Schlafzimmer < 1500 (co2: 1111) [0]


Wie man sieht, wird das DOIF immer 2x zur effektiv selben Zeit ausgelöst.
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

McShire

#1192
Ich sehe das folgendermaßen:
Das DOIF wird 09:00:24 (dewpoint?) getriggert, läuft in elseif und gibt Text mit Status co2 (711) aus.
Es kommt der nächste Trigger 09:00:24 (dewpoint?), Ausgabe co2 692
Nächstes Intervall 5 min später um 09:05, kein dewpoint?, kein Trigger, keine Ausgabe
Nächstes Intervall 09:10, 2 x Trigger dewpoint?, 2 x Augabe co2
usw
Schalte doch mal den Event-Moitor ein mit Filter auf Netatmo Sensor Schlafzimmer und schau mal, welche Events wann auftreten.

KyleK

#1193
Warum sollte dewpoint das DOIF triggern, wenn dort überhaupt nicht nach dewpoint gefiltert wird?

Das DOIF ist nicht das Problem, sondern die Tatsache, dass das Netatmo-Modul 2 Datensätze pro Intervall vom Webservice abfragt und ins FHEM kippt.
Durch das DOIF ist das Problem erst richtig sichtbar geworden.

Das mit dem Eventmonitor hab ich gemacht. Auch dort sieht man, dass ca. alle 10 Minuten das Netatmo-Modul aktiv wird und Events erzeugt.
Und zwar Events mit 2 kompletten Datensätzen.

Ein Auszug aus dem Eventmonitor, inklusive Ausgaben des FHEM Logs:

2021.11.11 21:33:13 2 : Netatmo_Sensor_Schlafzimmer < 1500 (co2: 1139) [0]
2021-11-11 21:25:19 netatmo Netatmo_Sensor_Schlafzimmer temperature: 18.2
2021-11-11 21:33:13 netatmo Netatmo_Sensor_Schlafzimmer dewpoint: 6.08
2021-11-11 21:25:19 netatmo Netatmo_Sensor_Schlafzimmer co2: 1139
2021-11-11 21:25:19 netatmo Netatmo_Sensor_Schlafzimmer humidity: 45
2021-11-11 21:29:35 netatmo Netatmo_Sensor_Schlafzimmer temperature: 18.2
2021-11-11 21:33:13 netatmo Netatmo_Sensor_Schlafzimmer dewpoint: 6.08
2021-11-11 21:29:35 netatmo Netatmo_Sensor_Schlafzimmer humidity: 45
(...)
2021.11.11 21:43:13 2 : Netatmo_Sensor_Schlafzimmer < 1500 (co2: 1215) [0]
2021.11.11 21:43:13 2 : Netatmo_Sensor_Schlafzimmer < 1500 (co2: 1244) [0]
2021-11-11 21:34:42 netatmo Netatmo_Sensor_Schlafzimmer temperature: 18.3
2021-11-11 21:43:13 netatmo Netatmo_Sensor_Schlafzimmer dewpoint: 6.17
2021-11-11 21:34:42 netatmo Netatmo_Sensor_Schlafzimmer co2: 1215
2021-11-11 21:34:42 netatmo Netatmo_Sensor_Schlafzimmer humidity: 45
2021-11-11 21:39:50 netatmo Netatmo_Sensor_Schlafzimmer temperature: 18.3
2021-11-11 21:43:13 netatmo Netatmo_Sensor_Schlafzimmer dewpoint: 6.17
2021-11-11 21:39:50 netatmo Netatmo_Sensor_Schlafzimmer co2: 1244
2021-11-11 21:39:50 netatmo Netatmo_Sensor_Schlafzimmer humidity: 45


Die Meldungen nach (...) wurden im Eventmonitor etwa 21:45 21:43:13 ausgespuckt.
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

McShire

#1194
Nein, der Taupunkt triggert natürlich nicht das DOIF.
Ich habe das hier mit Fragezeichen eingefügt, weil es auffällig ist das der Taupunkt nur einmal alle 10 min genau zu dem Zeitpunkt des Sendens der Daten den Zeitstempel hat.
Wenn man den Eventmonitor ansieht, stellt man fest, das netatmo zwar im 5 min Takt die Daten Temperatur, Luftfeucht, Druck, co2, sammelt, aber trotz Aufforderung im 5 min Takt (Eventmonitor, Log  Netatmo-ioDevice) nur alle 10 min die Daten sendet, und zwar wahrscheinlich wegen der doppelten Abfrage aus den beiden vorhergehenden Intervallen. Daher tauchen auch bei dem Empfang immer beide Events mit unterschiedlichen Zeitstempel und dem zum Zeitstempel aktuellem Wert auf.
Das DOIF im Eventmode verarbeitet dann auch beide, im Zustandsmode nur das erste Auftreten.
Wenn man also im Eventmode nur eine Aktion haben, will muss man im Perl, dafür sorgen, dass nur der 2. Wert,welcher ja der aktuellere ist, zu einer Aktion führt, zB, dass im userreading ein Flag gesetzt und ausgewertet wird.
Einen Weg, netatmo dazu zu bringen, dass alle 5 min Daten gesendet werden, kenne ich leider nicht.
Viele Grüße
Werner

KyleK

Ich bin mir nicht sicher wie ich das auf DOIF-Seite bewerkstelligen soll:
Es ist ja keineswegs gegeben dass immer 2 Datensätze pro Poll-Intervall enthalten sind.
Das hängt ja davon ab, wann die einzelnen Innenraummodule ihre Messung durchführen und an die Netatmo-Server übermitteln.

Wäre es nicht einfacher, wenn das Netatmo-Modul bei mehreren Datensätzen pro Poll-Intervall den älteren Datensatz verwirft?
Die Datenbasis ist dann zwar etwas ungenauer in FHEM (weil Werte ignoriert werden), aber wenn das Poll-Intervall fest auf 10 Minuten eingestellt ist, dann sollte das nicht weiter stören.
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

McShire

Zitat von: KyleK am 14 November 2021, 11:31:36


Wäre es nicht einfacher, wenn das Netatmo-Modul bei mehreren Datensätzen pro Poll-Intervall den älteren Datensatz verwirft?
Die Datenbasis ist dann zwar etwas ungenauer in FHEM (weil Werte ignoriert werden), aber wenn das Poll-Intervall fest auf 10 Minuten eingestellt ist, dann sollte das nicht weiter stören.

Das ist dann eher eine Anfrage beim Ersteller des Programm-Moduls Markus Moises.
Wenn netatmo alle 5 min antworten würde und dabei dann nur immer der jeweils eine vorhandene Datensatz gesendet würde (was ja die korrekteste Aufzeichnung ergibt), würde
Dein DOIF ebenso oft schalten wie jetzt, nur genauer in der Zeit.

Bei mir ist es zumindest so, dass netatmo alle 10 min 2 Datensätze mit den aktuellen Werten sendet und 5 min versetzt alle 10 min die Statistik-Werte sendet.
Dadurch sind immer 2 Sätze aktuelle Werte in jeder Sendung zum Zeitunkt des Taupunktes (bei mir zum Zeitpunkt des Readings active) enthalten.
Wenn du jetzt nur den 2. Satz auswerten willst, ist eine mögliche Lösung:

Trigger auf den Taupunkt setzen oder besser, falls vorhanden, auf active,
Zur Auswertung für if (...     ReadingsVal(<device>, 'co2', 0) ... nutzen

oder das vorhandene DOIF um ein userReading ergänzen,
im DOIF abfragen, wenn 0 oder undefined, co2 nicht auswerten, aber mit setReading auf 1 setzen,
wenn 1 dann co2 auswerten und Reading auf 0 setzen.
Das halbiert auch die Anzahl der Aktionen.

Viele Grüße
Werner


KyleK

Ich hab mir mal die API von Netatmo angeschaut und folgendes herausgefunden:

Wenn man beim Anfragen der Werte den Parameter date_end=last angibt, dann wird nur der letzte gemessene Wert geliefert.

Ich hab das bei mir lokal mal angepasst und schau mal was passiert.
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

McShire


stelzi76

#1199
Hallo,
ich hätte eine Frage zu der Nutzung mit den Heizkörperthermostaten. Ich habe die Netatmo Thermostate installiert und sie gehen auch. Habe sie dann mit autocreate in Fhem eingebunden. Mir werden jetzt ein Relais und meine Thermostate angezeigt. Sie zeigen mir auch die Temperatue an, jedoch keinen setpoint. Leider lassen sich die Thermostate mit fhem nicht bedienen. Bei allen Set Befehlen, die ich ausführen möchte, wird im Status des devices dann invalid room_id angezeigt. Beim Relais wird bei Status No device found, did you specify the good device_type? angezeigt. Jemand eine Idee? Meine Weather Station funktioniert einwandfrei.
Internals:
   CFGFN     
   DEF        THERMOSTAT 70:ee:50:88:e4:e2 09:00:00:16:09:2c
   FUUID      619e9a71-f33f-b066-4daf-40b9a11ff108baef
   IODev      NetatmoWetter
   LAST_POLL  2021-11-24 21:32:57
   NAME       netatmo_T09_00_00_16_09_2c
   NOTIFYDEV  global
   NR         2908
   NTFY_ORDER 50-netatmo_T09_00_00_16_09_2c
   Relay      70:ee:50:88:e4:e2
   STATE      setpoint|20.9
   SUBTYPE    THERMOSTAT
   TYPE       netatmo
   Thermostat 09:00:00:16:09:2c
   dataTypes  Temperature,Sp_Temperature,BoilerOn,BoilerOff
   openRequests 1
   status     ok
   READINGS:
     2021-11-24 21:02:57   IODev           NetatmoWetter
     2021-11-24 21:32:58   active          ok
     2021-11-24 21:22:51   sp_temperature  20.0
     2021-11-24 21:22:51   temperature     20.9
   helper:
     INTERVAL   1800
     NEXT_POLL  1637786596
     last_status_store 1637785371
   hmccu:
Attributes:
   IODev      NetatmoWetter
   alias      FlurEG Heizkörperthermostat
   devStateIcon .*:no-icon
   room       netatmo
   stateFormat setpoint|temperature Internals:
   CFGFN     
   DEF        THERMOSTAT 70:ee:50:88:e4:e2 09:00:00:16:09:2c
   FUUID      619e9a71-f33f-b066-4daf-40b9a11ff108baef
   IODev      NetatmoWetter
   LAST_POLL  2021-11-24 21:32:57
   NAME       netatmo_T09_00_00_16_09_2c
   NOTIFYDEV  global
   NR         2908
   NTFY_ORDER 50-netatmo_T09_00_00_16_09_2c
   Relay      70:ee:50:88:e4:e2
   STATE      setpoint|20.9
   SUBTYPE    THERMOSTAT
   TYPE       netatmo
   Thermostat 09:00:00:16:09:2c
   dataTypes  Temperature,Sp_Temperature,BoilerOn,BoilerOff
   openRequests 1
   status     ok
   READINGS:
     2021-11-24 21:02:57   IODev           NetatmoWetter
     2021-11-24 21:32:58   active          ok
     2021-11-24 21:22:51   sp_temperature  20.0
     2021-11-24 21:22:51   temperature     20.9
   helper:
     INTERVAL   1800
     NEXT_POLL  1637786596
     last_status_store 1637785371
   hmccu:
Attributes:
   IODev      NetatmoWetter
   alias      FlurEG Heizkörperthermostat
   devStateIcon .*:no-icon
   room       netatmo
   stateFormat setpoint|temperature