[Anleitung] - Sonoff T1 EU - Rollosteuerung mit Modul 44_ROLLO

Begonnen von 87insane, 04 Juli 2018, 16:08:34

Vorheriges Thema - Nächstes Thema

87insane

EDIT: Neue und bessere Version mit Tasmota hier: https://forum.fhem.de/index.php/topic,98366.msg917091.html#msg917091
Nach wie vor geht es auch mit ESPeasy - ABER die Schalter starten sporadisch neu. Das finde ich persönlich schlecht. Hinzu wird bei der
Tasmota Version kein 44er ROLLO Modul benötigt.


Hi zusammen,

nach etwas rum basteln habe ich schon einiges hin bekommen. Ich nutze die oben genannten Schalter (2 Gang) um meine Rolladen zu steuern.

Anbei eine Liste, wie ich dies getan habe. Dies wird noch weiter ausgearbeitet sobald ich Zeit habe:
1. Schalter umflashen auf ESPeasy. Per WLAN oder seriell
2. SONOFF Schalter einstellen (Rules, GPIOs usw.)
3. Jeweiligen Schalter in FHEM einbinden
4. Modul 44_ROLLO für diese Schalter einrichten und steuern




1. Schalter umflashen auf ESPeasy. Per WLAN oder seriell
Hierzu gibt es diverse Anleitungen im Netz und es ist wirklich sehr einfach.
Beide Flash-Möglichkeiten liefen bei mir ohne Probleme. Die Grundkonfiguration
ist auch in den meisten Anleitungen gut erklärt. Wenn gewünscht, werde
ich diese aber auch mit aufnehmen.


2. SONOFF Schalter einstellen (Rules, GPIOs usw. folgen noch)
Nachdem nun die Grundkonfiguration abgeschlossen wurde, können wir damit beginnen
die Geräte an zu legen und richtig zu benamen um eine bessere Übersicht zu bekommen.
Screenshot unten: az_rollo_devices_dashboard.jpg
Danach können wir die Rule Sets anlegen.

Variante 1 (Hin und her togglen mit Delay wenn Motor in die andere Richtung geschaltet wird / Besser für den Motor)
In dieser Variante wird bei einem Druck auf die "Gegnerische Taste" ein Delay auf die Relays gelegt. In dem Beispiel wird ein Bedienen erst nach zwei Sekunden wieder möglich. Hinzu bleibt der Motor bei Druck auf beiden Tasten stehen.
Set 1: (ESPeasy bis 10/18 - In Beitrag zwei mehr dazu.. https://forum.fhem.de/index.php/topic,89136.msg821548.html#msg821548)
on rollo_hoch#taste_hoch do
if [rollo_hoch#strom_output_hoch]=1
  gpio,12,0
else
if [rollo_runter#strom_output_runter]=1
  gpio,5,0
  delay 2000
if [rollo_runter#strom_output_runter]=0
  gpio,12,1
endif
endon


Set 2: (ESPeasy bis 10/18 - In Beitrag zwei mehr dazu.. https://forum.fhem.de/index.php/topic,89136.msg821548.html#msg821548)
on rollo_runter#taste_runter do
if [rollo_runter#strom_output_runter]=1
   gpio,5,0
else
if [rollo_hoch#strom_output_hoch]=1
    gpio,12,0
    delay 2000
if [rollo_hoch#strom_output_hoch]=0
   gpio,5,1
endif
endOn


Variante 2 (Simples hin und her togglen wenn Motor in die andere Richtung geschaltet wird)
In dieser Variante wird beim Druck auf die "Gegnerische Taste" einfach getoggelt. Ohne Stop oder Delay.
Set 1:
on Rollo_Runter#Key do         // Wenn GPIO 9 (Rollo runter Taste gedrückt wird)
if [Rollo_Runter#Relay]=1 // Wenn das Relay Rollo runter (GPIO 5) aktiv ist
  gpio,5,0         // Schalte GPIO 5 (Relay Rollo runter) aus
else         // Sonst
  gpio,12,0                 // GPIO 12 ausschalten (Rollo hoch Relay)
  gpio,5,1         // GPIO 5 einschalten (Relay Rollo runter)
endif
endon


Set 2:
on Rollo_Hoch#Key do         // Wenn GPIO 9 (Rollo hoch Taste gedrückt wird)
if [Rollo_Hoch#Relay]=1 // Wenn das Relay Rollo hoch (GPIO 5) aktiv ist
  gpio,12,0         // Schalte GPIO 12 (Relay Rollo hoch) aus
else         // Sonst
  gpio,5,0                 // GPIO 5 ausschalten (Rollo runter Relay)
  gpio,12,1         // GPIO 12 einschalten (Relay Rollo hoch)
endif
endon


Set 3: (Bei beiden Varianten gleich)
on Rollo_Runter#Relay=1 do         // Wenn das Relay für Rollo runter (GPIO 5) aktiv ist
timerset,1,20                 // Setze einen 20 Sekunden Timer (So lange brauchen meine Rollos bis diese unten sind)
endOn
on Rollo_Hoch#Relay=1 do         // Wenn das Relay für Rollo hoch (GPIO 12) aktiv ist
timerset,1,20         // Setze einen 20 Sekunden Timer (So lange brauchen meine Rollos bis diese oben sind)
endOn
On Rules#Timer=1 do         // Wenn die Timer Regel von Timer 1 zutrifft bzw. der Timer abgelaufen ist
gpio,5,0         // GPIO 5 ausschalten (Relay Rollo runter)
gpio,12,0         // GPIO 12 ausschalten (Relay Rollo hoch)
endOn




3. Jeweiligen Schalter in FHEM einbinden
Dies geschieht wie mit fast allen Dingen relativ einfach über Autocreate.
Bevor diese aber rein laufen, müsst ihr euch die Bridge (define espBridge ESPEasy bridge 8383) anlegen.
Ich persönlich aktiviere als Attribut zur Bridge gerne attr espBridge combineDevices 1, wegen der Übersichtlichkeit.
Bei mir sieht ein Gerät dann z.B. so aus:
# Arbeitszimmer Rollo
define ESPEasy_az_rollo ESPEasy 192.168.20.30 80 espBridge az_rollo
attr ESPEasy_az_rollo IODev espBridge
attr ESPEasy_az_rollo Interval 300
attr ESPEasy_az_rollo group ESPEasy Device
attr ESPEasy_az_rollo presenceCheck 1
attr ESPEasy_az_rollo readingSwitchText 1
attr ESPEasy_az_rollo room ESPEasy
attr ESPEasy_az_rollo setState 3



4. Modul 44_ROLLO für diese Schalter einrichten und steuern
Dieses Modul müsst ihr euch manuell herunterladen bzw. installieren.
Am besten einfach dem Wiki folgen....

Am besten einfach dem Wiki folgen.... ;)
https://wiki.fhem.de/wiki/ROLLO

Danach können wir uns ein Gerät anlegen um z.B. das o.g. Rollo zu steuern (define az_rollo ROLLO).
In diesem Device müsst ihr die GPIOs hinterlegen zum auf und ab fahren (Update 21.01.2019 - Siehe Beitrag 2) und natürlich die Zeiten,
die eure Rolläden beim hoch/runter fahren benötigen. Das ganze sieht dann bei mir z.B. so aus:
define az_rollo ROLLO
attr az_rollo autoStop 0
attr az_rollo commandDown set ESPEasy_az_rollo gpio 5 1
attr az_rollo commandStopDown set ESPEasy_az_rollo gpio 5 0
attr az_rollo commandStopUp set ESPEasy_az_rollo gpio 12 0
attr az_rollo commandUp set ESPEasy_az_rollo gpio 12 1
attr az_rollo devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100:open half:fts_shutter_50:closed drive-up:fts_shutter_up@red:stop drive-down:fts_shutter_down@red:stop pct-100:fts_shutter_100:open pct-90:fts_shutter_80:closed pct-80:fts_shutter_80:closed pct-70:fts_shutter_70:closed pct-60:fts_shutter_60:closed pct-50:fts_shutter_50:closed pct-40:fts_shutter_40:open pct-30:fts_shutter_30:open pct-20:fts_shutter_20:open pct-10:fts_shutter_10:open pct-0:fts_shutter_10:closed
attr az_rollo excessBottom 2
attr az_rollo excessTop 4
attr az_rollo resetTime 0
attr az_rollo room ESPEasy
attr az_rollo secondsDown 16,44
attr az_rollo secondsUp 18
attr az_rollo switchTime 1
attr az_rollo type normal
attr az_rollo webCmd open:closed:half:stop:pct


Damit das Modul aber auch den physikalischen Tastendruck mitbekommen kann, müssen wir die Events abfangen und dem Modul übermitteln.
Die umgeflashten Sonoff-Schalter senden brav alles an FHEM.

Original aus dem 44_ROLLO.pm Wiki https://wiki.fhem.de/wiki/ROLLO#Zusammenspiel_mit_externem_Taster
In meinen Augen besser, da alle Rollos auf einmal mitbekommen was passiert: https://forum.fhem.de/index.php/topic,89136.msg895247.html#msg895247
!- (Natürlich müssen die Suchkriterien (ESPEasy_.*_rollo:strom_output_(runter|hoch):.*), ggf. die Kürzung von ESPEasy_ und das Value des Schalters (strom_output_hoch:) auf eure angepasst werden) -!


define rollos_manuell notify ESPEasy_.*_rollo:strom_output_(runter|hoch):.* {\\
my $richtung = '';;\
my $zustand = '';;\
my $geraet = $NAME;;\
$geraet =~ s/^ESPEasy_//;;\
\
if ($EVTPART0 eq "strom_output_hoch:") {\
  $richtung = "drive-up";;\
  $zustand = "open";;\
}\
if ($EVTPART0 eq "strom_output_runter:") {\
  $richtung = "drive-down";;\
  $zustand = "closed";;\
}\
\
if ($EVTPART1 eq "on" && Value("$geraet") ne "$richtung") {\
  fhem("set $geraet extern $zustand");;\
}\
elsif ($EVTPART1 eq "off" && Value("$geraet") eq "$richtung") {\
  fhem("set $geraet extern stop");;\
}\
}



Am Ende sollte es möglich sein mit den Tastern aber auch über das Modul, die Rolladen zu schalten.
Ich bin leider noch nicht mit allem fertig und Screenshots kommen auch noch.

Bitte sagt mir bescheid, falls etwas, in euren Augen fehlt oder noch Fragen offen sind.
Danke und viel Spaß beim basteln :)

MfG,
Kai

87insane

#1
Update vom 25.01.2019:

- Anpassung des Codes: notify für Übermittlung externer Taster -> FHEM -> ROLLO Modul. Es werden nun alle Rollos mit nur einem notify gesteuert. Anstelle von zweien pro Rollo.


Update vom 21.01.2019:

- Zu Punk 2) Rules wegen ESPeasy Firmware Anpassungen geändert. Hier muss nur ein zusätzliches "else" rein, sonst läuft das leider nicht mehr.
Bis ESPeasy bis 10/18 (alt):
on rollo_hoch#taste_hoch do
if [rollo_hoch#strom_output_hoch]=1
  gpio,12,0
else
if [rollo_runter#strom_output_runter]=1
  gpio,5,0
  delay 2000
if [rollo_runter#strom_output_runter]=0
  gpio,12,1
endif
endon


Ab ESPeasy 11/18 (neu):
on rollo_hoch#taste_hoch do
if [rollo_hoch#strom_output_hoch]=1
  gpio,12,0
else
if [rollo_runter#strom_output_runter]=1
  gpio,5,0
  delay 2000
else
if [rollo_runter#strom_output_runter]=0
  gpio,12,1
endif
endon


- Zu Punkt 4) Steuerung aus FHEM nicht mehr mit GPIOs sondern mit EVENTS. Dies hat den Vorteil, dass im Sonoff Schalter die entsprechende Rule für den jeweiligen Taster geprüft wird. So spart man sich das abfangen von "gegnerischen" Tasten. Mit den Rules sind die Relays Software-Seitig gegeneinander verriegelt.
attr wz_rollo rl_commandDown set ESPEasy_wz_rollo event taste_runter#taste_runter
attr wz_rollo rl_commandStopDown set ESPEasy_wz_rollo event taste_runter#taste_runter
attr wz_rollo rl_commandStopUp set ESPEasy_wz_rollo event taste_hoch#taste_hoch
attr wz_rollo rl_commandUp set ESPEasy_wz_rollo event taste_hoch#taste_hoch



Frank_Huber

Uuuuhhhh, das birgt die Gefahr dass evtl mal warum auch immer beide Relais schalten und der Motor durchbrennt weil beide Richtungenbestromt werden.
in deinem Setup würde es reichen beide Taster zu drücken.

Besser:
Releis 1 Strom an/aus
Relais 2: auf/ab

also:
Rollo hoch: beide Relais
Rollo runter: Relais 1

87insane

#3
Verstehe nicht wie das sein kann....

Aktuell toggelt er hin und her sobald der andere Taster gedrückt wird.
Schalter A an
Schalter B aus

Druck auf B und der zustand invertiert sich.

Hab aber gerade so oder so einen Test drin, der dafür sorgt das ich einen delay zwischen den beiden habe.
Bei meinen GIRAS zb sind es zwei Sekunden in denen man dann nichts drücken kann.

Soll also am Ende so sein, dass ich einen Schalter nutze, z.B. A und wenn ich dann auf B drücke, bleibt das Rollo stehen.
Nach z.B. zwei Sekunden hat man dann auch erst wieder Zugriff auf die Taster bzw. können diese erst wieder betätigt werden.
Beide gleichzeitig drücken geht aber definitiv nicht. Man könnte aktuell höchstens xxxx mal hin und her toggeln und den Motor
in die Luft jagen....


PS: Dein Beispiel verstehe ich leider nicht so ganz. Versuche mir das gerade vor zustellen. Dein Besser + Also. Kann man das umschreiben?

Frank_Huber

OK, das mit den Tastern gegenseitig sperren habe ich dann übersehen.
aber lass alleine mal ein Relais kleben oder den ESP spinnen.

Ich meine so eine Schaltung: http://forum.creationx.de/index.php?attachment/440-rollomotor-jpg/
Hier kann es nie passieren dass beide Fahrtrichtungen bestromt werden.

87insane

Hmmm... Wüsste nicht wie ich es hiermit realisieren könnte. An das verkleben von einem der Relays habe ich nicht gedacht.
https://opencircuit.shop/ContentImage/119117/crop/900-600/Sonoff-T1-EU-2-kanaals-WiFi-RF-Glazen-Touchpanel-met-led.jpg

In "deiner" Schaltung müsste ich ja immer z.B. A drücken und das Ding läuft los. Zum Richtungswechsel dann B drücken, richtig verstanden?

Frank_Huber

Ja, da müsste dann noch ein 230V Wechsler Relais dahinter. kann zur Not ja auch beim Rollo sein.

Die Änderung würdest in den Rules machen oder im notify/doif.
hoch: nur gpio5
runter: gpio 5 und 12.

Ich stand 2016 vor der gleichen Frage, allerdings mit hardwired Relais.
mir wurde dringend empfohlen das beidseitige bestromen zu verhindern.


87insane

Mal ganz doof gefragt... Wie machen es denn die normalen (bereits fertigen) z.B. meine Gira Schalter?
Die sind doch auch in beide Richtungen bestromt, oder ist es da anders?

Frank_Huber

gibt mehrere Varianten der Verdrahtung.
aber die sind IMHO immer hardware seitig verriegelt.

carl-christoph

DIe Sonoffs erobern die Rolladensteuerung...
Ich bin auch gerade dabei meine Rolladen mittels eines Sonoff Dual steuerbar zu machen.
Ich nutze für Tests bisher die Tasmota-FW mit gegenseitiger Sperrung der Relais in der FW (setOption 14).
Ansteuerung aus FHEM mittels ROLLO-Modul klappt bisher sehr zuverlässig. Sperrzeit für Richtungswechsel, Ablaufzeit, etc. mache ich bisher ausschließlich über FHEM, da keine Steuerung direkt über den Sonoff vorgesehen ist. Dementsprechend auch keine Berechnung in fhem, wenn manuell gefahren würde.

Es gibt einen Fork der Tasmota-FW, der eine erweiterte Unterstützung für Rolläden mitbringt. Habe ich mir noch nicht weiter angeschaut, inwieweit es sinnvoll ist, Logik aus FHEM in den einzelnen Rolladentreiber auszulagern.

Bei Standard-Schaltern/Tastern ohne Komfortfunktionen (Zeitschaltuhr, etc) ist ja durch den mechanischen Aufbau verhindert, dass beide Richtungen gleichzeitig bedient werden können. Ich habe an diversen Stellen gelesen, dass in Deutschland/in der EU nicht zulässig ist, dass die Sperrfunktion alleine in der Software implementiert ist. Besser sind wohl eine H-Brücke (zwei Wechsler-Relais) oder die Kombination von einem Wechsler-Relais (Richtungswahl) und einem Schließer-Relais.
In wieweit das tatsächlich immer so umgesetzt wird kann ich nicht sagen, zumal mir vor einigen Jahren mal eine günstige elektronische Steuereinheit der Fa. Jarolift direkt nach dem Einbau Spannung auf beide Ausgänge gelegt hat. Habe damals blöderweise nicht aufgeschraubt und nachgeschaut, wie die Schaltung umgesetzt ist. Könnte natürlich auch ein Kurzschluss auf der Platine gewesen sein.

Ich wollte mir nun für meine Lösung preiswerte Trennrelais (8€) dazukaufen. Diese verhindern dann, zwischen Relais-Ausgänge des Sonoff und Rohrmotor geschaltet, dass soetwas passiert. Und für den Preis fange ich nicht an, auf einem Sonoff die Relais zu tauschen oder selber Boards zu bauen. Da verdrahte ich lieber bequem das fertige kleine Trennrelais zusätlich im Rolladenkasten.

Für mich hätten sie mit dem Sonoff Dual noch einen weiteren Vorteil: Ich möchte eigentlich keine Bedienschalter direkt an den Fenstern installieren, wie es oft standardmäßig gemacht wird. Ich finde es viel sinnvoller, vorallem in Räumen mit mehreren Fenstern, wenn die Rolläden von einer zentralen Stelle aus (Lichtschalter) oder über mobile Geräte gesteuert werden können (so dies denn nicht durch eine Automatik geschieht). Der alte Impuls, zu den jeweiligen Fenstern zu laufen, um den Rolladen herunterzulassen zerstört für mich zum größten Teil wieder den Komfortgewinn, den ich mir durch die Technik verschafft habe. Andererseits schließen sich die verschiedenen Möglichkeiten ja auch nicht aus. Aber ich fange halt lieber an, eine Fernbedienung oder mein Handy zu suchen, wenn ich das Rollo öffnen möchte ;).
Mit dem Trennrelais kann ich dann an den zweiten Steuereingang trotzdem einen billigen mechanischen Taster zusätzlich montieren, der zwar nicht in die Steuerung integriert ist, dafür dann aber auch autark funktioniert, wenn der Sonoff mal stirbt oder kaputt konfiguriert ist. Der Schalter wird dementsprechend auch nicht UP oder AP in die Massivbauwand gesetzt, sondern, für den Notfall immernoch gut erreichbar aber sehr unauffällig, seitlich in den Rolladenkasten. Natürlich kann man streiten, ob das wirklich ein Szenario ist, dass man bedenken muss, und wenn ja, ob man dann nicht gleich richtige Bedienschalter setzen kann. Ich lege halt, wie schon geschrieben, keinen Wert auf die normale Steuerung am Fenster, für mich zählt allein die Zusatzfunktionalität Steuerung bei Ausfall der Elektronik.

Ich plane jedenfalls, mir in den nächsten Tagen/Wochen mal alles Nötige für einen Testaufbau zu besorgen und könnte dann berichten. Ich war sehr erleichtert, als ich auf die einfache Lösung mit den Trennrelais gestoßen bin, um das ganze ordentlich und einigermaßen regelkonform umzusetzen und hoffe nun, dass das auch so funktioniert.

Gruß
cc

Ralf9

Zitatgibt mehrere Varianten der Verdrahtung.
aber die sind IMHO immer hardware seitig verriegelt.

Ich bevorzuge diese Variante:
https://wiki.fhem.de/w/images/9/99/Relais-Schaltung_FBH-Mischer_attr_einzel.jpg
damit ist die Relaisansteuerung einfacher.

Dieses Prinzip wird auch beim Jung Schalter verwendet.
https://downloads.jung.de/public/de/pdf/datenblaetter/de_509vu.pdf

Gruß Ralf
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

87insane

Hey - Hab oben mal eine bessere Variante gepostet. Diese ist in meinen Augen die bessere SW Lösung. Allerdings verhindert diese natürlich nicht das Kleben von Relays.
(Neue Variante = Variante 1 bei den Sets und die alte ist Variante 2. Set 3 bleibt gleich. Dieses nutze ich als einen NOTAUS wenn mal alle Stricke reißen FHEM Seitig.)

Tedious

@TE: Du wolltest noch Bilder folgen lassen. Kannst Du mir aufzeigen wo genau die Rules definiert werden? Liebäugele auch mit der Lösung...
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

87insane

Hi,

welche Infos benötigst du genau? Da in der ESP FW gerade vieles umgestellt wird, wollte ich da nicht etwas "falsches" posten.
Für den Zweck reicht aber auch die, die ich genommen hatte... Ist vom 11.07.1018.

Die Rules definiert man im Webfrontend des Schalters. Hierbei hatte ich die Rules so angepasst, dass die Relays Software-Seitig gegeneinander verriegeln. Ansonsten könnte man im schlimmsten Fall zwei Richtungen ansteuern und den Motor beschädigen.

Tedious

Danke für die Infos. Denn werd ich mal einen zum testen bestellen ;)
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

87insane

Hab noch drei oder vier zuhause. EU/UK Varianten. Unterscheiden sich nur vom Einbaurahmen. EU = runde Rückseite, UK = eckige Rückseite.
Wenn du Interesse hast....

Bei weiteren Fragen oder aber Verbesserungen oder Wünschen, einfach melden :)

Werde bei Zeit auch mal einen Schalter so nachbauen, dass er reagiert wie ein originaler Gira Schalter. Da ich diese vorher verbaut hatte, ist das sonst natürlich Umgewöhnung. Zudem hat ja jeder andere Vorlieben. Die neuen ESPeasy Firmwares unterstützen von Werk aus z.B. doppelten Tastendruck oder aber langen Tastendruck.

Gestern habe ich das alles in meine Alexa-Fhem Integration eingebunden. Alexa denkt zwar das seie eine Glühbirne, was aber egal ist, da man das Rollo so mit % Angaben steuern kann. Das ist für mich sogar perfekt.

Tedious

Ich hatte überall Vestamatic Rolltec verbaut (waren schon beim Kauf im Haus). Im Wohnbereich habe ich überall HM verbaut, das funktioniert auch tadellos. Habe aber in ein paar Zimmern (z.B. Bad und Büro) noch welche, und bei denen ist mir HM zu teuer (gehen automatisch zeitgesteuert, hab ich noch nie drauf gedrückt). Da wäre diese Lösung ausreichend, ansprechend und günstig.
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

87insane

Wohl wahr!

Allerdings immer daran denken - Die Sonoff Schalter passen nicht in z.B. Jäger Busch oder Gira Einbaurahmen. Im Bad hab ich z.B. noch zwei Steckdosen direkt in einem dreier-Verbund mit dem Rolladen Schalter. Da kann ich keinen Sonoff T1 verbauen. Die anderen sind alle separat und da geht es natürlich. Interessanter Weise finden die Leute die Sonoff Schalter alle sehr schön und edel. An allen Stellen, an denen man kein Feedback durch den Schalter benötigt, ist das super. Habe aber auch stellen an denen ich es mag den Schalter zu spüren - Da muss ich mir für die Sonoffs noch etwas einfallen lassen.

Tedious

Die sitzen alle alleine am Fenster in einer tiefen UP Dose - ist also unproblematisch.
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

87insane

#19
Guten Morgen zusammen,

habe ein kleines Update gepostet am Anfang (Beitrag 2).

Habe aber auch eine Frage. Aktuell habe ich für die Übergabe der Rollo Positionen ein notify. Dieses ist aber für jedes Rollo und jeweils auf/ab einzeln. Ich hätte lieber eins für alle, wenn so was geht. Hat einer der Hardcore-Fhem-Admins eine Idee? Anbei, wie es aktuell ist:

define az_rollo_manuell_ab notify ESPEasy_az_rollo:strom_output_runter:.* {\
if ($EVTPART1 eq "on" && Value("az_rollo") ne "drive-down") {\
  fhem("set az_rollo extern closed");;;;\
}\
elsif ($EVTPART1 eq "off" && Value("az_rollo") eq "drive-down") {\
  fhem("set az_rollo extern stop");;;;\
}\
}

define az_rollo_manuell_auf notify ESPEasy_az_rollo:strom_output_hoch:.* {\
if ($EVTPART1 eq "on" && Value("az_rollo") ne "drive-up") {\
  fhem("set az_rollo extern open");;;;\
}\
elsif ($EVTPART1 eq "off" && Value("az_rollo") eq "drive-up") {\
  fhem("set az_rollo extern stop");;;;\
}\
}


define sz_rollo_manuell_ab notify ESPEasy_sz_rollo:strom_output_runter:.* {\
if ($EVTPART1 eq "on" && Value("sz_rollo") ne "drive-down") {\
  fhem("set sz_rollo extern closed");;;;\
}\
elsif ($EVTPART1 eq "off" && Value("sz_rollo") eq "drive-down") {\
  fhem("set sz_rollo extern stop");;;;\
}\
}

define sz_rollo_manuell_auf notify ESPEasy_sz_rollo:strom_output_hoch:.* {\
if ($EVTPART1 eq "on" && Value("sz_rollo") ne "drive-up") {\
  fhem("set sz_rollo extern open");;;;\
}\
elsif ($EVTPART1 eq "off" && Value("sz_rollo") eq "drive-up") {\
  fhem("set sz_rollo extern stop");;;;\
}\
}


define wz_rollo_manuell_ab notify ESPEasy_wz_rollo:strom_output_runter:.* {\
if ($EVTPART1 eq "on" && Value("wz_rollo") ne "drive-down") {\
  fhem("set wz_rollo extern closed");;;;\
}\
elsif ($EVTPART1 eq "off" && Value("wz_rollo") eq "drive-down") {\
  fhem("set wz_rollo extern stop");;;;\
}\
}

define wz_rollo_manuell_auf notify ESPEasy_wz_rollo:strom_output_hoch:.* {\
if ($EVTPART1 eq "on" && Value("wz_rollo") ne "drive-up") {\
  fhem("set wz_rollo extern open");;;;\
}\
elsif ($EVTPART1 eq "off" && Value("wz_rollo") eq "drive-up") {\
  fhem("set wz_rollo extern stop");;;;\
}\
}


define k_rollo_manuell_ab notify ESPEasy_k_rollo:strom_output_runter:.* {\
if ($EVTPART1 eq "on" && Value("k_rollo") ne "drive-down") {\
  fhem("set k_rollo extern closed");;;;\
}\
elsif ($EVTPART1 eq "off" && Value("k_rollo") eq "drive-down") {\
  fhem("set k_rollo extern stop");;;;\
}\
}

define k_rollo_manuell_auf notify ESPEasy_k_rollo:strom_output_hoch:.* {\
if ($EVTPART1 eq "on" && Value("k_rollo") ne "drive-up") {\
  fhem("set k_rollo extern open");;;;\
}\
elsif ($EVTPART1 eq "off" && Value("k_rollo") eq "drive-up") {\
  fhem("set k_rollo extern stop");;;;\
}\
}


Wenn man dies in ein notify für alle Rollos packen könnte, wäre es schöner in meinen Augen. ABER - geht es dann auch noch wenn man alle Rollos auf einmal hoch / runter fährt? Danke schon mal an alle, die mich hier unterstützen.

Beta-User

Zitat von: 87insane am 21 Januar 2019, 08:03:20
Habe aber auch eine Frage. Aktuell habe ich für die Übergabe der Rollo Positionen ein notify. Dieses ist aber für jedes Rollo und jeweils auf/ab einzeln. Ich hätte lieber eins für alle, wenn so was geht. Hat einer der Hardcore-Fhem-Admins eine Idee?
Man braucht kein Hardcore-Admin zu sein, schon gleich nicht, da bei dir die Namensgebung ja sehr standardisiert ist:

Schritt 1:
Laß das notify auf ESPEasy_az_rollo:strom_output_(runter|hoch):.* reagieren. Dann mußt du eben noch je einen Zweig für jedes $EVTPART0 bauen.

Schritt 2:
Da das Zieldevice schon im Namen des auslösenden Geräts steckt, mußt du nur den ersten Teil ("ESPEasy_") wegschneiden. Das verkürzte Ergebnis würde ich in eine Variable packen (z.B. my $target) und kannst das dann weiterverwenden:
set $target extern stop

Zum Wegschneiden mal hier austoben: http://regex101.com/
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

87insane

#21
Hi Beta-User,

es müsste dann ja in diese Richtung gehen:

1 define rollo_manuell notify ESPEasy_.*_rollo:strom_output_(runter|hoch):.* {\
2 if ($EVTPART1 eq "on" && Value("rName") ne "drive-up / drive-down") {\
3  fhem("set rName extern open / closed");;;;\
4 }\
5 elsif ($EVTPART1 eq "off" && Value("rName") eq "drive-up / drive-down") {\
6  fhem("set rNAME extern stop");;;;\
7 }\
8 }


Zeile 1: Sieht für mich okay aus
Zeile 2: rName = Rollo Name. Wie kann ich alleine mit Regex aus einem gefundenem "ESPEasy_.*_rollo" ein .*_rollo machen? Ich bekomme es hin zu suchen aber leider nicht im gleichen Schritt zu kürzen. Muss hier substr o.Ä. genutzt werden (Gefunden wird z.B. ESPEasy_.*_rollo und ich muss die 8 Stellen am Anfang weg bekommen)? Die Logik hinter dem ganzen hier ist mir klar aber ich habe nach wie vor erhebliche Probleme mit der Syntax und diversen Befehlen, die ich einfach nicht kenne. Die Browser Tabs sind mittlerweile schon so klein, dass es schwer wird die an zu klicken :-P
drive-up oder drive-down - Wie kann ich das entsprechend korrekte einsetzen? Was ich sehe, wäre das anhand von strom_output_runter/hoch fest zu machen. Sowas wie: WENN strom_output_runter DANN drive-down. Wüsste aber nicht, wie ich das noch da rein bekäme.
Zeile 3: Gleiches Thema wie in Zeile 2. Hier nur für closed und open.
Zeile 4: OK
Zeile 5: Siehe Zeile 2
Zeile 6: Siehe Zeile 2 + stop bleibt hier bei runter oder hoch gleich. Also ist nur der Name das Problem hier.
Zeile 7: OK
Zeile 8: OK


EDIT:
So sieht ein Event aus:
2019-01-21 14:11:22 ESPEasy ESPEasy_az_rollo strom_output_runter: on

Beta-User

Zeile 1 ist ok. Aber danach geht's durcheinander...

Zitat von: Beta-User am 21 Januar 2019, 08:25:05
Schritt 1:
[...] Dann mußt du eben noch je einen Zweig für jedes $EVTPART0 bauen.
Versuche doch erst mal Schritt 1 zu machen ;) . Also erst mal ohne Generalisierung des Namens.

Was steht denn wohl in $EVTPART0 drin?
In dieser ersten Unterscheidung läßt du erst mal _nur für ein Rollo_ die beiden notify für dieses eine Rollo aufgehen.

Erst wenn das klappt kommt als nächstes ein "Vorspann" dazu, in dem dann der Name des Zieldevices aus dem $NAME extrahiert wird. Z.B., indem das "ESPEasy_" duch "" ersetzt wird; ungetestet etwa so: my $setDevice = $NAME;
$setDevice =~ tr/^ESPEasy_//;
Wenn das mit dem $setDevice extrahieren klappt, mußt du nur noch den konkreten Namen in deinem konkreten "beide-Events-notify" weiter unten durch die Variable ersetzen...
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

87insane

#23
Fast immer antwortest du mir, wenn ich Hilfe brauche. Immer wenn du antwortest, lese ich die Antwort x mal und versuche sie zu verstehen.
Das liegt weniger an deiner Antwort als das ich eben keine Ahnung habe wie du das gerade in deinem Kopf hast.

ZitatVersuche doch erst mal Schritt 1 zu machen ;) . Also erst mal ohne Generalisierung des Namens.
Dann hätte ich direkt bei drive-up / drive-down und open closed ein Problem. Da ich nicht weiß wie ich dem beibringe was das notify wählen muss.
Leider reicht meine Phantasie nicht um mir in dem Konstrukt weitere IFs ein zu bauen.

$EVTPART0 sollte in dem Fall "strom_output_runter:" sein oder?
Deswegen habe ich überall EVTPART1 stehen. Dort sollte ja nur "on" stehen.
(Siehe meinen Post und das EDIT vor deiner Antwort)

ZitatIn dieser ersten Unterscheidung läßt du erst mal _nur für ein Rollo_ die beiden notify für dieses eine Rollo aufgehen.
Hier schreibst du wieder von zwei notify. Das würde ja dann dem entsprechen, was schon da steht und auch so läuft:

define az_rollo_manuell_ab notify ESPEasy_az_rollo:strom_output_runter:.* {\
if ($EVTPART1 eq "on" && Value("az_rollo") ne "drive-down") {\
  fhem("set az_rollo extern closed");;;;\
}\
elsif ($EVTPART1 eq "off" && Value("az_rollo") eq "drive-down") {\
  fhem("set az_rollo extern stop");;;;\
}\
}

define az_rollo_manuell_auf notify ESPEasy_az_rollo:strom_output_hoch:.* {\
if ($EVTPART1 eq "on" && Value("az_rollo") ne "drive-up") {\
  fhem("set az_rollo extern open");;;;\
}\
elsif ($EVTPART1 eq "off" && Value("az_rollo") eq "drive-up") {\
  fhem("set az_rollo extern stop");;;;\
}\
}


Wenn ich nun hier sage: notify ESPEasy_az_rollo:strom_output_(runter|hoch):.* würde ich es ja schon zu einem notify zusammen fassen. Dann fehlen mir aber die Dinge wie schon oben genannt...drive-up/down, closed und open.

Jetzt bin ich verwirrt!

Was den zweiten Teil deiner Antwort angeht - den hab ich verstanden. Da komme ich nur leider ohne Teil 1 nicht hin.

EDIT:
Was open und close usw angeht sollte es dann ja ca so gehen:

if ($EVTPART0 eq strom_output_hoch set my $richtung = drive-up, set my $zustand = open)
if ($EVTPART0 eq strom_output_runter set my $richtung = drive-down, set my $richtung = closed)


Syntax  :-\

Beta-User

Sorry, wenn ich es nicht schaffe, meine Gedanken selbsterklärend in Worte zu fassen oder in bereits fertigen code. Das Ganze sollte eigentlich so sein, dass man (spätestens) mit etwas wiki- oder commandref-Lektüre dahinter kommt, wie es genau sein soll.

Nochmal zurück zu Schritt 1: Ziel ist, _ein_ notify zu haben, das für _einen_ Rollladen beide Taster auswerten soll und dabei den aktuellen Status berücksichtigen. Das paßt mit der Regex "ESPEasy_az_rollo:strom_output_(runter|hoch):.*"

Dabei kann es bei dieser Regex (dem Suchmuster lt. wiki-Artikel: https://wiki.fhem.de/wiki/Notify#Anweisung) 4 Fälle geben, nämlich 2 unterschiedliche $EVTPART0 (beide Taster) und 2 $EVTPART1 (je on/off).

Also benötigst du eine Strukutur, die in etwa so aussieht:if ($EVTPART0 eq <erster Taster>) {
  if ($EVTPART1 eq "on") {
     ...
  } elsif ($EVTPART1 eq "off") {
     ...
  }
} elsif ($EVTPART0 eq <zweiter Taster>) {
  if ($EVTPART1 eq "on") {
     ...
  } elsif ($EVTPART1 eq "off") {
     ...
  }
}

Um sowas ggf. auf- und auszubauen, empfiehlt es sich, zwischendurch mal was zu loggen, der Link für ein Beispiel (mit ganze $EVENT, das geht aber auch mit den Teilen) ist in dem obigen Wiki-link. Damit kann man insbesondere besser nachvollziehen, ob da dann für die Prüfung mit eq ein Doppelpunkt rein soll oder nicht (oder ob man der Einfachheit halber nur auf das Vorkommen von Bruchstücken wie "runter" oder "hoch" sucht mit "=~/runter/"&Co).
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

87insane

Guten Morgen zusammen,

zuerst einmal:
ZitatSorry, wenn ich es nicht schaffe, meine Gedanken selbsterklärend in Worte zu fassen oder in bereits fertigen code. Das Ganze sollte eigentlich so sein, dass man (spätestens) mit etwas wiki- oder commandref-Lektüre dahinter kommt, wie es genau sein soll.
Ich möchte an dieser Stelle betonen, das es von meiner Seite aus kein Angriff war sondern eher Bewunderung!
Es gab hier vor kurzem ein Webinar bezüglich FHEM. Ggf. gibt es ja nochmal eins für PERL oder FHEM und das Programmieren mit Beispielen. Würde mich sofort anmelden. Ggf. magst du ja auch etwas zeigen. Du bist immer einer der Ersten die allen helfen hier. Überleg es dir mal wenn du magst. Ich wäre sofort dabei!

ZitatNochmal zurück zu Schritt 1: Ziel ist, _ein_ notify zu haben, das für _einen_ Rollladen beide Taster auswerten soll und dabei den aktuellen Status berücksichtigen. Das paßt mit der Regex "ESPEasy_az_rollo:strom_output_(runter|hoch):.*"
Mein Ziel wäre es für alle Rollos nur ein notify zu haben. Ich vermute du meintest das hier erstmal nur damit man nicht direkt x Fehler drin hat und nach und nach dann kleiner vom Code her wird. Hab anbei mal meine Vorstellung und ggf. sogar schon funktionsfähig. Kann ich leider nicht testen, da ich aktuell keinen FHEM Zugang habe.


define rollo_manuell notify ESPEasy_.*_rollo:strom_output_(runter|hoch):.* {\
my $richtung = '';
my $zustand = '';
my $geraet = $NAME;
$geraet =~ tr/^ESPEasy_//;

if ($EVTPART0 eq "strom_output_hoch") {
  $richtung = "drive-up";
  $zustand = "open";
}
if ($EVTPART0 eq "strom_output_runter") {
  $richtung = "drive-down";
  $zustand = "closed";
}

if ($EVTPART1 eq "on" && Value("$geraet") ne "$richtung") {
  fhem("set $geraet extern $zustand");
}
elsif ($EVTPART1 eq "off" && Value("$geraet") eq "$richtung") {
  fhem("set $geraet extern stop");
}
}


Zum einen, wäre super wenn einer mal einen Blick drauf werfen könnte....
Auf der anderen Seite, würde mich interessieren (allgemein), ob FHEM auch bei mehreren Rollos, die gleichzeitig geschaltet werden, so damit umgehen kann?

Danke!

Beta-User

Zitat von: 87insane am 22 Januar 2019, 07:51:28
Zum einen, wäre super wenn einer mal einen Blick drauf werfen könnte....
Auf der anderen Seite, würde mich interessieren (allgemein), ob FHEM auch bei mehreren Rollos, die gleichzeitig geschaltet werden, so damit umgehen kann?
Moin,

vorab: das "End-notify" soll und wird auf alle passenden Events reagieren und dann je einzeln eine Aktion starten. Wenn also die Events eindeutig sind, sollte das kein Problem geben.
Allerdings frage ich mich, wie du gleichzeitig so viele Schalter drücken willst ;) .

Was den code angeht, solltest du das wie bereits vorgeschlagen Schritt für Schritt machen und nicht alles auf einmal, da passieren leicht Fehler bzw. es ist auch schwieriger festzustellen, an was es hängt. Hier hast du m.E. einen Logikfehler eingebaut...

Zitat von: 87insane am 22 Januar 2019, 07:51:28
Mein Ziel wäre es für alle Rollos nur ein notify zu haben.
Das ist das Ziel von Schritt 2, in Schritt 1 sollte erst mal nur ein notify auf beide Varianten reagieren, allerdings nur von einem Rolladen. Also immer noch meine Empfehlung: gehe erst den ersten Schritt, baue ggf. ein paar Log-Ausgaben ein (und später wieder aus, wenn du sie nicht mehr brauchst)...

Das funktioniert aber leider nicht so gut ohne konkrete Zugriffsmöglichkeit auf FHEM ;) , also übe dich in Geduld!
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

87insane

Moin moin,

die Telekom hat meine Leitung nun wieder zum laufen bekommen. Jetzt kann es weiter gehen :)

ZitatAllerdings frage ich mich, wie du gleichzeitig so viele Schalter drücken willst
Naja - Die Steuerung an sich läuft ja auch über Alexa usw.... Diese sendet an FHEM und FHEM wiederrum sendet per event an den jeweiligen Schalter. Für den Schalter ist es dann so als wäre tatsächlich ein Knopf betätigt worden. Hat den Vorteil, dass auch die Rules auf dem Schalter mit machen. Somit würde ich mit einer Routine "Alle Rollos runter/hoch" immer direkt alle gleichzeitig schalten. Das klappt aktuell auch. Hatte nur Sorge, dass es mit einer Rule ggf. nicht geht, da ich nicht genau weiß wie FHEM die Dinge ab arbeitet.

ZitatWas den code angeht, solltest du das wie bereits vorgeschlagen Schritt für Schritt machen und nicht alles auf einmal, da passieren leicht Fehler bzw. es ist auch schwieriger festzustellen, an was es hängt. Hier hast du m.E. einen Logikfehler eingebaut...
Bin ich bei dir und hatte heute Morgen den Drang es mal komplett auf zu schreiben, um zu gucken wo ich ggf. hängen bleibe. Zum einen lese ich noch diverse Anleitungen zum Thema Regex und versuche diese zu verstehen und zum anderen finde ich gerade das ein echt unverständliches Thema....
Wo ist in deinen Augen der Logik Fehler? Ich weiß es aus deinen anderen Beiträge...Du versuchst gerne Freiraum zu lassen, damit die Leute es auch selber lernen und nicht du alleine die ganzen FHEMs installierst ;) Hab ich schon verstanden. Ist auch gut so!


ZitatDas ist das Ziel von Schritt 2, in Schritt 1 sollte erst mal nur ein notify auf beide Varianten reagieren, allerdings nur von einem Rolladen. Also immer noch meine Empfehlung: gehe erst den ersten Schritt, baue ggf. ein paar Log-Ausgaben ein (und später wieder aus, wenn du sie nicht mehr brauchst)...
Wie man das am Ende zwecks Debug anpasst, loggt oder sonst was ist im besten Fall nicht von Nöten. Sollte es so sein, kann ich wenigstens das :)

Beta-User

Zitat von: 87insane am 22 Januar 2019, 14:30:33
[...] da ich nicht genau weiß wie FHEM die Dinge ab arbeitet.
Die Abarbeitung aller Aufgaben ist streng linear, und eigentlich sollte auch nichts verloren gehen. Lektüreempfehlung: https://wiki.fhem.de/wiki/Fhem.pl
Schwierig wird es eigentlich erst, wenn FHEM zu langsam wird, (vornehmlich, weil irgendwas blockiert) und dann Daten ggf. nicht rechtzeitig von irgendwelchen Interfaces abgeholt werden.
ZitatWo ist in deinen Augen der Logik Fehler?
Ich habe nur schnell drüber geschaut und gesehen, dass es eben nicht in dem Stil ist, erst mal die zwei "hoch/runter"-notify zu ersetzten und jedes praktisch unverändert in einem $EVTPART0-Zweig zu behandeln, sondern geändert. Daher weiß ich nicht, ob man den Fall
elsif ($EVTPART1 eq "off" && Value("$geraet") ne "$richtung")braucht oder nicht ;) . Scheint nicht der Fall zu sein...
Grundsätzlich würde ich aber immer dazu raten, erst mal die Logikstruktur im Kern so zu belassen, wie sie ist, und dann nach und nach zu generalisieren und erst danach nochmal über die Grundstruktur nachzudenken - und dabei dann alle Kombinationen gedanklich durchzuspielen, selbst wenn man am Ende zu dem Schluß kommt, es ist - für den aktuellen Anwendungsfall - irrelevant.
Für mich ist das einfacher und nicht gleich so abstrakt; da muß halt jeder seinen Weg finden :) .
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

87insane

#29
Es werden in der original Logik nur die genannten Fälle benötigt.

Das hier wäre ganz original aus dem Wiki zum Modul:

define rollo_manuell_auf DOIF ([meinRollo_Kanal1] eq "on" and [?meinRolloModul] ne "drive-up") (set meinRolloModul extern open) DOELSEIF ([meinRollo_Kanal1] eq "off" and [?meinRolloModul] eq "drive-up") (set meinRolloModul extern stop)
define rollo_manuell_ab  DOIF ([meinRollo_Kanal2] eq "on" and [?meinRolloModul] ne "drive-down") (set meinRolloModul extern closed) DOELSEIF ([meinRollo_Kanal2] eq "off" and [?meinRolloModul] eq "drive-down") (set meinRolloModul extern stop)


Das hier ist schon der angepasste Fall (das geht auch) von mir bzw. auch uns beiden. In einem anderen Thread hier sprachen wir darüber:

define az_rollo_manuell_ab notify ESPEasy_az_rollo:strom_output_runter:.* {\
if ($EVTPART1 eq "on" && Value("az_rollo") ne "drive-down") {\
  fhem("set az_rollo extern closed");;;;\
}\
elsif ($EVTPART1 eq "off" && Value("az_rollo") eq "drive-down") {\
  fhem("set az_rollo extern stop");;;;\
}\
}

define az_rollo_manuell_auf notify ESPEasy_az_rollo:strom_output_hoch:.* {\
if ($EVTPART1 eq "on" && Value("az_rollo") ne "drive-up") {\
  fhem("set az_rollo extern open");;;;\
}\
elsif ($EVTPART1 eq "off" && Value("az_rollo") eq "drive-up") {\
  fhem("set az_rollo extern stop");;;;\
}\
}


Und das hier wäre in meinen Augen dann, das neue (allerdings weiß ich hier noch nicht ob das mit dem Trimmen usw geht. Das muss ich noch testen):

define rollo_manuell notify ESPEasy_.*_rollo:strom_output_(runter|hoch):.* {\
my $richtung = '';
my $zustand = '';
my $geraet = $NAME;
$geraet =~ tr/^ESPEasy_//;

if ($EVTPART0 eq "strom_output_hoch") {
  $richtung = "drive-up";
  $zustand = "open";
}
if ($EVTPART0 eq "strom_output_runter") {
  $richtung = "drive-down";
  $zustand = "closed";
}

if ($EVTPART1 eq "on" && Value("$geraet") ne "$richtung") {
  fhem("set $geraet extern $zustand");
}
elsif ($EVTPART1 eq "off" && Value("$geraet") eq "$richtung") {
  fhem("set $geraet extern stop");
}
}


Also von 1-3 hat sich ja schon einiges geändert. Bis auf das Deklarieren der Variablen und das Trimmen bin ich fast sicher das es so geht. Bin echt gespannt....

Beta-User

Ah, ok, dass nur Teile der denkbaren Fälle erforderlich sind war mir wie gesagt nicht direkt klar, hatte nur gesehen, dass es "von der Struktur her was anderes" war.

Wenn es mit dem "tr" nicht geht: "s" verwenden..

Vermutlich hat das $EVTPART0 einen ":" am Ende (daher die Empfehlung mit dem loggen).

Und das "setuuid" sollte wohl raus. Das ist nicht für den userspace gedacht.
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

87insane

Danke, hatte die ID übersehen.

Teste ich alles. Erst mal ein riesen danke und ich melde mich am WE wieder. Es stehen im Winter viele FHEM Aufgaben an :)

87insane

#32
Hallo und einen schönen Nachmittag!

habe nun noch zwei, drei Versuche gebraucht - ABER es funktioniert! Mega DANKE an @Beta-User. Es läuft auf allen Rollos super. Ich denke sogar mal behaupten zu dürfen, dass es Wiki tauglich sei.
Also das es so schnell und einfach funktioniert hat, ich glaube es immer noch nicht!

(Bereits wie im Folgepost erwähnt, angepasst!)
define rollos_manuell notify ESPEasy_.*_rollo:strom_output_(runter|hoch):.* {\\
my $richtung = '';;\
my $zustand = '';;\
my $geraet = $NAME;;\
$geraet =~ s/^ESPEasy_//;;\
\
if ($EVTPART0 eq "strom_output_hoch:") {\
  $richtung = "drive-up";;\
  $zustand = "open";;\
}\
if ($EVTPART0 eq "strom_output_runter:") {\
  $richtung = "drive-down";;\
  $zustand = "closed";;\
}\
\
if ($EVTPART1 eq "on" && Value("$geraet") ne "$richtung") {\
  fhem("set $geraet extern $zustand");;\
}\
elsif ($EVTPART1 eq "off" && Value("$geraet") eq "$richtung") {\
  fhem("set $geraet extern stop");;\
}\
}



Beta-User

Schön, dass du da vollends durchgehalten hast!

Anmerkungen noch:

- Vielleicht kopierst du das Endergebnis dann in den ersten Post (bitte kenntlich machen, sonst wird das nachfolgende ggf. unverständlich).

Vorher:
- Die Abfragen lassen sich evtl. noch verkürzen (Anregung: " =~/xyz/"). Echte Alternativfälle (2. if auf $EVTPART0) besser mit elsif einleiten.
- Jeweils die 2. Anweisung mit "fhem" kommt mir seltsam vor. Schau mal ins Log ;) ...
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

87insane

#34
Danke! - Deine Hilfe!

Zitat- Vielleicht kopierst du das Endergebnis dann in den ersten Post (bitte kenntlich machen, sonst wird das nachfolgende ggf. unverständlich).
Schon getan...

Zitat- Die Abfragen lassen sich evtl. noch verkürzen (Anregung: " =~/xyz/"). Echte Alternativfälle (2. if auf $EVTPART0) besser mit elsif einleiten.
Den ersten Teil hier von werde ich morgen morgen, schön in unserem Rechenzentrum, durch lesen und lernen. Hab eh Bereitschaft und es wird hoffentlich ruhig. Warum genau elsif? Welchen Vorteil/Nachteil habe ich in der Konstellation?

Zitat- Jeweils die 2. Anweisung mit "fhem" kommt mir seltsam vor. Schau mal ins Log ;) ...
Ich voll Depp!!!! Das war vorhin mein Debug! Ist nicht mehr in meinem Code. Danke das du es gesehen hast!!

Beta-User

Zitat von: 87insane am 25 Januar 2019, 17:23:45
Warum genau elsif? Welchen Vorteil/Nachteil habe ich in der Konstellation?
Na ja, das mit dem regex ist universeller und man kann es kürzer fassen (da wäre das mit dem Doppelpunkt auch egal gewesen ;) ).
Zu elsif hast du hoffentlich etwas nachgelesen? Hier ist es ja so, dass nur einer der beiden Fälle zutreffen kann (echte Alternativität). Das kann man im coding berücksichtigen, dann wird nämlich der 2. Bedingungszweig gar nicht mehr geprüft, wenn der erste schon eingetroffen war. Ist also etwas effizienter in der Ausführung ;) .

Effektiv funktioniert es auch so wie du es jetzt hast, es ging ja (auch) um's Lernen, oder?
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

87insane

Hey,

genau es geht ums lernen ! Hatte ja gesagt, ich bin heute im RZ und lese schon fleißig. Auch wenn das aktuell funktioniert, kann es ja noch besser werden.

Danke aber schon mal. Bin echt froh diese Community hier zu haben.

Gesendet von meinem LG-H850 mit Tapatalk


deathworm

Hallo Kai,

ich besitze demnaechst ein Haus bei dem alle Rollos elektrisch sind. Diese wuerde ich gerne, wie du, auch per FHEM dann steuern. Ich habe erst selbst alles fuer meinen Test definiert und nach deinen Anleitungen umgebaut. Mittlerweile habe ich das ganze sogar 1 zu 1 so umbenannt, damit ich nicht zufaellig in einem simplen Namensproblem haengen bleibe. Das normale schalten per Oberflaeche oder Taster funktioniert einwandfrei. Jedoch aendert sich der Prozent Zustand sich nicht, wenn ich die Hardwareschalter benutze.

Es ist doch so mit deinem notify, dass wenn ich einen der Hardwaretaster druecke, dies FHEM per notify mitbekommt und aus der gedrueckten Zeit das Level des Rollos berechnet. Ist das korrekt?

87insane

Ja ist korrekt. Im Wiki steht ein doif und ich mag das notify lieber. Einzig das ist wichtig um den Zustand im Modul ab zu bilden. Hast du es denn auch auf deine Geräte angepasst?

Gesendet von meinem LG-H850 mit Tapatalk


deathworm

Hi,

eigentlich ja. Ich habe deswegen auch extra _alles_ gleich wie du benannt, da ich dachte, es waere irgendwo ein Bezeichnungsproblem.

Wenn ich die Taster manuell druecke, zeigt er mir das im FHEM auch einwandfrei an. Wenn ich die Rollotasten im FHEM druecke, wird es auch korrekt ausgeloest.

87insane

Also nur die Berechnung geht nicht? Wenn du den taster drückst, siehst du aber diesen kleinen Pfeil für hoch und runter? Am besten sende mal alles was du da so eingestellt hast. Auch mal ein Rollo aus fhem usw. Eine kleinigkeit wird da wohl nicht passen.

Ps: sorry wenn ich nicht sofort antworte. Liege noch flach :/

Gesendet von meinem LG-H850 mit Tapatalk


deathworm

Hoi,

kein Problem. Ist so schon super schnell :D
Bin selbst auch etwas krank mit normalem oder Heuschnupfen - da bin ich noch etwas unsicher

Leider eben nicht. Ich ging auch davon aus, dass der Pfeil sich zeigen muss:



define ESPEasy_az_rollo_taste_hoch ESPEasy 192.168.1.199 80 ESPBridge az_rollo_taste_hoch
setuuid ESPEasy_az_rollo_taste_hoch 5c740347-f33f-cc5d-b511-5ec535c0458ca083
attr ESPEasy_az_rollo_taste_hoch IODev ESPBridge
attr ESPEasy_az_rollo_taste_hoch Interval 300
attr ESPEasy_az_rollo_taste_hoch devStateIcon off:on:off on:off:on absent:message_socket_off@red:on
attr ESPEasy_az_rollo_taste_hoch eventMap /gpio 4 on:off/gpio 4 off:on/
attr ESPEasy_az_rollo_taste_hoch group ESPEasy Device
attr ESPEasy_az_rollo_taste_hoch icon black_Steckdose.off
attr ESPEasy_az_rollo_taste_hoch presenceCheck 1
attr ESPEasy_az_rollo_taste_hoch readingSwitchText 1
attr ESPEasy_az_rollo_taste_hoch room ESPEasy
attr ESPEasy_az_rollo_taste_hoch setState 3
attr ESPEasy_az_rollo_taste_hoch stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"taste_hoch","")}



define ESPEasy_az_rollo_taste_runter ESPEasy 192.168.1.199 80 ESPBridge az_rollo_taste_runter
setuuid ESPEasy_az_rollo_taste_runter 5c74034b-f33f-cc5d-e1ce-e6fd00f59fd8d97e
attr ESPEasy_az_rollo_taste_runter IODev ESPBridge
attr ESPEasy_az_rollo_taste_runter Interval 300
attr ESPEasy_az_rollo_taste_runter devStateIcon off:on:off on:off:on absent:message_socket_off@red:on
attr ESPEasy_az_rollo_taste_runter eventMap /gpio 0 on:off/gpio 0 off:on/
attr ESPEasy_az_rollo_taste_runter group ESPEasy Device
attr ESPEasy_az_rollo_taste_runter icon black_Steckdose.off
attr ESPEasy_az_rollo_taste_runter presenceCheck 1
attr ESPEasy_az_rollo_taste_runter readingSwitchText 1
attr ESPEasy_az_rollo_taste_runter room ESPEasy
attr ESPEasy_az_rollo_taste_runter setState 3
attr ESPEasy_az_rollo_taste_runter stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"taste_runter","")}



define az_rollo ROLLO
setuuid az_rollo 5c745a86-f33f-cc5d-ab7b-f8be901939c26872
attr az_rollo cmdIcon open:fts_shutter_up closed:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr az_rollo devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100:open half:fts_shutter_50:closed drive-up:fts_shutter_up@red:stop drive-down:fts_shutter_down@red:stop pct-100:fts_shutter_100:open pct-90:fts_shutter_80:closed pct-80:fts_shutter_80:closed pct-70:fts_shutter_70:closed pct-60:fts_shutter_60:closed pct-50:fts_shutter_50:closed pct-40:fts_shutter_40:open pct-30:fts_shutter_30:open pct-20:fts_shutter_20:open pct-10:fts_shutter_10:open pct-0:fts_shutter_10:closed
attr az_rollo rl_autoStop 0
attr az_rollo rl_commandDown set ESPEasy_az_rollo_taste_hoch gpio 0 0
attr az_rollo rl_commandStopDown set ESPEasy_az_rollo_taste_hoch gpio 0 1
attr az_rollo rl_commandStopUp set ESPEasy_az_rollo_taste_runter gpio 4 1
attr az_rollo rl_commandUp set ESPEasy_az_rollo_taste_runter gpio 4 0
attr az_rollo rl_excessBottom 2
attr az_rollo rl_excessTop 2
attr az_rollo rl_resetTime 0
attr az_rollo rl_secondsDown 5
attr az_rollo rl_secondsUp 5
attr az_rollo rl_switchTime 1
attr az_rollo rl_type normal
attr az_rollo room ESPEasy
attr az_rollo webCmd open:closed:half:stop:pct


define rollos_manuell notify ESPEasy_.*_rollo:strom_output_(runter|hoch):.* {\\
my $richtung = '';;\
my $zustand = '';;\
my $geraet = $NAME;;\
$geraet =~ s/^ESPEasy_//;;\
\
if ($EVTPART0 eq "strom_output_hoch:") {\
  $richtung = "drive-up";;\
  $zustand = "open";;\
}\
if ($EVTPART0 eq "strom_output_runter:") {\
  $richtung = "drive-down";;\
  $zustand = "closed";;\
}\
\
if ($EVTPART1 eq "on" && Value("$geraet") ne "$richtung") {\
  fhem("set $geraet extern $zustand");;\
}\
elsif ($EVTPART1 eq "off" && Value("$geraet") eq "$richtung") {\
  fhem("set $geraet extern stop");;\
}\
}




Edit 1 Switch input - Switch strom_output_hoch GPIO-16
strom_output_hoch: 1

Edit 2 Switch input - Switch strom_output_runter GPIO-5
strom_output_runter: 1

Edit 3 Switch input - Switch taste_hoch GPIO-4
taste_hoch: 1

Edit 4 Switch input - Switch taste_runter GPIO-0
taste_runter: 1



on taste_hoch#taste_hoch do
  if [taste_hoch#taste_hoch]=0 and [taste_runter#taste_runter]=1
   gpio,16,0
     else
   gpio,16,1
   delay 2000
  endif
endon

on taste_runter#taste_runter do
  if [taste_runter#taste_runter]=0 and [taste_hoch#taste_hoch]=1
   gpio,5,0
  else
   gpio,5,1
   delay 2000
  endif
endon

87insane

Sieht aus als hast du nicht combine Device aktiv. Bei mir sind beide taster ein gerät. So das das Rollo Modul die beiden als eins sieht. Das notify reagiert deswegen nicht.

Mach in der ESP bridge diese beiden schalter mal zu einem gerät. Danach sollte es laufen.

Gesendet von meinem LG-H850 mit Tapatalk


deathworm

Nabend,

stimmt - den part habe ich komplett ueberlesen.

Jetzt schaut das ganze etwas anders aus:

ESPEasy Device
ESPEasy_az_rollo
   
tas: on tas: on

Aber um ehrlich zu sein, die funktion ist trotzdem noch nicht aktiv.

87insane

Bitte mal ein device list...

Wird sicher nur noch was kleineres sein.

Gesendet von meinem LG-H850 mit Tapatalk


deathworm

Hier einmal ein "list" Befehl:

Type list <name> for detailed info.

Global:
  global               (no definition)

FHEMWEB:
  WEB                  (Initialized)
  WEB_192.168.1.20_49346 (Connected)
  WEB_192.168.1.20_49348 (Connected)
  WEB_192.168.1.20_49375 (Connected)
  WEB_192.168.1.20_49378 (Connected)
  WEBphone             (Initialized)
  WEBtablet            (Initialized)

ESPEasy:
  ESPBridge            (Initialized)
  ESPEasy_az_rollo     (tas: on tas: on)

ROLLO:
  az_rollo             (open)

at:
  sun_riseSet_timer    (Next: 00:05:00)

eventTypes:
  eventTypes           (active)

notify:
  rollos_manuell       (active)

FileLog:
  Logfile              (active)

autocreate:
  autocreate           (active)

cmdalias:
  cmd_roomren          (defined)

dummy:
  Sonnenaufgang        (30:35:44)
  Sonnenuntergang      (18:29:30)

telnet:
  telnetPort           (Initialized)

87insane

#46
Okaaaaaay.

Viel hast du bisher noch nicht gemacht mit FHEM, oder?

Bei list muss du auch den Gerätenamen mit angeben. Steht ja sogar da.

Hinzu empfehle ich dir dringend, mal im comandref und im Wiki ein wenig zu lesen. Abgesehen von dem eigentlich fertigem Code, müssen natürlich alle Namen oder variablen für dich angepasst werden.

Sende am besten einfach mal alles. Ein List vom zb az_rollo, den Code wie er bei dir nun aktiv ist.... Versuchen wir es zusammen an zu gehen.

Das Problem (so wie ich es verstanden habe): Berechnung der Position geht nicht. Es werden also weder hoch noch runter in der fhem Übersicht beim benutzen eines externen tasters angezeigt.

Ach ja, sende bitte auch mal einen Auszug aus dem log wenn du schaltest. Dazu auch einen auszug aus dem event Monitor.

Gesendet von meinem LG-H850 mit Tapatalk

deathworm

#47
das ist eine komplett neue FHEM Installation. Bisher hatte ich einen rasp mit FHEM bei meinen Eltern am laufen, da dort einfach das meiste an Aktoren und Teichsteuerung etc war und bei mir in der Wohnung nur ein paar ESP Geraete, die jedoch per VPN kommuniziert haben.

In meinem Haus habe ich erst das gleiche machen wollen, dann mich aber doch auf eine standalone Variante entschieden. Darum ist das ganze so jungfraeulich.


Jep, das ist korrekt. Die virtuellen Tasten fuer Rollo hoch/runter werden beim manuellen Betrieb nicht angezeigt.

okay, dann hoffe ich, das ich diesmal alles korrekt weitergebe:


list ESPEasy_az_rollo

Internals:
   DEF        192.168.1.199 80 espBridge az_rollo
   ESPBridge_MSGCNT 228
   ESPBridge_TIME 2019-02-27 11:48:13
   ESP_BUILD  20102
   ESP_BUILD_GIT mega-20181001
   ESP_BUILD_NOTES  - Mega
   ESP_NODE_TYPE_ID ESP Easy Mega
   ESP_SLEEP  0
   ESP_UNIT   0
   ESP_VERSION 2
   FUUID      5c762e91-f33f-cc5d-2d91-da11ae998f237017
   HOST       192.168.1.199
   IDENT      az_rollo
   INTERVAL   300
   IODev      ESPBridge
   IODevName  espBridge
   LASTInputDev ESPBridge
   MAX_CMD_DURATION 1
   MSGCNT     228
   NAME       ESPEasy_az_rollo
   NOTIFYDEV  global
   NR         51
   NTFY_ORDER 50-ESPEasy_az_rollo
   PORT       80
   STATE      tas: on tas: on
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    2.18
   READINGS:
     2019-02-27 11:44:30   presence        present
     2019-02-27 11:48:13   state           tas: on tas: on
     2019-02-27 11:48:11   taste_hoch      on
     2019-02-27 11:48:13   taste_runter    on
   helper:
     fpc        1551249051
     pm:
       Encode     1
       JSON       1
     received:
       taste_hoch 1551264491
       taste_runter 1551264493
   sec:
     admpwd     
Attributes:
   IODev      espBridge
   Interval   300
   group      ESPEasy Device
   presenceCheck 1
   readingSwitchText 1
   room       ESPEasy
   setState   3


######################


list az_rollo

Internals:
   FUUID      5c762e91-f33f-cc5d-c973-8bbe818fa772cdff
   NAME       az_rollo
   NR         54
   STATE      open
   TYPE       ROLLO
   READINGS:
     2019-02-26 21:15:34   command         open
     2019-02-26 21:15:34   desired_pct     0
     2019-02-26 21:15:34   drive-type      modul
     2019-02-26 21:15:34   last_drive      drive-up
     2019-02-26 21:15:51   pct             0
     2019-02-26 21:15:51   state           open
Attributes:
   cmdIcon    open:fts_shutter_up closed:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
   devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100:open half:fts_shutter_50:closed drive-up:fts_shutter_up@red:stop drive-down:fts_shutter_down@red:stop pct-100:fts_shutter_100:open pct-90:fts_shutter_80:closed pct-80:fts_shutter_80:closed pct-70:fts_shutter_70:closed pct-60:fts_shutter_60:closed pct-50:fts_shutter_50:closed pct-40:fts_shutter_40:open pct-30:fts_shutter_30:open pct-20:fts_shutter_20:open pct-10:fts_shutter_10:open pct-0:fts_shutter_10:closed
   rl_autoStop 0
   rl_commandDown set ESPEasy_az_rollo gpio 0 0
   rl_commandStopDown set ESPEasy_az_rollo gpio 0 1
   rl_commandStopUp set ESPEasy_az_rollo gpio 4 1
   rl_commandUp set ESPEasy_az_rollo gpio 4 0
   rl_excessBottom 2
   rl_excessTop 4
   rl_resetTime 0
   rl_secondsDown 16,44
   rl_secondsUp 18
   rl_switchTime 1
   rl_type    normal
   room       ESPEasy
   webCmd     open:closed:half:stop:pct

#################################


Event Monitor:

2019-02-27 11:51:13 ESPEasy ESPEasy_az_rollo taste_runter: on
2019-02-27 11:51:13 ESPEasy ESPEasy_az_rollo tas: on tas: on
2019-02-27 11:51:20 ESPEasy ESPEasy_az_rollo taste_runter: off
2019-02-27 11:51:20 ESPEasy ESPEasy_az_rollo tas: on tas: off
2019-02-27 11:51:24 ESPEasy ESPEasy_az_rollo taste_runter: on
2019-02-27 11:51:24 ESPEasy ESPEasy_az_rollo tas: on tas: on
2019-02-27 11:51:27 ESPEasy ESPEasy_az_rollo taste_hoch: off
2019-02-27 11:51:27 ESPEasy ESPEasy_az_rollo tas: off tas: on
2019-02-27 11:51:32 ESPEasy ESPEasy_az_rollo taste_hoch: on
2019-02-27 11:51:32 ESPEasy ESPEasy_az_rollo tas: on tas: on



2019-02-27 13:22:23 ROLLO az_rollo command: open
2019-02-27 13:22:23 ROLLO az_rollo desired_pct: 0
2019-02-27 13:22:24 ROLLO az_rollo command: closed
2019-02-27 13:22:24 ROLLO az_rollo desired_pct: 100
2019-02-27 13:22:24 ROLLO az_rollo last_drive: drive-down
2019-02-27 13:22:24 ROLLO az_rollo drive-down
2019-02-27 13:22:24 ROLLO az_rollo drive-type: modul
2019-02-27 13:22:24 ESPEasy ESPEasy_az_rollo gpio 0 0
2019-02-27 13:22:25 ESPEasy ESPEasy_az_rollo taste_runter: off
2019-02-27 13:22:25 ESPEasy ESPEasy_az_rollo tas: on tas: off
2019-02-27 13:22:46 ROLLO az_rollo pct: 100
2019-02-27 13:22:46 ESPEasy ESPEasy_az_rollo gpio 0 1
2019-02-27 13:22:46 ROLLO az_rollo closed
2019-02-27 13:22:46 ESPEasy ESPEasy_az_rollo taste_runter: on
2019-02-27 13:22:46 ESPEasy ESPEasy_az_rollo tas: on tas: on

#######################

logfile nachdem ich die aktoren gedrueckt habe:

2019.02.27 13:19:28 1: PERL WARNING: Argument "16,44" isn't numeric in multiplication (*) at ./FHEM/44_ROLLO.pm line 764.
2019.02.27 13:19:28 3: ESPEasy ESPEasy_az_rollo: set ESPEasy_az_rollo gpio 0 0
2019.02.27 13:19:30 1: PERL WARNING: Argument "16,44" isn't numeric in division (/) at ./FHEM/44_ROLLO.pm line 669.
2019.02.27 13:19:30 3: ESPEasy ESPEasy_az_rollo: set ESPEasy_az_rollo gpio 0 1
2019.02.27 13:19:39 3: ESPEasy ESPEasy_az_rollo: set ESPEasy_az_rollo gpio 0 0
2019.02.27 13:19:47 3: ESPEasy ESPEasy_az_rollo: set ESPEasy_az_rollo gpio 0 1
2019.02.27 13:19:48 3: ESPEasy ESPEasy_az_rollo: set ESPEasy_az_rollo gpio 4 0
2019.02.27 13:19:55 3: ESPEasy ESPEasy_az_rollo: set ESPEasy_az_rollo gpio 4 1

87insane

Also um den kleinen fehler los zu werden, einfach 16 oder 17 statt der 16.44 angeben im Rollo.

Damit ich das alles aber genauer sehe, brauche ich meinen rechner. Liege aber noch flach.

Aber es löst anscheinend das notify nicht aus. Die Zustände wie drive-up usw kommen. Dein notify kannst du hier bitte auch mal Posten. Denke, beim umbauen hast du was vergessen.

Gesendet von meinem LG-H850 mit Tapatalk


deathworm

Erledigt.

Alles gut, ich kann warten. Bin ja so schon mehr als happy ueber die Hilfe.

Ich poste jetzt jedoch wohl besser die ganze config, damit auch hier uebersicht besteht:

attr global userattr cmdIcon devStateIcon devStateIcon:textField-long devStateStyle icon sortby webCmd webCmdLabel:textField-long widgetOverride
attr global autoload_undefined_devices 1
attr global latitude 48.401082
attr global logfile ./log/fhem-%Y-%m.log
attr global longitude 9.987608
attr global modpath .
attr global motd SecurityCheck:\
  telnetPort is not password protected\
  WEB is not password protected\
  WEBtablet is not password protected\
  WEBphone is not password protected\
\
Protect this FHEM installation by defining an allowed device with define allowed allowed\
You can disable this message with attr global motd none
attr global statefile ./log/fhem.save
attr global updateInBackground 1
attr global verbose 3


define telnetPort telnet 7072 global
setuuid telnetPort 5c740197-f33f-cc5d-2bf8-d286cc48db5a0362

define WEB FHEMWEB 8083 global
setuuid WEB 5c740198-f33f-cc5d-43af-64d6f88094e273fd
attr WEB editConfig 1
attr WEB menuEntries Update,/fhem?cmd=update,Update Check,/fhem?cmd=update%20check,Neustart,shutdown+restart

define WEBphone FHEMWEB 8084 global
setuuid WEBphone 5c740198-f33f-cc5d-55a7-f3525ea0735a362d
attr WEBphone stylesheetPrefix smallscreen

define WEBtablet FHEMWEB 8085 global
setuuid WEBtablet 5c740198-f33f-cc5d-f5b4-4ae54806cc96abe2
attr WEBtablet stylesheetPrefix touchpad

# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
setuuid Logfile 5c740198-f33f-cc5d-d54d-30bc0ae07f209364

define autocreate autocreate
setuuid autocreate 5c740198-f33f-cc5d-db39-79f4306f25885e29
attr autocreate filelog ./log/%NAME-%Y.log

define eventTypes eventTypes ./log/eventTypes.txt
setuuid eventTypes 5c740198-f33f-cc5d-3f8a-3943b9da5a1029d1

# Disable this to avoid looking for new USB devices on startup
# define initialUsbCheck notify global:INITIALIZED usb create

define cmd_roomren cmdalias roomren .* AS attr room=$EVTPART0 room $EVTPART1
setuuid cmd_roomren 5c740198-f33f-cc5d-6627-9cec0224fedcd41b

# define Sonnentimer Dummys
define sun_riseSet_timer at *00:05:00 { my $s = sunrise();; fhem("set Sonnenaufgang $s");; $s = sunset();; fhem("set Sonnenuntergang $s");; }
setuuid sun_riseSet_timer 5c740198-f33f-cc5d-412f-ccbb60b0fa5353be

define Sonnenaufgang dummy
setuuid Sonnenaufgang 5c740198-f33f-cc5d-0f4c-525b710c12f92fd2
attr Sonnenaufgang room Sonnentimer

define Sonnenuntergang dummy
setuuid Sonnenuntergang 5c740198-f33f-cc5d-22e8-e2084e85ebc52b1d
attr Sonnenuntergang room Sonnentimer

# NodeMCU config
define ESPBridge ESPEasy bridge 8383
attr ESPBridge combineDevices 1

#dummy FHEM.Backup
#define FHEM.Backup dummy
#attr FHEM.Backup event-on-change-reading state
#attr FHEM.Backup room BACKUP
#attr FHEM.Backup webCmd on:off
#define FHEMBackupOn notify FHEM.Backup:on {system ("sudo /opt/fhem/FHEM/backup.sh &")}

#Automatisches Backup um 06:00 Uhr starten
#define FHEMBackup at *06:00:00 set FHEM.Backup on

# Global config Ende

########################################



# Arbeitszimmer Rollo
define ESPEasy_az_rollo ESPEasy 192.168.1.199 80 espBridge az_rollo
attr ESPEasy_az_rollo IODev espBridge
attr ESPEasy_az_rollo Interval 300
attr ESPEasy_az_rollo group ESPEasy Device
attr ESPEasy_az_rollo presenceCheck 1
attr ESPEasy_az_rollo readingSwitchText 1
attr ESPEasy_az_rollo room ESPEasy
attr ESPEasy_az_rollo setState 3


define az_rollo ROLLO
attr az_rollo cmdIcon open:fts_shutter_up closed:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr az_rollo devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100:open half:fts_shutter_50:closed drive-up:fts_shutter_up@red:stop drive-down:fts_shutter_down@red:stop pct-100:fts_shutter_100:open pct-90:fts_shutter_80:closed pct-80:fts_shutter_80:closed pct-70:fts_shutter_70:closed pct-60:fts_shutter_60:closed pct-50:fts_shutter_50:closed pct-40:fts_shutter_40:open pct-30:fts_shutter_30:open pct-20:fts_shutter_20:open pct-10:fts_shutter_10:open pct-0:fts_shutter_10:closed
attr az_rollo rl_autoStop 0
attr az_rollo rl_commandDown set ESPEasy_az_rollo gpio 0 0
attr az_rollo rl_commandStopDown set ESPEasy_az_rollo gpio 0 1
attr az_rollo rl_commandStopUp set ESPEasy_az_rollo gpio 4 1
attr az_rollo rl_commandUp set ESPEasy_az_rollo gpio 4 0
attr az_rollo rl_excessBottom 2
attr az_rollo rl_excessTop 4
attr az_rollo rl_resetTime 0
attr az_rollo rl_secondsDown 16
attr az_rollo rl_secondsUp 18
attr az_rollo rl_switchTime 1
attr az_rollo rl_type normal
attr az_rollo room ESPEasy
attr az_rollo webCmd open:closed:half:stop:pct





define rollos_manuell notify ESPEasy_.*_rollo:strom_output_(runter|hoch):.* {\\
my $richtung = '';;\
my $zustand = '';;\
my $geraet = $NAME;;\
$geraet =~ s/^ESPEasy_//;;\
\
if ($EVTPART0 eq "strom_output_hoch:") {\
  $richtung = "drive-up";;\
  $zustand = "open";;\
}\
if ($EVTPART0 eq "strom_output_runter:") {\
  $richtung = "drive-down";;\
  $zustand = "closed";;\
}\
\
if ($EVTPART1 eq "on" && Value("$geraet") ne "$richtung") {\
  fhem("set $geraet extern $zustand");;\
}\
elsif ($EVTPART1 eq "off" && Value("$geraet") eq "$richtung") {\
  fhem("set $geraet extern stop");;\
}\
}

87insane

Beim grobem überfliegen, denke ich, kann das notify nicht auslösen. Es soll reagieren auf den Namen:das Reading. Du hast den entsprechenden Rollo Namen aber nicht das Reading.

Zwei Wege zum Glück:
Wir sprechen grundsätzlich mal darüber, wie du deine Schalter eingerichtet hast. Oder du passt das auslösende Reading an.

In meinen Augen sollte man die espeasy geräte hier über Events steuern. Ich selber hab ursprünglich auch über gpio gesteuert. Aber deine rules im Schalter würden dann nicht geprüft. Somit wäre sw seitig ein gegenschalten möglich. Außer du hast es HW seitig eingegrenzt. Dazu sende ich mir die Relay Zuständen. Das sollte ich oben ggf. Mal besser erklären.

Da du aber hier ein perfekter test Kandidat bist, werde ich einfach so ne Art faq aus unserem Gespräch erstellen, wenn es für dich okay ist.

Gesendet von meinem LG-H850 mit Tapatalk


deathworm

Also folgende Rule habe ich definiert:


on taste_hoch#taste_hoch do
  if [taste_hoch#taste_hoch]=0 and [taste_runter#taste_runter]=1
   gpio,16,0
     else
   gpio,16,1
   delay 2000
  endif
endon

on taste_runter#taste_runter do
  if [taste_runter#taste_runter]=0 and [taste_hoch#taste_hoch]=1
   gpio,5,0
  else
   gpio,5,1
   delay 2000
  endif
endon


Rules wegen der Sicherheit sind mir egal, da ich von der Problematik des kleben bleibens eines Relais erst spaeter erfahren habe. Ich habe vor, das ganze wie im Thread beschrieben, zu beschalten. Also praktisch hoch ist nur das erste Relay an und bei Runter das erste und zweite zweite wegen der Schutzschaltung.

Ich brauche sowieso zwei Relais, somit ist mir das egal. Es sollte nur so sein, sofern umsetzbar, schon per ESP zu steuern, da ich vor meiner Regierung Angst habe, sollte es da mal ein Problem mit dem FHEM geben und die Rolllaeden lassen sich nicht mehr steuern. Weil derzeit wuerde das ja auch ohne FHEM rasp funktionieren.


Ui, klaro ist das fuer mich okay. Ich helfe auch gerne beim testen etc weiter. Ich kann auch gerne bei Bedarf die ganze Installation nochmal neu aufsetzen, falls es irgendwann Mal hilfreich sein sollte.


87insane

Ja das problem mit der regierung hat mich zu diesem projekt veranlasst. Es muss einfach sein und nutzbar wenn ich weg bin.

Wie oben schon gesagt, dein notify muss du anpassen. Meins reagiert auf Strom_Output_hoch oder runter. Du hast aber nur die Tasten. Ich sende über den schalte aber die relays und nicht die Tasten. Also das geht natürlich auch. Aber ich mach das lieber so, da der zustand der Tasten nicht der gleiche wie der des relays sein muss. Sicher ist sicher. Ist auch hier wegen der verbauten Technik nur ein kleiner Zugewinn aber er ist vorhanden.

1. am besten sende zum schalten ein event und keinen Relay Zustand.

2. passe dein notify an.

3. Glaube neu aufsetzen ist lieb gemeint aber oversized. Sinnig ist hier, deine fragen auf zu nehmen. Meine Anleitung ist ja in meinem Kopf passiert. Das ist auch der Grund für deine Fragen ;)
Denke aber mit der Anpassung aus Punkt zwei würde es laufen. FAQ mache ich aber auf jeden Fall und ggf. Trägst du ja dazu bei weitere Varianten zu ermöglichen. Zb deine rule ist natürlich direkt wieder eine Option :)

Gesendet von meinem LG-H850 mit Tapatalk


deathworm

#53
Hi,

ist nun eine ganz schoen lange Zeit her, als wir geschrieben haben. Zur Erklaerung, weshalb ich so lange hier nicht geantwortet habe: Anfang maerz kam meine Tochter zur Welt, leider nicht ohne Komplikationen. Mittlerweile ist nun soweit wieder alles gut, und es hat sich vieles wieder normalisiert. Ich bin nun heute wieder zum ersten Mal auf der Arbeit und habe hier auch meine Teststeuerung vor mir und wollte nun deinen Ratschlaegen folgen.

Nur leider muss ich ehrlich sagen, verstehe ich nicht was genau ich machen soll, da ich es doch exakt gemacht habe, wie in der ersten Seite beschrieben. Speziell den Teil mit den Notifys - muss ich da irgendein Update deiner neueren Posts einfließen lassen? Weil derzeit ist das ganze alles wie im ersten Post von dir nahezu exakt uebernommen. IP wurde geaendert. Ansonsten ist alles gleich, jeglicher Name habe ich ja genau gleich uebernommen.

Gruesse,
Sascha.

Beta-User

Na dann mal: Willkommen zurück.

Auch wenn es evtl. Sinn machen würde, wenn du dich mit den notify und dem Perl-Code ggf. etwas intensiver beschäftigst: M.E. ist der Weg über die "Custom-firmware" der einfachere, die 87insane da in dem Parallelthread ausgegraben hat. Da ist die ganze Steuerung auf dem Aktor, das macht es insgesamt sehr viel einfacher.

Gruß, Beta-User
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

87insane

#55
@deathworm: Hey und guten Morgen!
Zuerst mal herzlichen Glückwunsch zu deiner Tochter und gut das alles doch noch gut gegangen ist!!!

Nachdem ich selber weg von ESPeasy bin (bei den Rollos bzw. den T1 Schaltern) habe ich geschwenkt zu Tasmota. Die ESPeasy Variante lässt die T1 Schalter im schlechtesten Fall immer wieder abstürzen. Die Tasmota Variante bietet viele Vorteile was die Steuerung angeht und die Schalter laufen wie eine 1!

Lies mal hier: https://forum.fhem.de/index.php/topic,98366.msg917091.html#msg917091
Zusammen mit den Templates brauchst du dann nichts mehr machen und kannst alle deine Probleme über Board werden ;)

PS: Auch für alle anderen, die das hier mal lesen werden.... Mit dem Weg über Tasmota ist es auch viel weniger Aufwand. Es werden keine DOIFs oder NOTIFYs benötigt. Alles ist nach Aktivierung des entsprechendem Templates vorhanden.

deathworm

Hallo zusammen,

Erst einmal vielen Dank fuer die glueckwuensche  :)

Das Problem mit dem Tasmota ist fuer mich, dass ich ja den kompletten Schalter dafuer umtauschen muss. Ich habe aber ein neues jung cd set ueberall. Eventuell waere es noch moeglich gewesen, die einzelnen Taster auszutauschen. Aber einige sind in Kombination mit Schaltern oder Steckdosen und die muss ich natuerlich bestehen lassen. Somit brauche ich einen Aktor der hinter dem Taster zusaetzlich angeschlossen wird.

Und das ist doch mit den Tasmota Dingern nicht moeglich, richtig?

Beta-User

Hmmm, deine ursprüngliche Frage war nach meiner Erinnerung nach dem notify-Code für ESPEasy... Was man damit flashen kann, kann man auch mit tasmota "beglücken".

Für "hinter den Schalter" ist es eine Frage des Platzes, da sind die Sonoff-Dinger dem Vernehmen nach größer als z.B. die Shelly-Modelle. Da gibt es den 2-er/2.5er, der kann auch einen Shutter-Modus.

Aber grundsätzlich: Das ist WLAN-Zeugs, von daher habe ich selbst jüngst erst einen ZWave-Aktor für diesen Zweck verbaut; der kann auch Lamellensteuerung (ist eine Jalousie...). Bin zwar auch noch nicht ganz durch mit den vielen Optionen bei diesem speziellen Aktor, aber ich persönlich gebe gerne etwas mehr aus, um WLAN zu vermeiden, wo es geht.
Just my2ct.
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

87insane

Da ich leider nicht alles begreife aus dem Text, schlüssel ich einfach mal auf...

Sonoff T1: Hier kannst du Tasmota drauf flashen. Das geht auch innerhalb weniger Minuten, mit einlesen. Was du mit dem "jung cd set" meinst, weiß ich gerade nicht.

Wenn du etwas für hinter einer einzel Dose brauchst oder hinter einem einzel Schalter, würde ich einen Shelly 1 oder 1 PM nehmen. Für Rollos nimm einen 2.5er. Ach ja, eine Wechselschaltung würde auch über einen Shelly 1/ 1PM gehen. Mit den Tasmotas, in dem Fall die T1 Sonoff Schalter, geht natürlich alles was mit einem Schalter so geht. Ich selber habe aus Platzgründen im Bad auch keinen Sonoff T1 verbauen können. Somit habe ich das mit einem Shelly 2.5 gelöst, hinter einem Gira Rollo Schalter mit Uhrzeit usw. Tatsächlich finde ich diese Lösung um Längen besser! So hat die Dame des Hauses einen Schalter den sie kennt und auch Oma kann das bedienen.

Wenn ich das ganze neu aufbauen müsste, würde ich überall die Shellys einbauen. Gegen WLAN habe ich nichts, da man das ganze iot Zeugs ja in andere VLANs verteilen kann oder komplett ab zu schotten.

PS: Auf die Shellys muss auch kein Tasmota drauf. Auch wenn diese zum flashen vorbereitet sind, ist die original Firmware schon sehr gut. Die Sonoff Hardware ist in meinen Augen NICHT OHNE FLASH nutzbar. Du hast ESPeasy geflasht aber wie ich schon berichtete, scheint es da ab einem gewissen Firmware-Stand echt Probleme zu machen. Dazu gab es mal einen sehr langen Thread...

Beta-User

Zitat von: 87insane am 28 Mai 2019, 13:58:40
Was du mit dem "jung cd set" meinst, weiß ich gerade nicht.
Gemeint ist eine Schalterserie der Firma Jung, wenn es mich nicht ganz täuscht.

ZitatPS: Auf die Shellys muss auch kein Tasmota drauf.
sorry, wenn das nicht klar genug geschrieben war: Shelly kann man in der Tat mWn. mit der Stock firmware nutzen, auch im Roller-Mode.

Zitat[...] So hat die Dame des Hauses einen Schalter den sie kennt und auch Oma kann das bedienen.
Dto. für eine ganze Reihe ZWave-Aktoren.

Zitat
Wenn ich das ganze neu aufbauen müsste, würde ich überall die Shellys einbauen. Gegen WLAN habe ich nichts, da man das ganze iot Zeugs ja in andere VLANs verteilen kann oder komplett ab zu schotten.
Man sollte nur anmerken: Das Abschotten ist was für Experten. "Doofe"-Heimnutzer wie meinereiner, der in der Beziehung faul ist und Teile des WLANs nach wie vor mittels FritzBox bedient, sollten entweder eine andere Lösung für die HA wählen (mein Weg) oder sich mit den Tücken der Netzwerktechnik beschäftigen (87insane hat es wohl wie einige andere auch im Griff).

Ich bevorzuge jedenfalls grundsätzlich "kurze Wege", und da ist ein USB-Dongle kaum zu schlagen...
Just my2ct.
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

87insane

Ich warte mal was deathworm dazu sagt. Für mich war dein Text gut zu erkennen. Der Text von deathworm ist leider für mich eher schwer...

ZitatDto. für eine ganze Reihe ZWave-Aktoren.
Jap.

ZitatGemeint ist eine Schalterserie der Firma Jung, wenn es mich nicht ganz täuscht.
Kenne ich nicht aber ist denen an sich, sicher auch egal was dahinter klemmt. Am Ende ist es ja doch nur ein Schalter.

ZitatMan sollte nur anmerken: Das Abschotten ist was für Experten. "Doofe"-Heimnutzer wie meinereiner, der in der Beziehung faul ist und Teile des WLANs nach wie vor mittels FritzBox bedient, sollten entweder eine andere Lösung für die HA wählen (mein Weg) oder sich mit den Tücken der Netzwerktechnik beschäftigen (87insane hat es wohl wie einige andere auch im Griff).
Ist mein Job das zu wissen :) Immerhin muss ich dafür nicht x Sachen googlen!
Alles was FHEM hier angeht, wie auch damals die notify zb musste ich mir zusammen suchen und war froh, hier Hilfe zu bekommen! Am Ende: "Viele Wege führen nach Rom"..

Bin gespannt was gleich oder die Tage noch kommt an Fragen. Driften hier ja gerade ein wenig ab.. Danke für dein Kompliment @Beta-User! :)

deathworm

#61
Hello again,

einige Zeit ist vergangen und ich habe deine Beitraege im Stillen verfolgt. Die T1 Schalter waren fuer mich nie ein Thema, wie von "Beta-User" angemerkt, habe ich ein Jung Schalterprogramm und da passen die Sonoff Schalter nicht rein und der WAF (wife acceptance factor) war natuerlich, dass Sie hiervon nichts merkt.

In deinen weiteren Beitraegen, hast du von den Shellys geredet. Ich habe in der Zwischenzeit erst einen bestellt und ausgiebig getestet. Mittlerweile habe ich 14 dieser Shelly 2.5 verbaut und muss sagen, ich bin absolut happy. Die funktionieren einwandfrei. Ich hatte lediglich bisher einmal das Problem, das ein bereits bestehender seine WLAN Verbindung verloren hat und erst per Sicherung raus/rein wieder funktioniert hat. Und halt das Problem mit den ungenauen Prozentangaben. Aber das soll nicht das Problem in diesem Thread sein.

Das Zeug funktioniert insgesamt echt klasse und auch das Problem mit "an einem Rollladen den Schalter betaetigen und weglaufen" ist ja mit dem Shelly kein Problem. Die Baugroesse ist auch fantastisch. Ich hatte mir vor den Shellys ein "luani" Modul besorgt, ist aber um einiges groesser als das Shelly.

Somit auch noch ein dickes Danke an dich fuer die viele Muehe zu dem Modul.


-Sascha

87insane

Danke Dir!

Die Shellys kamen leider erst später auf den Markt. Mache aktuell auch alles mit denen.
Für die Shellys hatte ich ein MQTT2 Template gebastelt, welches die Teile genau so aussehen und steuern lässt, wie das hier bei den T1ern wäre.

Ein Modul selber habe ich nicht gebaut. Nur das nervige Einrichten, habe ich etwas einfacher gemacht mit Beta-User zusammen. Gerne kannst du auch Wünsche äußern oder an der Entwicklung teilnehmen :)

Was die Shellys und die pct / % Anzeige angeht - Ist bereits an die Kollegen weiter gegeben. Mit der nächsten oder folgenden FW wird es sicher besser.
PS: Hab für die Dinger extra spezielle devStateIcons gebaut. Hast du sicher schon gesehen. Das ist echt super in FHEM mit den Dingern.

Danke nochmal für deine lange Danksagung -> Gefällt mir :)

PS: Ich hätte nicht gedacht, das einem User (in dem Fall mir) andere Personen folgen. Das ist schon eine kleine Ehre :)