[gelöst] HourCounter .* für ON?

Begonnen von Nielsiwilsi, 19 Dezember 2020, 09:53:53

Vorheriges Thema - Nächstes Thema

Nielsiwilsi

Hallo Zusammen,

ich möchte für eine Lüftung die Betriebsstunden zählen. Das ganze läuft über einen Shelly RGBW2 mit Tasmota und MQTT.
Bei PWM Wert 71 ist der Lüfter aus, ein anderen Werten dreht er dann links oder rechts rum.

Ich wollte euch fragen, ob ich die .* bei der ON Definition lassen kann, oder ob dann etwas falsch/doppelt gezählt wird. Mit diesen regexp bin ich nicht so fit.

defmod EG_Lueftung_Ch1_HC HourCounter EG_Lueftung:Channel1:.* EG_Lueftung:Channel1:.71


Vorweihnachtliche Grüße
Niels

MadMax-FHEM

#1
Naja ich bin auch kein regEx-Experte aber ein paar Basics sollte man schon kennen/können, sonst wird das mit fhem "haarig"! ;)

Also kurz: .* wird dann alles als ON "zählen" was von EG_Lueftung:Channel1 kommt -> wird daher wohl nicht funktionieren

Am besten mal im Eventmonitor schauen, was denn bei ON als Event kommt.
Dann die Zeile markieren und z.B. ein notify "bauen lassen".

Die Regex die da drin steht sollte dann gehen...

EDIT: sorry falsch von mir, dachte die 71 wäre on... ;) Bzw. es gäbe EINEN Wert für ON. Aber trotzdem: welche Werte kommen bei on? Man kann ja auch so eine RegEx bauen: EG_Lueftung:Channel1:(Wert1|Wert2) falls eben Wert1 oder Wert2 für ON wäre...

Alternativ: ein userReadings bauen, was eben ein "sauberes" ON/OFF liefert...

Bzw. gerade noch mal deine DEF angesehen und noch mal den Text gelesen...
...welche Werte kommen denn für Links/Rechts?

Aktuell würde ich das wohl hier mit einem userReadings lösen.

EDIT: bist du sicher, dass im Event auch ein ':71' kommt? Poste doch mal eine Ausgabe des Eventmonitors und schreibe dazu was nun alles ON und was OFF ist

userReadings evtl. so (jaja, geht auch anders aber das ist halt meine Art sowas zu lösen ;)  ):

attr EG_Lueftung userReadings OnOff:Channel1.* {if(ReadingsNum($name,"Channel1",0) == 71){return "off"}else{return "on"}}

oder evtl. auch so

attr EG_Lueftung userReadings OnOff:Channel1.* {ReadingsNum($name,"Channel1",0) == 71 ? return "off" : return "on"}


Und dann statt Channel1 eben das Reading OnOff (oder wie immer du das nennen möchtest) als "Auslöser" nehmen. Da sollte es dann "saubere" on/off geben.
Sofern das von dir geschilderte Verhalten (off=71 und der Rest on) stimmt...

Gruß, Joachim[/code]
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Nielsiwilsi

Hallo Joachim,

ich finde die Idee mit den userReadings ganz charmant.

Aber zu deiner Frage, auf dem Channel1 kann alles kommen [0...100] zur Steuerung hab ich aber nur die Werte [23,45,65,71,76,83,90] verwendet. Alle PWN Werte [67...75] halten den Lüfter an. Unterhalb, dreht er je nach Abweichung schneller in die eine und oberhalb in die andere Richtung.

hier der Eventmonitor, den OnOff hab ich schon mal angelegt:
2020-12-19 12:11:49.271 MQTT2_DEVICE EG_Lueftung Channel1: 65
2020-12-19 12:11:49.271 MQTT2_DEVICE EG_Lueftung Color: A6B5A6C2
2020-12-19 12:11:49.271 MQTT2_DEVICE EG_Lueftung Channel1_OnOff: on
2020-12-19 12:11:49.299 MQTT2_DEVICE EG_Lueftung Color: A6C2A6C2
2020-12-19 12:11:49.299 MQTT2_DEVICE EG_Lueftung Channel2: 76


Falls du noch ne Idee hast, werd ich die gerne auch ausprobieren, aber ich glaub ich lass es bei den userReadings.

VG
Niels

MadMax-FHEM

#3
Wenn die Werte so sind wie geschrieben, kannst du das userReadings nat. auch "besser"/"schärfer" schreiben:


attr EG_Lueftung userReadings OnOff:Channel1.* {if(ReadingsNum($name,"Channel1",0) >= 67 && ReadingsNum($name,"Channel1",0) <= 75){return "off"}elsif(ReadingsNum($name,"Channel1",0) < 67 || ReadingsNum($name,"Channel1",0) > 75){return "on"}}


EDIT: wobei das hier nat. in etwas dasselbe ist (nur kürzer ;)  ):

attr EG_Lueftung userReadings OnOff:Channel1.* {if(ReadingsNum($name,"Channel1",0) >= 67 && ReadingsNum($name,"Channel1",0) <= 75){return "off"}else{return "on"}}



Naja, ich denke das mit den userReadings ist halt "übersichtlicher" als sich eine entspr. RegEx zu basteln, die genau die "ifs" nachbildet...
...noch dazu wenn man von RegEx keine (kaum) Ahnung hat.

Aber auch das wäre nat. machbar...

Evtl. mal hier vorbei schauen: https://regex101.com/

Den HourCounter nat. dann an das neue Reading anpassen (falls nicht schon passiert)...
...und wenn die OnOff nicht gefällt, dann einfach was anderes nehmen ;)

EDIT: wenn es dann funktioniert bitte noch ein [gelöst] o.ä. "vor" den ersten Post, danke.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Nielsiwilsi

Ja, vielen Dank. Hat mir sehr geholfen.

VG Niels