FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: FunkOdyssey am 14 August 2018, 09:25:38

Titel: Warema Mobile System (WMS) mit WMS Stick?
Beitrag von: FunkOdyssey am 14 August 2018, 09:25:38
Hallo,

ich arbeite mich langsam an das Thema WAREMA Mobile System ran.
Aktuell sind Handsender und eine Wetterstation vorhanden, die auf 2,4 Ghz direkt mit einem Markisenmotor kommunizieren.

Bei der Recherche bin ich darüber gestolpert, dass es einen Warema WMS Stick (1002775) gibt, den man vielleicht sogar als CUL einsetzen könnte.

In OpenHAB und ioBroker macht man aktuelle scheinbar auch Fortschritte mit dem WMS.

Es hat nicht zufällig schon jemand das Warema Mobile System über FHEM (oder NodeRed, MQTT, etc.) anzapfen können, oder?

Kann mir jemand mit mehr Erfahrung sagen, ob eine Schnittstelle überhaupt eine Chance hat?

Vielen Dank.
Titel: Antw:Warema Mobile System (WMS) mit WMS Stick?
Beitrag von: h002 am 27 Juni 2019, 21:38:52
Hallo, bist du bei diesem Thema schon weiter gekommen?

Mein Versuch den Stick bei OpenHAB automatisch anzulernen, scheiterte leider. Auch der Versuch den Stick manuell einzubinden schlug fehl, da ich keine Ahnung habe, wie ich an die PANID komme. Das Auslesen des Traffics vom Stick mittels Wireshark habe ich nicht hinbekommen, da ich nicht das wie im ioBroker beschriebene Paket gefunden habe.

Auch ich würde gerne in FHEM den Stick einbinden wollen.
Titel: Antw:Warema Mobile System (WMS) mit WMS Stick?
Beitrag von: h002 am 19 August 2020, 16:52:32
Mit openHAB2 konnte ich nun endlich meine Markise über WMS ansteuern (https://github.com/zeezee300/openwms). Dort konnte ich das entsprechende Binding anlegen und einen "shutter" zum Hoch- und Runterfahren definieren. Allerdings möchte ich bei FHEM bleiben und suche einen Weg, diesen "shutter" von FHEM aus zu steuern. Ist es möglich, diesen Schalter in openHAB2 von FHEM aus zu bedienen? Eine direkt Integration von WMS in FHEM scheint es ja derzeitig nicht zu geben.
Titel: Antw:Warema Mobile System (WMS) mit WMS Stick?
Beitrag von: FunkOdyssey am 19 August 2020, 16:55:54
Kann man das Gerät in OpenHAB nicht per MQTT an FHEM weiterreichen?
Ich habe mich bisher vor dieser komplexen Lösung gestreubt Aber es scheint darauf hinauszulaufen.
Titel: Antw:Warema Mobile System (WMS) mit WMS Stick?
Beitrag von: h002 am 20 August 2020, 10:14:52
Ich versuche es jetzt über die REST API von openHAB, um den Warema WMS Stick zu steuern und in ein FHEM-Device einzubinden.

Beispiel


curl -X POST --header "Content-Type: text/plain" --header "Accept: application/json" -d "DOWN" "http://openhab.local:8080/rest/items/OpenWMSBlindActuator_Shutter"
curl -X POST --header "Content-Type: text/plain" --header "Accept: application/json" -d "UP" "http://openhab.local:8080/rest/items/OpenWMSBlindActuator_Shutter"
curl -X POST --header "Content-Type: text/plain" --header "Accept: application/json" -d "STOP" "http://openhab.local:8080/rest/items/OpenWMSBlindActuator_Shutter"
#Statusabfrage
curl -X GET --header "Accept: text/plain" "http://openhab.local:8080/rest/items/OpenWMSBlindActuator_Shutter/state"
Titel: Antw:Warema Mobile System (WMS) mit WMS Stick?
Beitrag von: h002 am 20 August 2020, 17:15:35
Scheint alles zu funktionieren. Folgendes habe ich gemacht:

1. openHAB2 auf einem Raspberry installiert und gemäßt der Anleitung von https://github.com/zeezee300/openwms OpenWMS Binding installiert
2. Den Warema WMS Stick per USB direkt am Raspberry angeschlossen und das OpenWMSBindung in openHAB2 eingerichtet. Es war anschließend sofort online.
3. Den OpenWMS Blind Actuator konfiguriert. Wichtig ist hier die korrekte Hinterlegung der Device ID und PANID.
4. In openHAB2 (Paper UI) unter Add-ons -> User Interfaces "REST Documentation" installiert, damit ich an die CURL-Kommandos komme.
5. Auf der Startseite von openHAB2 (http://openhab.local:8080/start/index) "REST API" selektiert und mir die CURL-Kommandos zusammen gesucht (geht dort sehr komfortabel)
6. Ein dummy-Device, DOIF und eine kleine Subroutine angelegt. Wenn unter 2 und 3 alles online ist, geht alles aus FHEM aus anzusteuern.

Mal sehen wie stabil dies läuft.

DUMMY-Device

Internals:
   CFGFN     
   FUUID      5f3e3247-f33f-8b20-aef7-ad198fc3bb3ebe6c
   NAME       WaremaMarkise
   NR         42150
   STATE      up
   TYPE       dummy
   READINGS:
     2020-08-20 17:05:54   state           up
     2020-08-20 17:05:51   statusWaremaBlind online
     2020-08-20 17:05:51   statusWaremaTransceiver online
Attributes:
   room       Wohnzimmer
   webCmd     status:up:down:stop



DOIF


Internals:
   CFGFN     
   DEF        ([WaremaMarkise] eq "status")
({switchWarema("status")})
##(set WaremaMarkise {(qx("curl -X GET --header 'Accept: text/plain' 'http://openhab.local:8080/rest/items/OpenWMSBlindActuator_Shutter/state'"))})
DOELSEIF ([WaremaMarkise] eq "down")
("curl -X POST --header 'Content-Type: text/plain' --header 'Accept: application/json' -d 'DOWN' 'http://openhab.local:8080/rest/items/OpenWMSBlindActuator_Shutter'")
DOELSEIF ([WaremaMarkise] eq "up")
("curl -X POST --header 'Content-Type: text/plain' --header 'Accept: application/json' -d 'UP' 'http://openhab.local:8080/rest/items/OpenWMSBlindActuator_Shutter'")
DOELSEIF ([WaremaMarkise] eq "stop")
("curl -X POST --header 'Content-Type: text/plain' --header 'Accept: application/json' -d 'STOP' 'http://openhab.local:8080/rest/items/OpenWMSBlindActuator_Shutter'")
DOELSEIF ([06:00-23:00,+:30])
({switchWarema("status")})


   FUUID      5f3e3686-f33f-8b20-2545-f972aaacc19452ad
   MODEL      FHEM
   NAME       switchWaremaDOIF
   NOTIFYDEV  global,WaremaMarkise
   NR         42301
   NTFY_ORDER 50-switchWaremaDOIF
   STATE      cmd_3
   TYPE       DOIF
   VERSION    22588 2020-08-12 19:25:15
   READINGS:
     2020-08-20 17:05:54   Device          WaremaMarkise
     2020-08-20 17:05:54   cmd             3
     2020-08-20 17:05:54   cmd_event       WaremaMarkise
     2020-08-20 17:05:54   cmd_nr          3
     2020-08-20 17:05:54   e_WaremaMarkise_STATE up
     2020-08-20 14:53:24   mode            enabled
     2020-08-20 17:05:54   state           cmd_3
     2020-08-20 14:53:24   timer_01_c05    21.08.2020 06:00:00
     2020-08-20 14:53:24   timer_02_c05    20.08.2020 23:00:00
     2020-08-20 17:00:00   timer_03_c05    20.08.2020 17:30:00
   Regex:
     accu:
     cond:
       WaremaMarkise:
         0:
           &STATE     ^WaremaMarkise$
         1:
           &STATE     ^WaremaMarkise$
         2:
           &STATE     ^WaremaMarkise$
         3:
           &STATE     ^WaremaMarkise$
         4:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'WaremaMarkise','STATE') eq "status"
     1          ::InternalDoIf($hash,'WaremaMarkise','STATE') eq "down"
     2          ::InternalDoIf($hash,'WaremaMarkise','STATE') eq "up"
     3          ::InternalDoIf($hash,'WaremaMarkise','STATE') eq "stop"
     4          ::DOIF_time($hash,0,1,$wday,$hms)
   days:
   do:
     0:
       0          {switchWarema("status")}
     1:
       0          "curl -X POST --header 'Content-Type: text/plain' --header 'Accept: application/json' -d 'DOWN' 'http://openhab.local:8080/rest/items/OpenWMSBlindActuator_Shutter'"
     2:
       0          "curl -X POST --header 'Content-Type: text/plain' --header 'Accept: application/json' -d 'UP' 'http://openhab.local:8080/rest/items/OpenWMSBlindActuator_Shutter'"
     3:
       0          "curl -X POST --header 'Content-Type: text/plain' --header 'Accept: application/json' -d 'STOP' 'http://openhab.local:8080/rest/items/OpenWMSBlindActuator_Shutter'"
     4:
       0          {switchWarema("status")}
     5:
   helper:
     DEVFILTER  ^global$|^WaremaMarkise$
     NOTIFYDEV  global|WaremaMarkise
     event      up
     globalinit 1
     last_timer 3
     sleeptimer -1
     timerdev   WaremaMarkise
     timerevent up
     triggerDev WaremaMarkise
     DOIF_eventa:
       cmd_nr: 3
       cmd: 3
       cmd_event: WaremaMarkise
       cmd_3
     DOIF_eventas:
       cmd_nr: 3
       cmd: 3
       cmd_event: WaremaMarkise
       state: cmd_3
     timerevents:
       up
     timereventsState:
       state: up
     triggerEvents:
       up
     triggerEventsState:
       state: up
   internals:
     all         WaremaMarkise:STATE
   interval:
     0          -1
     1          0
   intervalfunc:
     2          ::DOIF_time($hash,0,1,$wday,$hms)
   intervaltimer:
     0          2
     1          2
   localtime:
     0          1597982400
     1          1597957200
     2          1597937400
   readings:
   realtime:
     0          06:00:00
     1          23:00:00
     2          17:30:00
   time:
     0          06:00:00
     1          23:00:00
     2          +:30
   timeCond:
     0          4
     1          4
     2          4
   timer:
     0          0
     1          0
     2          0
   timers:
     4           0  1  2
   trigger:
   triggertime:
     1597937400:
       localtime  1597937400
       hash:
     1597957200:
       localtime  1597957200
       hash:
     1597982400:
       localtime  1597982400
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   room       Schalter,Wohnzimmer


Routine

sub switchWarema($){
my ($WaremaMarkise) = @_;
if ($WaremaMarkise eq "status"){
my $statusWaremaPosition = qx"curl -X GET --header 'Accept: text/plain' 'http://openhab.local:8080/rest/items/OpenWMSBlindActuator_Shutter/state' 2>/dev/null";
fhem("set WaremaMarkise $statusWaremaPosition");
my $statusWaremaBlind = qx"curl -X GET --header 'Accept: application/json' 'http://openhab.local:8080/rest/things/openwms%3Ablind%3A7d316735/status' 2>/dev/null";
if ($statusWaremaBlind =~ m/ONLINE/){
fhem("setreading WaremaMarkise statusWaremaBlind online");
}else{
fhem("set Telegram message Warema prüfen! $statusWaremaBlind");
fhem("setreading WaremaMarkise statusWaremaBlind $statusWaremaBlind");
}
my $statusWaremaTransceiver = qx"curl -X GET --header 'Accept: application/json' 'http://openhab.local:8080/rest/things/openwms%3Abridge%3A6a304331/status' 2>/dev/null";
if ($statusWaremaTransceiver =~ m/ONLINE/){
fhem("setreading WaremaMarkise statusWaremaTransceiver online");
}else{
fhem("set Telegram message Warema prüfen! $statusWaremaTransceiver");
fhem("setreading WaremaMarkise statusWaremaTransceiver $statusWaremaTransceiver");
}
}

}
Titel: Antw:Warema Mobile System (WMS) mit WMS Stick?
Beitrag von: FunkOdyssey am 20 August 2020, 22:48:07
Wie bist du denn an die Device ID und PANID gekommen?
Titel: Antw:Warema Mobile System (WMS) mit WMS Stick?
Beitrag von: h002 am 21 August 2020, 08:09:27
Als ich noch eine alte Version von dem Open WMS Binding hatte, konnte ich mittels Wireshark + Warema Studio die USB Daten aufzeichnen (https://forum.iobroker.net/topic/7336/iobroker-mit-warema-wms-web-control). Mit der neuen Version hat er die Fernbedienung in openHAB2 automatisch erkannt (mit Lerntaste) und die Daten übernommen.