wenn mehrere Ausgänge aus sind ...

Begonnen von Alex76, 01 Mai 2016, 20:07:15

Vorheriges Thema - Nächstes Thema

Alex76

Hallo,

ich bin gerade dabei meine ersten Schritte mit FHEM zu gehen und bis auf die Aktoren und Sonsoren habe ich noch nicht viel drinnen - aber Grafiken werden schon brav erzeugt.

Nun habe ich einige Ventile meiner Gartenbewässerung und habe mir dafür überlegt, wenn man ein Ventil ein schaltet, soll auch die Pumpte eingeschaltet werden. Das klappt auch prima mit:
define BewaesserungsPumpeOff notify Bewaesserungskreis1:on|Bewaesserungskreis2:on|Bewaesserungskreis3:on|Tankbefuellung:on|Tropfschlauch:on set Bewaesserungspumpe on

Im nächsten Schritt würde ich gerne die Pumpte ausschalten, wenn keiner der Ventile eingeschaltet ist. Ich hab es mit folgenden Varianten probiert:
define BewaesserungsPumpeOff notify Bewaesserungskreis1:off&&Bewaesserungskreis2:off&&Bewaesserungskreis3:off&&Tankbefuellung:off&&Tropfschlauch:off set Bewaesserungspumpe off
define BewaesserungsPumpeOff notify Bewaesserungskreis1:off&Bewaesserungskreis2:off&Bewaesserungskreis3:off&Tankbefuellung:off&Tropfschlauch:off set Bewaesserungspumpe off
define BewaesserungsPumpeOff notify Bewaesserungskreis1:off and Bewaesserungskreis2:off and Bewaesserungskreis3:off and Tankbefuellung:off and Tropfschlauch:off set Bewaesserungspumpe off


Kann mir jemand sagen, warum das nicht läuft? Vielleicht verstehe ich noch etwas falsch in der Logik des Systems. . .

Später würde ich gern einen Task ausführen, der die Kreise alle 2x pro Tag je 5 Minuten laufen lässt. Aber nur wenn die Regenwarscheinlichkeit in der Früh bzw. am Nachmittag unter 50% ist. Den % Wert hab ich schon gefunden, aber weiter bin ich noch nicht gekommt. Davor müsste mal das ein und ausschalten der Pumpe klappen.

lg

Alex[/code]

Muschelpuster

#1
Mhh, Notify nutze ich nur bei einzelnen Objekten, meine Lieblingswaffe hier ist DOIF:
define di_Pumpe_ein DOIF ([Bewaesserungskreis1] eq "on" or [Bewaesserungskreis2] eq "on" or [Bewaesserungskreis3] eq "on" or [Tankbefuellung] eq "on" or [Tropfschlauch] eq "on") (set set Bewaesserungspumpe on)
define di_Pumpe_aus DOIF ([Bewaesserungskreis1] eq "off" and [Bewaesserungskreis2] eq "off" and [Bewaesserungskreis3] eq "off" and [Tankbefuellung] eq "off" and [Tropfschlauch:state] eq "off") (set Bewaesserungspumpe off)
Das wäre die Formulierung 1:1 nach DOIF übersetzt, aber es gibt ja noch DOELSE. Dann reicht eine Definition:
define di_Pumpe_ein DOIF ([Bewaesserungskreis1] eq "on" or [Bewaesserungskreis2] eq "on" or [Bewaesserungskreis3] eq "on" or [Tankbefuellung] eq "on" or [Tropfschlauch] eq "on") (set set Bewaesserungspumpe on) DOELSE (set Bewaesserungspumpe off)
Ich dachte, dass kann man mit regulären Ausdrücken noch etwas kürzen, aber das lohnt sich scheinbar nicht wirklich. Du könntest Deine Namensgebung optimieren, aber es fehlt mit der Trigger für die Rückschaltung.

Zitat von: Alex76 am 01 Mai 2016, 20:07:15Später würde ich gern einen Task ausführen, der die Kreise alle 2x pro Tag je 5 Minuten laufen lässt. Aber nur wenn die Regenwarscheinlichkeit in der Früh bzw. am Nachmittag unter 50% ist. Den % Wert hab ich schon gefunden, aber weiter bin ich noch nicht gekommt. Davor müsste mal das ein und ausschalten der Pumpe klappen.
Auch das sollte mit DOIF nicht das Thema sein.

alternative Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Wernieman

Ich habe dieses über ein "struct" und passenden notify durchgefürt. Wen ein "Gerät" auf On geht, geht auch der "master" auf on. Wenn alle auf off, geht auch der master auf "off".

DOIF war mir dazu zu "überdimensioniert" ..
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Muschelpuster

Zitat von: Wernieman am 02 Mai 2016, 09:15:09
Ich habe dieses über ein "struct" und passenden notify durchgefürt.
Und ich habe mich noch nie mit structure beschäftigt. In diesem Fall aber sicher eine gute Alternative, wobei das on schon geschaltet werden sollte, wenn die Structure != off. Ob man das dann mit Notify oder DOIF schaltet ist ja völlig egal.
Direkt mit RegExen im DOIF geht auf jeden Fall nicht (https://forum.fhem.de/index.php/topic,52919.msg446544.html#msg446544).

unstrukturierte Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Wernieman

Du kannst dem struct sagen, was genau den priorisiert werden soll

z.B. sollen bei mir die Lautsprecher an sein, wenn entweder mpd oder der Rechner läuft:
volumeUp
   ATTR       room
   DEF        room Rechner myMPD
   NAME       Ton
   NR         102
   NTFY_ORDER 50-Ton
   STATE      off
   TYPE       structure
   .asyncQueue:
   Content:
     Rechner    off
     myMPD      stop
   Readings:
     2016-05-02 06   LastDevice      myMPD
     2016-05-02 06   LastDevice_Abs  myMPD
     2016-05-02 06   state           off
Attributes:
   async_delay 0.5
   clientstate_behavior relative
   clientstate_priority on|On|An|play off|Off|stop
   room       Musik,notify


und dann ein stinknormales notify auf on und off ala:
define Ton_notify notify Ton set Lautsprecher $EVENT
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Alex76

#5
Zitat von: Muschelpuster am 01 Mai 2016, 20:38:39
define di_Pumpe_aus DOIF ([Bewaesserungskreis1] eq "off" and [Bewaesserungskreis2] eq "off" and [Bewaesserungskreis3] eq "off" and [Tankbefuellung] eq "off" and [Tropfschlauch:state] eq "off") (set Bewaesserungspumpe off)
Hi,

Danke - hat spitze geklappt ;) Nun muss ich noch schauen, dass ich die Zeitsteuerung hin bekomme.

Ich hätte mir das so vorgestellt:

(Der Regensensor - HM_41D1FB_Rain)
(Die Regenvorhersage - wetter.com - wetter_brunn.fc0_chOfRain06, wetter_brunn.fc0_chOfRain11, wetter.fc0_chOfRain17)

Zeitgesteuerter Job um 06:00, 11:00 und 17:00
wenn (HM_41D1FB_Rain war aktiv in der Zwischenzeit und Regen bei wetter_brunn.fc0_chOfRainXX >80) dann {
         löse aus: Tropfschlauch für 3 Minuten danach
         löse aus: Bewaesserungskreis1 für 3 Minuten danach
         löse aus: Bewaesserungskreis2 für 3 Minuten danach
         löse aus: Bewaesserungskreis3 für 3 Minuten
}

Habt Ihr dafür auch eine gute Idee?

Puschel74

Zeitgesteuert kann auch DOIF  ;)
Guck mal in die deutsche commandref dazu: http://fhem.de/commandref_DE.html#DOIF
Damian hat sich da echt Mühe gegeben (mit dem Modul und der Doku) und das sollte doch nicht umsonst gewesen sein - wenn es schon gratis ist  8)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Alex76

Zitat von: Puschel74 am 04 Mai 2016, 19:54:57
Zeitgesteuert kann auch DOIF  ;)
Guck mal in die deutsche commandref dazu: http://fhem.de/commandref_DE.html#DOIF
Damian hat sich da echt Mühe gegeben (mit dem Modul und der Doku) und das sollte doch nicht umsonst gewesen sein - wenn es schon gratis ist  8)

Spitze, damit müsste ich es hin bekommen. Das sollte dann so in der Art gehen:
define di_light DOIF ([06:00-06:05] and wetter_brunn.fc0_chOfRain06<70 and ???) (set Bewaesserungskreis1 on) DOELSE (set Bewaesserungskreis1 off)

Das dann für jeden Kreis und für jede Uhrzeit.

Die Frage ist nur, wie kommt man auf die Regenmenge der letzten Stunden bzw. wie frägt man ab ob in der Zeit X Regen vorhanden war?

Puschel74

#8
Es sollten auch mehrere Zeitbereich klappen und auch mehrere "Kreise" - in einem DOIF.
Mit DOIF, DOELSEIF und DOELSE kannst du in einem DOIF ja mehrere Unterscheidungen treffen - so wie mit if,elsif und else in Perl.

ZitatDie Frage ist nur, wie kommt man auf die Regenmenge der letzten Stunden bzw. wie frägt man ab ob in der Zeit X Regen vorhanden war?
Wenn es dafür in einem Device Readings gibt ist das kein Problem wenn nicht dann selbst Readings basteln und in einem Device ablegen.

Edith: Achtung! Gefährliches Halbwissen von mir was DOIF anbelangt da ich das nicht verwende.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Muschelpuster

Zitat von: Alex76 am 04 Mai 2016, 20:19:38Die Frage ist nur, wie kommt man auf die Regenmenge der letzten Stunden bzw. wie frägt man ab ob in der Zeit X Regen vorhanden war?
Wie wäre es mit einem Dummy. Sobald Dein Wettermodul Regen meldet setzt Du das Ding mittels DOIF auf 1 und sobald Dein Wettermodul keinen Regen mehr meldet setzt Du das mit einem DOIF verzögert zurück. Wenn man das jedoch ernsthaft betreiben will, muss man ja aber noch die Regenmenge und die Regendauer berücksichtigen. Man müsste also die Regenmenge in den Dummy speichern und dann mit einem zyklischen DOIF die 'verbrauchte' Feuchtigkeit wieder abziehen. Aber das müsste dann wieder in Abhängigkeit von Bewölkung/Sonnenschein erfolgen. Aber da ist man doch schnell bei einem Bodenfeuchtesensor, oder?

komplexe Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Alex76

Zitat von: Muschelpuster am 04 Mai 2016, 22:16:25
Wie wäre es mit einem Dummy. Sobald Dein Wettermodul Regen meldet setzt Du das Ding mittels DOIF auf 1 und sobald Dein Wettermodul keinen Regen mehr meldet setzt Du das mit einem DOIF verzögert zurück. Wenn man das jedoch ernsthaft betreiben will, muss man ja aber noch die Regenmenge und die Regendauer berücksichtigen. Man müsste also die Regenmenge in den Dummy speichern und dann mit einem zyklischen DOIF die 'verbrauchte' Feuchtigkeit wieder abziehen. Aber das müsste dann wieder in Abhängigkeit von Bewölkung/Sonnenschein erfolgen. Aber da ist man doch schnell bei einem Bodenfeuchtesensor, oder?

komplexe Grüße
Niels

Stimmt hab mich da auch schon auf die Suche gemacht nur keinen gefunden der mit dem Homematic Lan Modul funktioniert. Hab sonst nur 433Mhz am Pi um die sompfy Rollläden zu steuern :(

Muschelpuster

Zitat von: Alex76 am 05 Mai 2016, 04:40:35
Stimmt hab mich da auch schon auf die Suche gemacht nur keinen gefunden der mit dem Homematic Lan Modul funktioniert. Hab sonst nur 433Mhz am Pi um die sompfy Rollläden zu steuern :(
Wie wäre es hiermit: http://www.stall.biz/?project=robuster-bodenfeuchtesensor-fur-den-ausseneinsatz?

verlinkte Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF