Ventilsteuerung (Bewässerung) mit vier Kreisen und HM-LC-SW4-SM-2

Begonnen von remo, 04 Dezember 2020, 14:42:58

Vorheriges Thema - Nächstes Thema

remo

Hallo zusammen,

ich war eine Weile nicht aktiv, deshalb wurde scheinbar mein Account gelöscht...?!

Ich stehe vor einem Problem und anscheinend stehe ich auch auf dem Schlauch.
Meine Recherchen und Versuche brachten leider nix.
Deshalb hab ich die Hoffnung, dass ihr mir eventuell einen Denkanstoß geben oder mich in die richtige Richtung schubsen könnt,
falls ich totalen Mist gemacht habe.

Zum Hintergrund:
Ich habe vier Aktoren.
Wenn ich den einen schalte, sollen die anderen abschalten - und andersherum.
Dabei soll das Icon in der Web-Ansicht von FHEM aktualisert werden.

Zwei Ansätze:
1. Den Schalter manuell im Web-Frontent schalten und dabei einen weiteren set xyz on;; set abc off ausführen -> Keine Ahnung, ob das geht. Hab nichts dazu gefunden.

2. Über ein Notify den Aktor schalten "lassen" und im Anschluss ein set notify_xyz off ausführen.

2. Funktioniert im Prinzip, ABER die Schaltvorgänge dauern sehr lange und FHEM zeigt an Connection lost ...

Nun weiß ich nicht weiter ...


Hier ein Auszug:
############### VENTIL: VORNE
define vVorne CUL_HM xxx01
attr vVorne userattr room_map structexclude
attr vVorne expert 2_raw
attr vVorne model HM-LC-SW4-SM-2
attr vVorne peerIDs 00000000,
attr vVorne subType switch

############### VENTIL: SEITE
define vSeite CUL_HM xxx02
attr vSeite userattr room_map structexclude
attr vSeite expert 2_raw
attr vSeite model HM-LC-SW4-SM-2
attr vSeite peerIDs 00000000,
attr vSeite subType switch

############### VENTIL: HINTEN1
define vHinten1 CUL_HM xxx03
attr vHinten1 userattr room_map structexclude
attr vHinten1 expert 2_raw
attr vHinten1 model HM-LC-SW4-SM-2
attr vHinten1 peerIDs 00000000,
attr vHinten1 subType switch

############### VENTIL: HINTEN2
define vHinten2 CUL_HM xxx04
attr vHinten2 userattr room_map structexclude
attr vHinten2 expert 2_raw
attr vHinten2 model HM-LC-SW4-SM-2
attr vHinten2 peerIDs 00000000,
attr vHinten2 subType switch





############### VORNE SPRENGEN

define vorneSprengen dummy

attr vorneSprengen webCmd ein:aus
attr vorneSprengen eventMap eventMap ein:on aus:off
attr vorneSprengen devStateIcon on:sprinkler_icon@5ECD3C off:sprinkler_icon@808080 .*:sprinkler_icon@F19A38

define vorneSprengen_EIN notify vorneSprengen:on set vVorne on;; set hinten2Sprengen off;; set hinten1Sprengen off;; set seiteSprengen off;;
define vorneSprengen_AUS notify vorneSprengen:off set vVorne off;;

attr vorneSprengen room BEWÄSSERUNG
attr vorneSprengen group 02_Kreise
attr vorneSprengen alias vorne



############### SEITE SPRENGEN

define seiteSprengen dummy

attr seiteSprengen webCmd ein:aus
attr seiteSprengen eventMap eventMap ein:on aus:off
attr seiteSprengen devStateIcon on:sprinkler_icon@5ECD3C off:sprinkler_icon@808080 .*:sprinkler_icon@F19A38

define seiteSprengen_EIN notify seiteSprengen:on set vSeite on;; set hinten2Sprengen off;; set hinten1Sprengen off;; set vorneSprengen off;;
define seiteSprengen_AUS notify seiteSprengen:off set vSeite off;;

attr seiteSprengen room BEWÄSSERUNG
attr seiteSprengen group 02_Kreise
attr seiteSprengen alias Seite



############### HINTEN1 SPRENGEN

define hinten1Sprengen dummy

attr hinten1Sprengen webCmd ein:aus
attr hinten1Sprengen eventMap eventMap ein:on aus:off
attr hinten1Sprengen devStateIcon on:sprinkler_icon@5ECD3C off:sprinkler_icon@808080 .*:sprinkler_icon@F19A38

define hinten1Sprengen_EIN notify hinten1Sprengen:on set vHinten1 on;; set hinten2Sprengen off;; set seiteSprengen off;; set vorneSprengen off;;
define hinten1Sprengen_AUS notify hinten1Sprengen:off set vHinten1 off;;

attr hinten1Sprengen room BEWÄSSERUNG
attr hinten1Sprengen group 02_Kreise
attr hinten1Sprengen alias hinten1



############### HINTEN2 SPRENGEN

define hinten2Sprengen dummy

attr hinten2Sprengen webCmd ein:aus
attr hinten2Sprengen eventMap eventMap ein:on aus:off
attr hinten2Sprengen devStateIcon on:sprinkler_icon@5ECD3C off:sprinkler_icon@808080 .*:sprinkler_icon@F19A38

define hinten2Sprengen_EIN notify hinten2Sprengen:on set vHinten2 on;; set hinten1Sprengen off;; set seiteSprengen off;; set vorneSprengen off;;
define hinten2Sprengen_AUS notify hinten2Sprengen:off set vHinten2 off;;

attr hinten2Sprengen room BEWÄSSERUNG
attr hinten2Sprengen group 02_Kreise
attr hinten2Sprengen alias hinten2


Liebe Grüße


EDIT:

Die Steuerung habe ich mit Hilfe von Otto und TomLee nun fertig bekommen.
Ich habe viel dabei gelernt und Inspiration und wertvolle Erkenntnisse für zukünftige Optimierungen meiner bestehenden Automatisierungen erlangt.

Vielen lieben und aufrichtigen Dank nochmals!

Hier der fertige, für meine Bedürfnisse sehr gut funktionierende Code:


#################################################################################################### PUMPE

define a_Pumpe CUL_HM xxxxxA02
attr a_Pumpe userattr room_map structexclude
attr a_Pumpe model HM-LC-SW4-SM
attr a_Pumpe peerIDs 00000000,

attr a_Pumpe alias Pumpe

attr a_Pumpe webCmd ein:aus
attr a_Pumpe eventMap on:ein off:aus
attr a_Pumpe devStateIcon ein:sani_domestic_waterworks@5ECD3C aus:sani_domestic_waterworks@808080 .*:sani_domestic_waterworks@F19A38

attr a_Pumpe room BEWÄSSERUNG
attr a_Pumpe group 02_Kreise

#################################################################################################### PUMPE ENDE





#################################################################################################### VENTILE

define a_VentilVorne CUL_HM xxxxx001
attr a_VentilVorne userattr room_map structexclude
attr a_VentilVorne model HM-LC-SW4-SM-2
attr a_VentilVorne peerIDs 00000000,

define a_VentilSeite CUL_HM xxxxx002
attr a_VentilSeite userattr room_map structexclude
attr a_VentilSeite model HM-LC-SW4-SM-2
attr a_VentilSeite peerIDs 00000000,

define a_VentilHinten1 CUL_HM xxxxx003
attr a_VentilHinten1 userattr room_map structexclude
attr a_VentilHinten1 model HM-LC-SW4-SM-2
attr a_VentilHinten1 peerIDs 00000000,

define a_VentilHinten2 CUL_HM xxxxx004
attr a_VentilHinten2 userattr room_map structexclude
attr a_VentilHinten2 model HM-LC-SW4-SM-2
attr a_VentilHinten2 peerIDs 00000000,

attr a_VentilVorne alias vorne
attr a_VentilSeite alias Seite
attr a_VentilHinten1 alias hinten1
attr a_VentilHinten2 alias hinten2

attr a_Ventil.* webCmd ein:aus
attr a_Ventil.* eventMap on:ein off:aus
attr a_Ventil.* devStateIcon ein:sani_sprinkling@5ECD3C aus:sani_sprinkling@808080 .*:sani_sprinkling@F19A38

attr a_Ventil.* room BEWÄSSERUNG
attr a_Ventil.* group 02_Kreise

define n_Ventil notify a_Ventil.*:on set a_Ventil.*:FILTER=NAME!=$NAME off;;

#################################################################################################### VENTILE ENDE

attr a_Pumpe sortby 1
attr a_VentilVorne sortby 2
attr a_VentilSeite sortby 3
attr a_VentilHinten1 sortby 4
attr a_VentilHinten2 sortby 5





#################################################################################################### 00_SCHNELLZUGRIFFE

define d00_PumpeSprengen_10 dummy
define d00_VorneSprengen_10 dummy
define d00_SeiteSprengen_10 dummy
define d00_Hinten1Sprengen_10 dummy
define d00_Hinten2Sprengen_10 dummy

attr d00_PumpeSprengen_10 alias Pumpe für 10 min. einschalten
attr d00_VorneSprengen_10 alias vorne für 10 min. sprengen
attr d00_SeiteSprengen_10 alias Seite für 10 min. sprengen
attr d00_Hinten1Sprengen_10 alias hinten1 für 10 min. sprengen
attr d00_Hinten2Sprengen_10 alias hinten2 für 10 min. sprengen

attr d00_.* webCmd ein
attr d00_.* devStateIcon ein:time_timer@367BF6:ein .*:time_timer@F19A38

attr d00_.* room BEWÄSSERUNG
attr d00_.* group 00_Schnellzugriffe

define n00_PumpeSprengen_10 notify d00_PumpeSprengen_10:ein set a_Pumpe on-for-timer 600;;
define n00_VorneSprengen_10 notify d00_VorneSprengen_10:ein set a_VentilVorne on-for-timer 600;; set a_Pumpe on-for-timer 600;;
define n00_SeiteSprengen_10 notify d00_SeiteSprengen_10:ein set a_VentilSeite on-for-timer 600;; set a_Pumpe on-for-timer 600;;
define n00_Hinten1Sprengen_10 notify d00_Hinten1Sprengen_10:ein set a_VentilHinten1 on-for-timer 600;; set a_Pumpe on-for-timer 600;;
define n00_Hinten2Sprengen_10 notify d00_Hinten2Sprengen_10:ein set a_VentilHinten2 on-for-timer 600;; set a_Pumpe on-for-timer 600;;

#################################################################################################### 00_SCHNELLZUGRIFFE ENDE

attr d00_PumpeSprengen_10 sortby 1
attr d00_VorneSprengen_10 sortby 2
attr d00_SeiteSprengen_10 sortby 3
attr d00_Hinten1Sprengen_10 sortby 4
attr d00_Hinten2Sprengen_10 sortby 5





#################################################################################################### 01_ZEITPROGRAMME

define d01_MorgensSprengen dummy
define d01_AbendsSprengen dummy

attr d01_MorgensSprengen alias morgens komplett sprengen
attr d01_AbendsSprengen alias abends komplett sprengen

attr d01_.* webCmd ein:aus
attr d01_.* eventMap ein:on aus:off
attr d01_.* devStateIcon on:ios-on-green off:ios-off .*:ios-NACK:off

attr d01_.* room BEWÄSSERUNG
attr d01_.* group 01_Zeitprogramme

define at01_MorgensSprengen_Pumpe at *05:00 set a_Pumpe on-for-timer 2700;;
define at01_MorgensSprengen_Vorne at *05:00 set a_VentilVorne on-for-timer 900;;
define at01_MorgensSprengen_Seite at *05:15 set a_VentilSeite on-for-timer 900;;
define at01_MorgensSprengen_Hinten1 at *05:30 set a_VentilHinten1 on-for-timer 900;;
define at01_MorgensSprengen_Hinten2 at *05:45 set a_VentilHinten2 on-for-timer 900;;

define at01_AbendsSprengen_Pumpe at *21:00 set a_Pumpe on-for-timer 5400;;
define at01_AbendsSprengen_Vorne at *21:00 set a_VentilVorne on-for-timer 1800;;
define at01_AbendsSprengen_Seite at *21:30 set a_VentilSeite on-for-timer 1800;;
define at01_AbendsSprengen_Hinten1 at *22:00 set a_VentilHinten1 on-for-timer 1800;;
define at01_AbendsSprengen_Hinten2 at *22:30 set a_VentilHinten2 on-for-timer 1800;;

define n01_MorgensSprengen_EIN notify d01_MorgensSprengen:on set at01_Morgens.* active;;
define n01_MorgensSprengen_AUS notify d01_MorgensSprengen:off set at01_Morgens.* inactive;;

define n01_AbendsSprengen_EIN notify d01_AbendsSprengen:on set at01_Abends.* active;;
define n01_AbendsSprengen_AUS notify d01_AbendsSprengen:off set at01_Abends.* inactive;;

#################################################################################################### 01_ZEITPROGRAMME ENDE

attr d01_MorgensSprengen sortby 1
attr d01_AbendsSprengen sortby 2






EDIT:

Es hat sich viel getan.
Hier meine komplette Steuerung - Stand 18. Juli 2021

#################################################################################################### DEVICES

define schalter_Pumpe HMCCUCHN NEQxxxxxxx:2
attr schalter_Pumpe alias Pumpe

attr schalter_Pumpe webCmd ein:aus
attr schalter_Pumpe eventMap on:ein off:aus
attr schalter_Pumpe devStateIcon ein:sani_domestic_waterworks@5ECD3C aus:sani_domestic_waterworks@808080 .*:sani_domestic_waterworks@F19A38

attr schalter_Pumpe room BEWÄSSERUNG
attr schalter_Pumpe group 02_Kreise (manuelle Steuerung)



define schalter_Ventil1 HMCCUCHN QEQxxxxxxx:1
attr schalter_Ventil1 alias vorne + Seite

define schalter_Ventil2 HMCCUCHN QEQxxxxxxx:2
attr schalter_Ventil2 alias Hecke + Beet

define schalter_Ventil3 HMCCUCHN QEQxxxxxxx:3
attr schalter_Ventil3 alias hinten1

define schalter_Ventil4 HMCCUCHN QEQxxxxxxx:4
attr schalter_Ventil4 alias hinten2

attr schalter_Ventil.* webCmd ein:aus
attr schalter_Ventil.* eventMap on:ein off:aus
attr schalter_Ventil.* devStateIcon ein:sani_sprinkling@5ECD3C aus:sani_sprinkling@808080 .*:sani_sprinkling@F19A38

attr schalter_Ventil.* room BEWÄSSERUNG
attr schalter_Ventil.* group 02_Kreise (manuelle Steuerung)



#################################################################################################### SCHNELLZUGRIFFE

define dummy_Wasser_Anfeuchten dummy
attr dummy_Wasser_Anfeuchten alias Rasen anfeuchten (Nachsaat)

define dummy_Wasser_Zapf_EIN_30 dummy
attr dummy_Wasser_Zapf_EIN_30 alias Zapfstelle für 30 min. einschalten

define dummy_Wasser_SchnellSprengen dummy
attr dummy_Wasser_SchnellSprengen alias jetzt für 15 min. sprengen/wässern

attr dummy_Wasser_.* webCmd ein
attr dummy_Wasser_.* devStateIcon ein:time_timer@367BF6:ein .*:time_timer@F19A38

attr dummy_Wasser_.* room BEWÄSSERUNG
attr dummy_Wasser_.* group 00_Schnellzugriffe

define notify_Wasser_Anfeuchten notify dummy_Wasser_Anfeuchten:ein { fhem ("set schalter_Ventil.* off;; set schalter_Pumpe on-for-timer 900;; set schalter_Ventil1 on-for-timer 300;; sleep 300;; set schalter_Ventil3 on-for-timer 300;; sleep 300;; set schalter_Ventil4 on-for-timer 300;;") }
define notify_Wasser_Zapf_EIN_30 notify dummy_Wasser_Zapf_EIN_30:ein { fhem ("set schalter_Ventil.* off;; set schalter_Pumpe on-for-timer 1800;;") }
define notify_Wasser_SchnellSprengen notify dummy_Wasser_SchnellSprengen:ein { fhem ("set schalter_Ventil.* off;; set schalter_Pumpe on-for-timer 3600;; set schalter_Ventil4 on-for-timer 900;; sleep 900;; set schalter_Ventil3 on-for-timer 900;; sleep 900;; set schalter_Ventil1 on-for-timer 900;; sleep 900;; set schalter_Ventil2 on-for-timer 900;;") }



#################################################################################################### ZEITPLAENE

define at_BewaesserungAuto at *{(ReadingsVal('dummy_Bewaesserung_aktiv','start','19:19'))} { \
my $next = (ReadingsVal('dummy_Bewaesserung_next','state',''));; \
my $dauer_VorneSeite = (ReadingsVal('dummy_BewaesserungAuto_VorneSeite','state','') * 60);; \
my $dauer_Hinten1 = (ReadingsVal('dummy_BewaesserungAuto_Hinten1','state','') * 60);; \
my $dauer_Hinten2 = (ReadingsVal('dummy_BewaesserungAuto_Hinten2','state','') * 60);; \
my $dauer_HeckeBeet = (ReadingsVal('dummy_BewaesserungAuto_HeckeBeet','state','') * 60);; \
my $dauer_total = ($dauer_VorneSeite + $dauer_Hinten1 + $dauer_Hinten2 + $dauer_HeckeBeet);; \
if ($next eq 'heute') \
{ fhem (" \
set schalter_Pumpe off;; \
set schalter_Ventil.* off;; \
set dummy_Bewaess_lief on;; \
set schalter_Pumpe on-for-timer $dauer_total;; \
set schalter_Ventil4 on-for-timer $dauer_Hinten2;; \
sleep $dauer_Hinten2;; \
set schalter_Ventil3 on-for-timer $dauer_Hinten1;; \
sleep $dauer_Hinten1;; \
set schalter_Ventil1 on-for-timer $dauer_VorneSeite;; \
sleep $dauer_VorneSeite;; \
set schalter_Ventil2 on-for-timer $dauer_HeckeBeet;; \
")};;}

define at_Bewaesserung_next at +*01:00 { \
my $active = (ReadingsVal('dummy_Bewaesserung_aktiv','state',''));; \
my $tage = (ReadingsVal('dummy_Bewaesserung_aktiv','tage',''));; \
my $then = (ReadingsTimestamp('dummy_Bewaess_lief', 'state', ''));; \
my $next1 = (time_str2num($then) + $tage * 60 * 60 * 24);; \
my $next2 = strftime("%Y-%m-%d",localtime($next1));; \
my $now = (strftime("%Y-%m-%d",localtime(time)));; \
my $diff1 = (((((time_str2num($next2)) - (time_str2num($now))) / 60) / 60) / 24);; \
my $nextDay = (strftime('%A',localtime(time+3600*24*$diff1)));; \
if ($active eq 'on') { \
if ($diff1 <= 0) {fhem("set dummy_Bewaesserung_next heute;;")};; \
if ($diff1 == 1) {fhem("set dummy_Bewaesserung_next morgen;;")};; \
if ($diff1 == 2) {fhem("set dummy_Bewaesserung_next übermorgen;;")};; \
if ($diff1 >= 3) {fhem("set dummy_Bewaesserung_next $nextDay;;")};; } \
else { {fhem("set dummy_Bewaesserung_next -;;")} };; }

attr at_BewaesserungAuto computeAfterInit 1



#################################################################################################### ZEITPROGRAMME

define dummy_Bewaesserung_aktiv dummy
attr dummy_Bewaesserung_aktiv alias aktiv

defmod dummy_BewaesserungAuto_VorneSeite dummy
attr dummy_BewaesserungAuto_VorneSeite alias vorne + Seite

defmod dummy_BewaesserungAuto_Hinten1 dummy
attr dummy_BewaesserungAuto_Hinten1 alias hinten1

defmod dummy_BewaesserungAuto_Hinten2 dummy
attr dummy_BewaesserungAuto_Hinten2 alias hinten2

defmod dummy_BewaesserungAuto_HeckeBeet dummy
attr dummy_BewaesserungAuto_HeckeBeet alias Hecke + Beet

define dummy_Bewaess_lief dummy
define dummy_Bewaesserung_next dummy
attr dummy_Bewaesserung_next alias nächster Lauf



attr dummy_Bewaesserung_aktiv readingList state start tage
attr dummy_Bewaesserung_aktiv setList state:on,off \
start:19:00,19:30,20:00,20:30,21:00,21:30,22:00,22:30,23:00,01:00,01:30,02:00,02:30,03:00,03:30,04:00,04:30,05:00 \
tage:1,2,3,4,5,6,7

attr dummy_Bewaesserung_aktiv webCmd :start:tage
attr dummy_Bewaesserung_aktiv webCmdLabel :Start:Tage
attr dummy_Bewaesserung_aktiv devStateIcon on:ios-on-green:off off:ios-off:on .*:ios-NACK:off

define notify_Bewaesserung_aktiv_EIN notify dummy_Bewaesserung_aktiv.on { fhem ("set at_BewaesserungAuto active") }
define notify_Bewaesserung_aktiv_AUS notify dummy_Bewaesserung_aktiv.off { fhem ("set at_BewaesserungAuto inactive") }
define notify_Bewaesserung_aktiv notify dummy_Bewaesserung_aktiv { \
fhem ("set at_BewaesserungAuto modifyTimeSpec {(ReadingsVal('dummy_Bewaesserung_aktiv','start',''))};; set at_Bewaesserung_next execNow;;") }



attr dummy_BewaesserungAuto_.* readingList state
attr dummy_BewaesserungAuto_.* setList state:15,30,45,60,90

attr dummy_BewaesserungAuto_.* webCmd state
attr dummy_BewaesserungAuto_.* webCmdLabel Dauer

attr dummy_BewaesserungAuto_.* stateFormat state min.

attr dummy_Bewaesserung.* room BEWÄSSERUNG
attr dummy_Bewaesserung.* group 01_Zeitprogramme (autom. sprengen/wässern)



#################################################################################################### SORT

attr dummy_Wasser_Zapf_EIN_30 sortby 1
attr dummy_Wasser_SchnellSprengen sortby 2
attr dummy_Wasser_Anfeuchten sortby 3

attr schalter_Pumpe sortby 1
attr schalter_Ventil1 sortby 2
attr schalter_Ventil3 sortby 3
attr schalter_Ventil4 sortby 4
attr schalter_Ventil2 sortby 5

attr dummy_Bewaesserung_aktiv sortby 1
attr dummy_Bewaesserung_next sortby 2
attr dummy_BewaesserungAuto_VorneSeite sortby 3
attr dummy_BewaesserungAuto_Hinten1 sortby 4
attr dummy_BewaesserungAuto_Hinten2 sortby 5
attr dummy_BewaesserungAuto_HeckeBeet sortby 6



#################################################################################################### TASTER

define PB61_5 HMCCUCHN OEQxxxxxxx:5
define notify_PB61_5_SHORT notify PB61:5.PRESS_SHORT.* { fhem ("set schalter_Ventil.* off;; set schalter_Pumpe on;;") }
define notify_PB61_5_LONG notify PB61:5.PRESS_LONG.* { fhem ("set schalter_Ventil.* off;; set schalter_Pumpe off;;") }

Beta-User

Na dann mal wilkommen zurück.

Normalerweise bekommt man eine Benachrichtigung, bevor man als User gelöscht wird und muss sich dann nur wieder einmalig anmelden, dann hat man längere Zeit wieder Ruhe (ein Jahr oder so).

Mehrere Schaltvorgänge kann man schon "miteinander" raushauen, kein Problem, siehe https://fhem.de/commandref_modular.html#command:
ZitatMultiple FHEM commands are separated by semicolon (;). In order to use semicolon in perl code or shell programs, they have to be escaped by the double semicolon (;;). See the Notes section of the notify chapter on command parameters and escape rules.

Das notify-Thema ist ein Anfängerthema, aber das würde ich erst mal hintanstellen, denn:

- Das mit "Connection lost" etc. klingt aber nach einem Homematic-Spezifischen Problem, von daher würde ich empfehlen, den Thread dahin zu verschieben oder dort einen neuen aufzumachen, um diesen Aspekt zu beleuchten. "list"-Auszüge von einem der Devices und dem betreffenden IO (und der VCCU, falls es eine gibt) solltest du aber beifügen;
- Bei HM gibt es auch die Möglichkeit, interne Abhängigkeiten im Aktor selbst festzulegen. Da du scheinbar immer nur einen Kanal von einem 4-Kanaligen Aktor "on" haben willst/musst, wäre die beste Variante, das direkt dort zu erledigen. Dazu muss man - so das überhaupt machbar ist - Registerwerte bearbeiten. Hilfe dafür findest du aber (ggf. in einem gesonderten Thread) eher direkt bei den Homematic-Spezialisten.

(Hoffe, das ist verständlich...)
Und noch eine OT-Anmerkung: fhem.cfg-Auszüge will hier heutzutage keiner mehr sehen. "list" oder "list -r" sind deutlich aufschlussreicher, und der Verdacht kommt dann auch nicht auf, du würdest die cfg direkt bearbeiten...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Otto123

Hi,

die Beschreibung von 2 klingt nach einem Loop - schau am Besten mal Eventmonitor was da passiert.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MadMax-FHEM

Klingt ein wenig wie das hier: https://forum.fhem.de/index.php/topic,115191.msg1094530.html#msg1094530
EDIT: hier halt mit 4 Geräten ;)

@Otto: das habe ich mir auch gedacht...

Evtl. ist mit "connection lost" die "Anzeige" im Browser gemeint... Also so ein "Popup"... Das würde dann evtl. zu "langsam" und "Schleife" passen ;)

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)

Otto123

#4
Vorschlag zur Lösung:
Komplettes Szenario zum Testen:
define Aktor1 dummy
define Aktor2 dummy
define Aktor3 dummy
define Aktor4 dummy
attr Aktor. room Test
define n_Aktorx notify Aktor.:on set Aktor.:FILTER=NAME!=$NAME {(("$EVENT" eq 'on')?'off':'on')}
attr n_Aktorx disabledAfterTrigger 1
attr n_Aktorx room Test

Das notify reagiert auf jeden AktorX aber nur auf on! Damit es nicht auf sich selbst reagiert wird es 1 Sekunde pausiert!
Das devSpec Aktor.:FILTER=NAME!=$NAME ergibt alle AktorX außer den Auslöser
Der set magic {Perl} Code macht aus dem Event on ein off (geht vielleicht auch anders?) bzw. Ich hatte an: aus on mach off und aus off mach on gedacht. Wenn die Gegenrichtung nicht gebraucht wird: ersetze den kompletten Ausdruck durch off!

defmod n_Aktorx notify Aktor.:on set Aktor.:FILTER=NAME!=$NAME off

Edit: Sorry, ich habe mir durch die komische Darstellung (Lücke in dem Code) heut nachmittag gar nicht alles angeschaut und nicht weiter gescrollt - nicht gesehen -
Aber ich denke durch meine Idee sparst Du eine Menge: Du hast nur die Ventile, keine Dummies und nur ein notify welches Deine Aufgabe erfüllt. Vielleicht benennst Du die Ventile um, da wird das devSpec einfacher. Mit Deinen Namen wird es unnötig kompliziert ;)

Gruß Otto 
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

remo

Vielen lieben Dank für eurer Rückmeldungen. Das ist erstmal etwas Stoff zum Ansetzten. Ich werde das die Tage mal ausprobieren, wobei ich noch ein paar Verständnisprobleme habe ...

Otto123

Zitat von: remo am 05 Dezember 2020, 14:04:40
wobei ich noch ein paar Verständnisprobleme habe ...
frag ruhig ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

remo

Komme ich drauf zurück. Aber ich versuche es erstmal alleine  :D

remo

Vielen lieben Dank für die Anregungen.

Otto, ich habe später soetwas vor wie

set vorneSprengen on-for-timer 900

Mittlerweile erscheint mir dein Vorschlag schlüssig, auch wenn ich ihn noch nicht testen konnte.
Aber ob mit deinem Vorschlag ein on-for-timer möglich ist, erkenne ich auf den ersten und zweiten Blick leider nicht...

Liebe Grüße und einen schönen zweiten Advent!

Otto123

#9
Ja: weil on-for-timer am Ende auch bloß den on Event liefert (gilt für CUL_HM Geräte)
schau dir im Event Monitor an:
Zitat2020-12-05 18:11:08 CUL_HM SD3 commState: CMDs_pending
2020-12-05 18:11:08 CUL_HM SD3 set_on-for-timer 4
2020-12-05 18:11:08 CUL_HM SD3 commState: CMDs_done
2020-12-05 18:11:08 CUL_HM SD3 deviceMsg: on (to VCCU)
2020-12-05 18:11:08 CUL_HM SD3 level: 100
2020-12-05 18:11:08 CUL_HM SD3 pct: 100
2020-12-05 18:11:08 CUL_HM SD3 on
2020-12-05 18:11:08 CUL_HM SD3 timedOn: running
2020-12-05 18:11:14 CUL_HM SD3 deviceMsg: off (to broadcast)
2020-12-05 18:11:14 CUL_HM SD3 level: 0
2020-12-05 18:11:14 CUL_HM SD3 pct: 0
2020-12-05 18:11:14 CUL_HM SD3 off
2020-12-05 18:11:14 CUL_HM SD3 timedOn: off

Auf den Event reagiert das notify
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

remo

Ok. Vielleicht schaffe ich morgen Vormittag mal deine Vorschläge zu testen. Danke dir.

remo

ZitatVorschlag zur Lösung:
Komplettes Szenario zum Testen:

Damit komme ich irgendwie nicht weiter...
Ich kann weder Aktor1-4 noch den Notify n_Aktorx schalten ...

Otto123

Naja das notify schaltest nicht Du (ich befürchte immer in deinen Worten Du hast das  vor) das notify reagiert auf Evnets.

Du hast das so definiert wie oben in meinem Code? Dann machst du set Aktor1 on und nichts passiert?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

remo

ZitatDann machst du set Aktor1 on und nichts passiert?

Sorry, doch. Funktioniert.

set Aktor<#> on

schaltet den entspr. Dummy und alle anderen aus!
So wie es sein soll.

Ich konnte den Code auch schon so anpassen, dass keine Dummys sondern die tatsächlichen Aktoren schalten.

mit

set ventil<KREIS> on


funktioniert es zumindest manuell über das Eingabefeld in FHEM.

Jetzt würde ich das gerne mit webCmd, eventMap und devStateIcon realisieren.

remo

#14
ZitatJetzt würde ich das gerne mit webCmd, eventMap und devStateIcon realisieren.

Geht ja schon über die Ventile selbst!

Edit: soweit, so gut!

Vielen Dank bis dahin!


Ventile schalten ist super - klappt auch.

Zwei weitere Baustellen zu diesem Thema:

1. bei einem Klick auf zB "ventilSeite", soll zusätzlich im Anschluss ein weiterer Aktor geschaltet werden (die Pumpe)
2. ein on-for-timer für zB "ventilHinten1 on" und "Pumpe on" möchte ich mir gerne auch noch basteln.