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

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

Vorheriges Thema - Nächstes Thema

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