Hauptmenü

GPIO 1-Wire in notify

Begonnen von -jato-, 16 August 2024, 10:22:37

Vorheriges Thema - Nächstes Thema

-jato-

Eigentlich ganz simpel  :-\
Ich lese über GPIO 1-Wire Sensoren ein und möchte Reading Temperaturwert in einem notify oder auch DIOF verarbeiten.

Wenn ein Wert von z.B. 30 unterschritten ist, soll eine Pumpe angehen.

notify wird einfach nicht ausgelöset

([Heizung_Zirk.Pumpe:temperature]<30) (set Keller_Z_Pumpe on)oder das

my $temperature = ReadingsVal("Heizung_Zirk.Pumpe", "temperature", 0);
    if ($temperature <= 30) {
        fhem("set Keller_Z_Pumpe on");
    }
    elsif ($temperature >= 40) {
        fhem("set Keller_Z_Pumpe off");

MadMax-FHEM

Wie wäre es mit kompletten list aller beteiligten Devices und kompletten lists etc. deiner Versuche?
Siehe: https://forum.fhem.de/index.php?topic=71806.0

Schon mal versucht mit dem Eventmonitor ein notify anlegen zu lassen? :)

Siehe:https://wiki.fhem.de/wiki/Event_monitor

Entweder ein "generelles"/"generelleres" notify generieren (lassen) und dann innerhalb mit Perl und if oder eben per Regex einschränken was du haben willst... 8)

Wenn DOIF, dann auch besser bei DOIF posten: "help DOIF" in die FhemWeb-Zeile...
Bzw.: https://forum.fhem.de/index.php?topic=13092.0

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)

-jato-

Also List ist kein Problem.
Eventmonitor habe ich nur als Anzeige benutzt  :o
 

Internals:
   CFGFN      ./FHEM/fhem_GPIO.cfg
   DEF        22
   FUUID      5ceaca9f-f33f-bc22-6c74-0d42fec6a4758295
   GPIO_Basedir /sys/class/gpio
   GPIO_Nr    22
   NAME       Keller_Z_Pumpe
   NR         39
   STATE      off
   TYPE       RPI_GPIO
   WiringPi_gpio /usr/local/bin/gpio
   READINGS:
     2024-08-16 09:29:59   state           off
   fhem:
     interfaces switch
Attributes:
   active_low yes
   direction  output
   room       09 Keller
   webCmd     on:off

Internals:
   CFGFN      ./FHEM/fhem_1_WIRE.cfg
   DEF        28-00000622b64d
   FUUID      5ceacaae-f33f-bc22-4052-e3c0978ac4823923
   NAME       Heizung_Zirk.Pumpe
   NR         106
   NTFY_ORDER 50-Heizung_Zirk.Pumpe
   STATE      T: 28
   TYPE       GPIO4
   READINGS:
     2024-08-10 21:41:15   failures        0
     2024-08-16 10:35:16   state           T: 28
     2024-08-16 10:35:16   temperature     28
   fhem:
     interfaces temperature
Attributes:
   event-min-interval 10
   event-on-change-reading state
   fp_HOME    600,500,2,Warmwasser
   group      1-wire
   model      DS18B20
   room       09 Keller

Internals:
   CFGFN     
   DEF        ([Heizung_Zirk.Pumpe:temperature]<30) (set Keller_Z_Pumpe on)
   FUUID      66bee102-f33f-bc22-df85-f8fd043930de9eae
   NAME       Regler_Temperatur
   NR         112794
   NTFY_ORDER 50-Regler_Temperatur
   REGEXP     ([Heizung_Zirk.Pumpe:temperature]<30)
   STATE      active
   TRIGGERTIME 1723793231.04794
   TYPE       notify
   READINGS:
     2024-08-16 09:28:41   state           active
     2024-08-16 09:27:11   triggeredByDev  Heizung_Zirk.Pumpe
     2024-08-16 09:27:11   triggeredByEvent T: 29.812
Attributes:
   room       14 Spielwiese

MadMax-FHEM

Zitat von: -jato- am 16 August 2024, 10:48:59Eventmonitor habe ich nur als Anzeige benutzt 
Würde ich mal ändern ;)

Ein paar Anmerkungen:

   event-on-change-reading state halte ich für falsch.
   Wenn du den Evenmonitor öffnest (und einen Filter auf Heizung_Zirk.Pumpe einstellst) bekommst du überhaupt Events von Heizung_Zirk.Pumpe bzgl. temperature?
   Falls nicht, dann geht auch kein notify/DOIF etc.
   
   ([Heizung_Zirk.Pumpe:temperature]<30) (set Keller_Z_Pumpe on) <- sieht nach DOIF aus, ist aber laut Device Typ ein notify.
   Notify: define Name notify RegEx Command
   Ob das als DOIF geht: keine Ahnung, nutze ich nicht.
   Wenn du DOIF willst, dann ändern als DOIF und den Thread verschieben nach DOIF (Knopf dazu ist irgendwo unten).
   Falls es notify sein/bleiben soll: neu und richtig anlegen (lassen)
   
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)

-jato-

Doch die Temperatur des Geräts Heizung_Zirk.Pumpe wird im Eventmonitor wiedergegeben.

Ich habe ein neues Notify angelegt. Wie kann man reading, also einen Wert auswerten? Oder geht es mit notify nicht?

Internals:
   CFGFN     
   DEF        Heizung_Zirk.Pumpe:.* set Keller_Z_Pumpe off-for-timer 2
   FUUID      66bf2241-f33f-bc22-fa45-8de1bf0b58d9fa20
   NAME       no_Zirkulationspumpe
   NOTIFYDEV  Heizung_Zirk.Pumpe
   NR         117311
   NTFY_ORDER 50-no_Zirkulationspumpe
   REGEXP     Heizung_Zirk.Pumpe:.*
   STATE      2024-08-16 12:00:47
   TRIGGERTIME 1723802447.8901
   TYPE       notify
   READINGS:
     2024-08-16 11:58:37   state           active
     2024-08-16 12:00:47   triggeredByDev  Heizung_Zirk.Pumpe
     2024-08-16 12:00:47   triggeredByEvent T: 31.812
Attributes:
   room       09 Keller

eisman

hi

etwa so:

ESP51:BM0201:.(0|1) {
  if(ReadingsVal("ESP51","BM0201",0) == 1) {
    fhem("set BM_0201 motion motion");
  } else {
    fhem("set BM_0201 motion noMotion");
  }
}

gruss
1x FHEM Debian, Homematic,ZigBee,FS20 / 1X Raspberry, ConBee / 7x ESP
1x FHEM Debian, Homematic,Z2M             / 1X Raspberry, ConBee / 6x ESP
1x FHEM Debian,MQTT2                             / 1X Raspberry, i2c,onewire,gpio
1x auf Windows 2012 Hyper-V-S

MadMax-FHEM

Bzw. Anmerkung: bei Zahlenwerten eher mal Richtung ReadingsNum (statt ReadingsVal) schauen ;)

Ansonsten quasi so in der Art 8)

Oder das ganze zu DOIF schieben ;)

Allerdings: Heizung_Zirk.Pumpe:.* -> da würde ich doch eher einen Event mit temperature nehmen als Trigger!? So reagiert das notify ja auf ALLES was vom Device kommt...
Evtl. so: Heizung_Zirk.Pumpe:temperature.*
-> besser Eventmonitor nutzen...

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)

-jato-


Und wir kann ich zudem einen bestimmten Temperaturwert verarbeiten hierEvtl. so: Heizung_Zirk.Pumpe:temperature.*

MadMax-FHEM

Zitat von: -jato- am 16 August 2024, 13:10:13Und wir kann ich zudem einen bestimmten Temperaturwert verarbeiten hier
Wenn du meinst direkt im Trigger -> RegEx.

Statt .* (-> mindestens 1 Zeichen, egal welches -> Punkt und dann u.U. noch weitere "davon" -> Stern) eben eine RegEx die deinen Kriterien genügt.
Siehe auch: https://regex101.com/

Oder (finde ich einfacher/flexibler) im notify dann mittels Perl -> { hier perl code } eben mittels ReadingsNum/ReadingsVal und if etc.
Siehe: https://wiki.fhem.de/wiki/Klammerebenen

Oder eben: DOIF (dann halt den Thread verschieben oder commandref zu DOIF lesen oder oder oder).

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)

eisman

#9
hi, etwa so

 
Heizung_Zirk.Pumpe:temperature:.*  {
  my $Temp = ReadingsNum("Keller_Z_Pumpe,"temperature", 0);

  if    ($Temp <  10) { fhem("set Keller_Z_Pumpe off-for-timer 2" }
  elsif ($Temp >= 10 and $Temp < 18) { fhem("set Keller_Z_Pumpe off-for-timer 4" }
  elsif ($Temp >= 18 and $Temp < 20) { fhem("set Keller_Z_Pumpe off-for-timer 6" }
  elsif ($Temp >= 20 and $Temp < 23) { fhem("set Keller_Z_Pumpe off-for-timer 8" }
  elsif ($Temp >= 23) { fhem("set Keller_Z_Pumpe off-for-timer 0" }
}


oder

 
Heizung_Zirk.Pumpe:temperature:.30 set Keller_Z_Pumpe off-for-timer 2;

gruss
1x FHEM Debian, Homematic,ZigBee,FS20 / 1X Raspberry, ConBee / 7x ESP
1x FHEM Debian, Homematic,Z2M             / 1X Raspberry, ConBee / 6x ESP
1x FHEM Debian,MQTT2                             / 1X Raspberry, i2c,onewire,gpio
1x auf Windows 2012 Hyper-V-S

-jato-

Hi, es funktioniert, danke!  :)