zwei gleiche DOIF zu einem DOIF?

Begonnen von michisa86888, 05 März 2022, 07:40:58

Vorheriges Thema - Nächstes Thema

michisa86888

Hallo, ich würde gerne meine 2 DOIF zu einem DOIF zusammenfassen bekomme es aber irgendwie nicht richtig hin.
Habe das ganze probiert mit "or" zu verbinden, aber das eine DEVICE hebt das andere gleich wieder auf?  :o

DOIF1:
([Shelly_Kappsaege:relay_0_power] > 2.50)(set Sonoff_Absauganlage.* on)
DOELSEIF
([Shelly_Kappsaege:relay_0_power] < 5.00) (set Sonoff_Absauganlage.* off)
/code]
DOIF2:
[code]([Shelly_Tischkreissaege:relay_0_power] > 2.50)(set Sonoff_Absauganlage.* on)
DOELSEIF
([Shelly_Tischkreissaege:relay_0_power] < 5.00) (set Sonoff_Absauganlage.* off)


Für die Profis sicherlich kein Problem...

frank

ich würde einen shelly plus des zugehörigen doifs "einsparen" und beide werkzeuge zusammen über einen shelly versorgen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

MadMax-FHEM

#2
Die beiden DOIF sind doch jetzt schon "komisch"...

Es wird getriggert und sobald größer 2,5 wird eingeschaltet...
Es wird doch nur unter 2,5 ausgeschaltet weil Zweig 2 (so ich DOIF verstehe) doch erst "geprüft" wird, wenn Zweig 1 nicht zutrifft, also unter 2,5...
Da kleiner 2,5 auch kleiner 5 ist - > aus

Also einfach ein DOELSE mit off macht doch dasselbe?

EDIT: mit OR oder auch AND in einer Zeile/Abfrage beide triggernden Devices zu "verwurschteln" wird (verm.) nicht gehen (hast du ja bereits gemerkt ;) ). Weil du ja nicht willst, wenn das eine ODER das andere Device über 2,5 ist, dass ja welches Device soll nun geschalten werden? Beide ein -> Quatsch / Gleiches bei AND. Weil dann würde ja nur geschalten werden, wenn BEIDE Devices einen bestimmten Zustand haben -> willst du ja nicht. D.h. entweder bei 2 DOIF bleiben (warum ist/wäre das so schlimm?) oder mehrere Zweige in einem DOIF (was von 2 DOIF nicht so weit weg ist ;) )... [OT]Ich würde das ja mit einem notify auf beide Devices machen und dann in einer Perl Sub mit if/else aber da auch jeweils ein if/else pro triggerndem Device ;) [/OT]

EDIT: ja klar, das zu schaltende Gerät ist ja immer dasselbe, eieiei... (auf dem Handy sollte man keine DOIF-Fragen beantworten :D  )

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)

Sany

von der Logik her:

ZitatDOIF wenn Kappsäge:power > 50 ODER Kreissäge:power > 50
                  set Absauganlage ON
DOELSEIF wenn Kappsäge:power < 10 UND Kreissäge:power < 10
                  set Absauganlage OFF

Die Schwellenwerte habe ich jetzt einfach mal so gewählt. Sowohl die Kappsäge als auch die Kreissäge werden wohl immer eine verhältnismäßig hohe Wattzahl "brauchen", wenn sie eingeschaltet sind, ebenso sind sie wohl ziemlich sicher aus, wenn nur wenige Watt verbraucht werden. Das kannst Du ja mittels Shelly beobachten. Also falls die Geräte drehzahlmäßig verstellbar sind dann schau nach, was sie brauchen wenn eingeschaltet (ohne Motor), Motor eingeschaltet und ausgeschaltet. Diese Werte dann großzügig in die Schwellen einbauen. Beispielhaft: die Säge nimmt eingeschaltet (ohne Motor) 2 W, mit Motor in der kleinsten Stellung z.B. 150 W, dann ist z.B. >100W sehr sicher ein EIN und < 10W sehr sicher ein AUS, jeweils was den Motor, also die laufende Säge angeht. Das willst Du vermutlich.

Viel Erfolg!


Sany
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

Damian

Da es sich offenbar um dieselbe Absauganlage für beide Maschinen handelt, würde ich die Summe der Leistungsaufnahmen der beiden Geräte abfragen.

z. B.

([Kappsäge:power] + [Kreissäge:power]) > 2.5


Noch eleganter kann man so etwas über Aggregationsfunktion lösen. Durch eine geschickte Namenswahl der Geräte, lässt sich eine Abfrage für beliebig viele Verbraucher realisieren:

z. B.

([#sum:"säge$":power] > 2.5)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

michisa86888

#5
Zitat von: Damian am 05 März 2022, 09:57:05
Da es sich offenbar um dieselbe Absauganlage für beide Maschinen handelt, würde ich die Summe der Leistungsaufnahmen der beiden Geräte abfragen.

z. B.

([Kappsäge:power] + [Kreissäge:power]) > 2.5


Noch eleganter kann man so etwas über Aggregationsfunktion lösen. Durch eine geschickte Namenswahl der Geräte, lässt sich eine Abfrage für beliebig viele Verbraucher realisieren:

z. B.

([#sum:"säge$":power] > 2.5)
Okay dann versuche ich es mal mit Vorschlag eins.
Vorschlag zwei würden dann alle Geräte die "säge" im Gerätenamen haben reagieren? Müssten dann auch alle das Reading "Power" haben bzw. in meinem Fall "relay_0_power"?

Damian

Zitat von: michisa86888 am 05 März 2022, 21:09:13
Okay dann versuche ich es mal mit Vorschlag eins.
Vorschlag zwei würden dann alle Geräte die "säge" im Gerätenamen haben reagieren? Müssten dann auch alle das Reading "Power" haben bzw. in meinem Fall "relay_0_power"?
Es werden alle addiert, die "säge" am Ende des Devicenamens besitzen und das Reading "power" haben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF