Garagentorsteuerung mit Sonoff

Begonnen von hanswerner1, 28 Mai 2017, 18:02:08

Vorheriges Thema - Nächstes Thema

trs

#45
@Per: Danke für den Vorschlag.

Mein Tor hat aber nur eine ein-Knopf-Bedienung. Drücken = auf, nochmal drücken = stop, nochmal drücken = zu. Und als Zstandsmeldung auf und zu. Wenn beides nicht zutrifft = move.

Funktioniert dein Vorschlag damit?

Per

Weiss ich nicht.
Die Zustandsmeldung passt auf jeden Fall (wird ja extern erzeugt).
Zitat von: trs am 02 Februar 2018, 12:47:01nochmal drücken = stop
Auch wenn es steht? Oder nur, wenn es gerade "move" ist? Und in welche Richtung fährt es aus "stopp" heraus? In die alte oder immer nach oben?
Falls letzteres, kannst du alle set-Befehle durch set xxx toggle (toggle ist ja eh nur ein fhem-interner Platzhalter) ersetzen.

Ein mehrfaches Start-Stopp ohne Erreichen der Endlage könnte aber Schwierigkeiten machen, da habe ich nicht weiter geschaut. Dazu müsste man die Status zwischenspeichern oder die Bedingungen erweitern.

trs

Folgendermaßen :

Tor zu - Knopfdruck - Tor geht auf - Knopfdruck - Tor stoppt - Knopfdruck - Tor geht wieder zu

Tor auf - Knopfdruck - Tor geht zu - Knopfdruck -  Tor stoppt - Knopfdruck - Tor geht auf


trs

Bin noch nich viel weiter. Dadurch, dass der Knopf 25 sec gedrückt gehalten wird (die Zeit für eine komplette Torfahrt) kann in dieser Zeit nicht mit dem originalen Schalter "dazwischen gefunkt" werden. Somit gibt es keine undefinierte Stellung.

define doif_Garagentor_oeffnen DOIF ([Garagentor:state] eq "toggle") (set Garagentor "wait"; set ESPEasy_06_Garagentor on; sleep 25; set ESPEasy_06_Garagentor off)

Aber weiter bin ich nicht.

RaspiLED

#49
Hi,
also ich habe hier ein Hörmann Garagentor, das hat auch nur einen Eingang (oder Funkkanal auf der Fernbedienung).

Tor auf -> Taste -> Tor fährt zu -> Tor zu -> Taste -> Tor auf (oder)
Tor auf -> Taste -> Tor fährt zu-> Taste -> Tor hält an -> Taste -> Tor fährt auf -> Tor auf

Ich habe mir Deine Frage zum Anlass genommen einen ESP8266 mit ESPEasy Mega (Testversion 4096) zu flashen.

Kernideen:
- ESPEasy Bridge als FHEM Gateway
- ESPEasy Device als Gegenpart zur ESP8266 Hardware in der Garage,
  * zeigt den aktuellen Status der Garage
  * und liest dafür zwei Switches/Reedkontake Tor_zu bzw. "Reed_Closed" (GPIO-12) und Tor_auf bzw. "Reed_Opened" (GPIO-13) und
  * fährt/stoppt das Garagentor über longpulse 2sec (GPIO-16)
  * hat Status LED (GPIO-2)
- dummy ,,Garage" zur Interaktion mit HomeBridge/Siri
- notify übergibt tatsächlichen Status des Tors an Garage für Homebridge/Siri


Sieht jetzt schon ganz okay aus, die lists liefere ich hier nach:


ESPEasy Hardware wesentliche Einstellungen:

Seite Tools, Button Advanced:

Rules: checked

Seite Controller:

Protocol: FHEM HTTP
Locate Controller: Use Hostname
Controller Hostname: fhem.fritz.box
Controller Port: 8383
Controller User: Beispiel
Controller Password: Geheim
Enabled: checked

Seite Hardware:

Wifi Status LED: none
I2C: none und none
SPI: not checked
Alle Pin mode: default
außer 2 (D4), 12 (D6), 13 (D7): Input
und 16 (D0): Output low

Seite Devices, 4 Stück:

Analog Input - internal
Name: [leer]
Enabled: checked
Internal PullUp: checked
Inversed Logic : checked
1st GPIO: GPIO-2 (D4)
Switch Type: Switch
Switch Button Type: Normal Switch
Sent Bootstate: checked
Sent to Controller: checked
Delay: 0
Value 1 Name: LED

Analog Input - internal
Name: Garagentor
Enabled: checked
Internal PullUp: checked
Inversed Logic : checked
1st GPIO: GPIO-12 (D6)
Switch Type: Switch
Switch Button Type: Normal Switch
Sent Bootstate: checked
Sent to Controller: checked
Delay: 0
Value 1 Name: Reed_Closed

Analog Input - internal
Name: Garagentor
Enabled: checked
Internal PullUp: checked
Inversed Logic : checked
1st GPIO: GPIO-13 (D7)
Switch Type: Switch
Switch Button Type: Normal Switch
Sent Bootstate: checked
Sent to Controller: checked
Delay: 0
Value 1 Name: Reed_Opened

Analog Input - internal
Name: Garagentor
Enabled: checked
Internal PullUp: checked
Inversed Logic : not checked
1st GPIO: GPIO-16 (D0)
Switch Type: Switch
Switch Button Type: Normal Switch
Sent Bootstate: checked
Sent to Controller: checked
Delay: 0
Value 1 Name: Switch

Seite Rules

Rules Set 1:

On System#Boot do
  timerSet,1,1
  timerSet,2,18
EndOn

On Garagentor#Reed_Closed do
  timerSet,1,1
  timerSet,2,6
EndOn

On Garagentor#Reed_Opened do
  timerSet,1,1
  timerSet,2,12
EndOn

On Rules#Timer=1 do
  timerSet,3,2
  gpio,2,0
EndOn

On Rules#Timer=2 do
  timerSet,1,0
  timerSet,3,0
  gpio,2,1
EndOn

On Rules#Timer=3 do
  timerSet,1,1
  gpio,2,1
EndOn


FHEM Seite:

list espBridge

Internals:
CONNECTS   2290
DEF        bridge 8383
FD         21
HOST       bridge
IPV        4
MAX_HTTP_SESSIONS 3
MAX_QUEUE_SIZE 250
NAME       espBridge
NOTIFYDEV  global
NR         138
NTFY_ORDER 50-espBridge
PORT       8383
STATE      initialized
SUBTYPE    bridge
TYPE       ESPEasy
VERSION    1.35

READINGS:
2018-02-03 18:26:27   state           initialized

helper:
pm:
Encode     1
JSON       1
queue: 192.168.188.120:
sessions: 192.168.188.120 0

Attributes:
authentication 1
autocreate 1
combineDevices 0
group      ESPEasy Bridge
room       ESPEasy,Gateways,Software
verbose    3

set espBridge pass geheim
set espBridge user Beispiel

list ESPEasy_ESP_Garage:

Internals:
DEF        192.168.188.120 80
espBridge ESP_Garage
ESP_BUILD  20000
ESP_BUILD_GIT mega-20180111
ESP_BUILD_NOTES  - Mega
ESP_NODE_TYPE_ID 17:
ESP Easy Mega ESP_SLEEP  0
ESP_UNIT   1
ESP_VERSION 2
HOST       192.168.188.120
IDENT      ESP_Garage
INTERVAL   300
IODev      espBridge
LASTInputDev espBridge
MSGCNT     1999
NAME       ESPEasy_ESP_Garage
NOTIFYDEV  global
NR         162
NTFY_ORDER 50-ESPEasy_ESP_Garage
PORT       80
STATE      -57.00
SUBTYPE    device
TYPE       ESPEasy
VERSION    1.35
espBridge_MSGCNT 1999
espBridge_TIME 2018-02-04 18:01:33   

READINGS:
2018-02-04 10:59:57   LED             off
2018-02-04 18:01:33   WiFi_RSSI       -57.00
2018-02-04 17:58:56   presence        present
2018-02-03 18:26:27   state           opened

helper:
fpc        1517678797
pm: Encode     1
JSON       1
received:
LED        1517738397
WiFi_RSSI  1517763693

Attributes:
IODev      espBridge
Interval   300
devStateIcon /close:ios-on-green:open/open:ios-off:close/absent:10px-kreis-rot:statusRequest/.*:ios-NACK:check/
eventMap   /longpulse 16 1 2:toggle/
group      ESPEasy
Device icon       building_carport
presenceCheck 1
readingSwitchText 1
room       Garage,ESPEasy,Hardware,MQTT
setState   0
stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"WiFi_RSSI","") }
webCmd     reboot:toggle

list ESPEasy_ESP_Garage_Garagentor:

Internals:
   DEF        192.168.188.120 80 espBridge ESP_Garage_Garagentor
   ESP_BUILD  20000
   ESP_BUILD_GIT mega-20180111
   ESP_BUILD_NOTES  - Mega
   ESP_NODE_TYPE_ID 17: ESP Easy Mega
   ESP_SLEEP  0
   ESP_UNIT   1
   ESP_VERSION 2
   HOST       192.168.188.120
   IDENT      ESP_Garage_Garagentor
   INTERVAL   300
   IODev      espBridge
   LASTInputDev espBridge
   MSGCNT     306
   NAME       ESPEasy_ESP_Garage_Garagentor
   NOTIFYDEV  global
   NR         163
   NTFY_ORDER 50-ESPEasy_ESP_Garage_Garagentor
   PORT       80
   STATE      Close
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    1.35
   espBridge_MSGCNT 306
   espBridge_TIME 2018-02-04 10:59:53
   READINGS:
     2018-02-04 10:59:53   Reed_Closed     on
     2018-02-04 10:59:52   Reed_Opened     off
     2018-02-04 10:40:21   Switch          off
     2018-02-04 18:09:01   presence        absent
     2018-02-04 18:09:01   state           absent
   helper:
     fpc        1517678795
     pm:
       Encode     1
       JSON       1
     received:
Attributes:
   IODev      espBridge
   Interval   300
   devStateIcon Open:fts_garage_door_10:toggle Close:fts_garage_door_100:toggle Running:fts_garage_door_50:toggle
   eventMap   /longpulse 16 1 2:running/longpulse 16 1 2:open/longpulse 16 1 2:closed/longpulse 2 0 2:sim/gpio 12 0:simclose/gpio 13 1:simclose2/gpio 12 1:simopen2/gpio 13 0:simopen/longpulse 16 1 2:toggle/longpulse 16 1 1:autoclose/
   genericDeviceType garage
   group      ESPEasy Device
   icon       fts_garage
   presenceCheck 1
   readingSwitchText 1
   room       ESPEasy,Garage,Hardware
   setState   3
   siriName   Garage
   stateFormat {ReadingsVal($name,"Reed_Opened","") eq "on" ? "Open" : ReadingsVal($name,"Reed_Closed","") eq "on" ? "Close" : "Running"}
   webCmd     toggle:autoclose:sim

list ESPEasy_ESP_Garage_Garagentor_DOIF_1:

Internals:
   DEF        ([ESPEasy_ESP_Garage_Garagentor:"^sim$"] and [ESPEasy_ESP_Garage_Garagentor] eq "Close") (
set ESPEasy_ESP_Garage_Garagentor simopen2,
set ESPEasy_ESP_Garage_Garagentor simopen)
DOELSEIF ([ESPEasy_ESP_Garage_Garagentor:"^sim$"]) (
set ESPEasy_ESP_Garage_Garagentor simclose2,
set ESPEasy_ESP_Garage_Garagentor simclose)
DOELSE ()
   NAME       ESPEasy_ESP_Garage_Garagentor_DOIF_1
   NR         195
   NTFY_ORDER 50-ESPEasy_ESP_Garage_Garagentor_DOIF_1
   STATE      cmd_3
   TYPE       DOIF
   READINGS:
     2018-02-04 18:14:06   Device          ESPEasy_ESP_Garage_Garagentor
     2018-02-04 10:34:55   cmd             3
     2018-02-04 10:34:55   cmd_event       ESPEasy_ESP_Garage_Garagentor
     2018-02-04 10:34:55   cmd_nr          3
     2018-02-04 18:14:06   e_ESPEasy_ESP_Garage_Garagentor_STATE Close
     2018-02-04 18:14:06   e_ESPEasy_ESP_Garage_Garagentor_events absent
     2018-02-03 22:13:07   mode            enabled
     2018-02-04 10:34:55   state           cmd_3
   Regex:
   condition:
     0          EventDoIf('ESPEasy_ESP_Garage_Garagentor',$hash,'^sim$',1) and InternalDoIf($hash,'ESPEasy_ESP_Garage_Garagentor','STATE') eq "Close"
     1          EventDoIf('ESPEasy_ESP_Garage_Garagentor',$hash,'^sim$',1)
   devices:
     0           ESPEasy_ESP_Garage_Garagentor
     1           ESPEasy_ESP_Garage_Garagentor
     all         ESPEasy_ESP_Garage_Garagentor
   do:
     0:
       0           set ESPEasy_ESP_Garage_Garagentor simopen2, set ESPEasy_ESP_Garage_Garagentor simopen
     1:
       0           set ESPEasy_ESP_Garage_Garagentor simclose2, set ESPEasy_ESP_Garage_Garagentor simclose
     2:
       0     
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      absent
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   ESPEasy_ESP_Garage_Garagentor
     timerevent absent
     triggerDev ESPEasy_ESP_Garage_Garagentor
     timerevents:
       absent
     timereventsState:
       state: absent
     triggerEvents:
       absent
     triggerEventsState:
       state: absent
   internals:
     0           ESPEasy_ESP_Garage_Garagentor:STATE
     all         ESPEasy_ESP_Garage_Garagentor:STATE
   itimer:
   readings:
   trigger:
     all         ESPEasy_ESP_Garage_Garagentor
   uiState:
   uiTable:
Attributes:
   icon       helper_doif
   room       Garage,Software

list ESPEasy_ESP_Garage_Garagentor_notify_1:

Internals:
   DEF        ESPEasy_ESP_Garage_Garagentor:Ree:.on.*|ESPEasy_ESP_Garage_Garagentor:Ree:.off.* {
my $r1 = Value("ESPEasy_ESP_Garage_Garagentor");;
my $r2 = Value("Garage");;
if ($r1 eq "Close") {
  fhem "setreading Garage CurrentDoorState closed;set Garage off"
} else {
if ($r1 eq "Open") {
  fhem "setreading Garage CurrentDoorState opened;set Garage on"
} else {
if ($r1 eq "Running") {if ($r2 eq "closed") {
  fhem "setreading Garage CurrentDoorState opening"} else {
  fhem "setreading Garage CurrentDoorState closeing"}
} else {
  fhem "setreading Garage CurrentDoorState $r1",,$r1
}}}}
   NAME       ESPEasy_ESP_Garage_Garagentor_notify_1
   NOTIFYDEV  ESPEasy_ESP_Garage_Garagentor
   NR         192
   NTFY_ORDER 50-ESPEasy_ESP_Garage_Garagentor_notify_1
   REGEXP     ESPEasy_ESP_Garage_Garagentor:Ree:.on.*|ESPEasy_ESP_Garage_Garagentor:Ree:.off.*
   STATE      2018-02-04 11:00:01
   TYPE       notify
   READINGS:
     2018-02-04 10:18:58   state           active
Attributes:
   icon       system_fhem_reboot
   room       Garage,Software

list ESPEasy_ESP_Garage_Garagentor_watchdog_1:

Internals:
   CMD        define Garage_autclose at +00:00:02 set ESPEasy_ESP_Garage_Garagentor autoclose
   DEF        ESPEasy_ESP_Garage_Garagentor:autoclose 00:00:30 ESPEasy_ESP_Garage_Garagentor:Reed_Closed:.on define Garage_autclose at +00:00:02 set ESPEasy_ESP_Garage_Garagentor autoclose
   NAME       ESPEasy_ESP_Garage_Garagentor_watchdog_1
   NOTIFYDEV  ESPEasy_ESP_Garage_Garagentor,ESPEasy_ESP_Garage_Garagentor_watchdog_1
   NR         193
   NTFY_ORDER 50-ESPEasy_ESP_Garage_Garagentor_watchdog_1
   RE1        ESPEasy_ESP_Garage_Garagentor:autoclose
   RE2        ESPEasy_ESP_Garage_Garagentor:Reed_Closed:.on
   STATE      defined
   TO         30
   TYPE       watchdog
   READINGS:
     2018-02-03 21:40:53   Activated       activated
     2018-02-02 23:30:29   Triggered       triggered
     2018-02-02 19:10:52   state           defined
Attributes:
   autoRestart 1
   icon       ampel_gruen
   room       Garage,Software

list Garage:

Internals:
   NAME       Garage
   NR         197
   STATE      closed
   TYPE       dummy
   READINGS:
     2018-02-04 11:00:01   CurrentDoorState closed
     2018-02-03 19:57:39   TargetDoorState closed
     2018-02-04 11:00:01   state           off
Attributes:
   devStateIcon closed:fts_garage_door_100:on opened:fts_garage_door_10:off opening:fts_garage_door_30:on closing:fts_garage_door_70:off
   genericDeviceType garage
   icon       fts_garage
   readingList CurrentDoorState
   room       Garage,Homekit,Software
   stateFormat {
(ReadingsVal($name,"state","") eq "on" ||
ReadingsVal($name,"state","") eq "opened" ) ?
  (ReadingsVal($name,"CurrentDoorState","") eq "opened" ? "opened" : "opening" ) :
    (ReadingsVal($name,"state","") eq "off" ||
ReadingsVal($name,"state","") eq "closed" ) ?
     (ReadingsVal($name,"CurrentDoorState","") eq "closed" ? "closed" : "closing" ) : "undefined"}
   webCmd     on:off

list Garage_notify_1:

Internals:
   CFGFN     
   DEF        Garage:o*{
if ($EVENT eq "on") {
  fhem "setreading Garage TargetDoorState opened"
} else {
  fhem "setreading Garage TargetDoorState closed"
}
}
   NAME       Garage_notify_1
   NOTIFYDEV  Garage
   NR         323
   NTFY_ORDER 50-Garage_notify_1
   REGEXP     Garage:o*{
   STATE      active
   TYPE       notify
   READINGS:
     2018-02-03 20:00:38   state           active
Attributes:
   icon       system_fhem_reboot
   room       Garage,Software



Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

RaspiLED

Hi,


wow selbst copy und paste dauert ;-) Wenn noch was fehlt einfach melden.


Deine "Schliesse nach drei Minuten Logik" steckt in dem Watchdog.


Das DoIf ist nur zur Simulation der Reedkontakte.


Die Garage ist nur für homebridge/Siri.
Das notify vermittelt zwisvhen ESP Device und homebridge.


Gruß Arnd
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

trs

@RasiLED:

ich teste Deine Lösung mit einem zweiten Sonoff Basic. Der erste hängt schon in der Garage. Bei dem Basic weden der GPIO 1 (reed zu), GPIO 3 (reed auf) und der GPIO 14 (Relais Tor Betätigung) genutzt. Muss ich ändern. Welche ESPEasy Version hast Du verwendet?

Danke für Deine Hilfe.


RaspiLED

#52
Hi,
mega-20180111 git test version von hier:
https://github.com/letscontrolit/ESPEasy/releases

" On the linked page you will find two daily builds of ESPEasy.
For some clarification:
Release V2.0-<date>: Beta version of the next stable release, no new features, bugfixes only.
Release mega-<date>: Bleeding edge of development"

Ich brauchte die Testversion auf einem ESP w/ der (Klingel-)Tonausgabe auf einem Lautsprecher rtttl.

Gruß Arnd



Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

trs

#53
Hallo Arnd,
ich bin jetzt erst wieder dazu gekommen, mich um die Garagentor Steuerung zu kümmern. Ein paar Fragen :

- Was bedeuteten die Smylies im Listing?
- Bei dem Sonoff Basic kann ich nur 3 GPIOs nutzen: GPIO 1 und 3 für auf und zu, und 14 für das Relais. Wozu ist dieLED? Kann ich die eingebaute LED an GPIO 13 verwenden?

Gruß
Thorsten

RaspiLED

#54
Hi, also die LED ist die eingebaute auf meinem ESP ;-) Insofern ja.
Smileys? Habe ich keine in meinen Listings. Ist das ein Autoersetzen Deines Endgerätes? Schau mal in der Normalen Webansicht. Ah jetzt sehe ich was Du meinst in Tapatalk:

Garage:o*{
if ($EVENT eq "on")

also Doppelpunkt kleinesO ":o" wird zu Smiley

Ich habe oben noch eine zip mit dem Auszug aus meiner fhem.cfg angehängt!

Gruß Arnd


Raspi2 mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, Bravia, ...
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

RaspiLED

Hi,
Ist hier Interesse für eine upgedatete Lösung der ESPeasy Firmware auf Sonoff/Wemos D1 mit Relais für Hörmann Supramatic Antriebe?
Bei mir läuft jetzt seit ca. 1 Woche "alles" auf dem ESP selbst. Inklusive Automatikmode mit 5 Minuten Überwachung auf Zielzustand und Relais Status und LED Status und Simulationsmode und ...
FHEM Integration passt, LogFile und Graph zum Verhalten stehen.
HomeBridge Mappings über CurrentDoorState, TargetDoorState und Obstruction inklusive ;-)


Falls es noch wen Anderen interessiert, würde ich noch zwei Dinge umbauen:
1) Gleiche GPIOs wie der Sonoff (Belegung muss mir jemand sagen!)
2) Native States wie bei Homebridge (Ist im Moment invers und muss per Mapping getauscht werden)


Gruß Arnd
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

hanswerner1

Zitat von: RaspiLED am 23 Februar 2018, 21:57:52
Hi,
Ist hier Interesse für eine upgedatete Lösung der ESPeasy Firmware auf Sonoff/Wemos D1 mit Relais für Hörmann Supramatic Antriebe?

Würde mich schon interessieren wie du das umgesetzt hast.
Du hast die Firmware des ESP so angepasst, das die komplette Steuerung im ESP läuft und an FHEM nur noch die Torzustände gesendet werden ?

HW1

trs

#57
Moin,
habe auch Interesse an der Sonoff All-In Lösung.

Folgende GPIOs beim Sonoff Basic (Serial Port abgeschaltet) :

GPIO 1 und 3   Eingang für Tor auf und zu
GPIO 13 LED
GPIO 14  Schaltrelais (muss hardwareseitig potentialfrei gemacht werden, siehe Seite 1)


hanswerner1

#58
Zitat von: trs am 24 Februar 2018, 17:43:16
GPIO 1 und 2   Eingang für Tor auf und zu
GPIO 13 LED
GPIO 14  Schaltrelais (muss hardwareseitig potentialfrei gemacht werden, siehe Seite 1)

Bei mir, Sonoff Basic ist es:
Relais      GPIO 12
TOR_zu   GPIO 1
TOR_auf  GPIO 3

Das sollte doch bei alles Sonoffs Basic gleich sein [emoji47]

trs