ZWave - SCENE_ACTIVATION Class

Begonnen von hanske, 02 Oktober 2014, 10:45:49

Vorheriges Thema - Nächstes Thema

hanske

Hallo,

ich habe mir den Zwave.me 4 fach Wandsender "ZME_WCD2" zugelegt.
Ich hatte die Hoffnung, dass ich damit verschiedene Aktionen in Fhem triggern kann.
Leider bekomme ich nur den BasicReport gemeldet.
Letztendlich ist das auch logisch, der Sender kann für jeden Taster an den assoziierten Empfänger ein on oder off (eigentlich auch dimm) senden. Wenn ich alle Tasten mit meinem Z-Wave Stick assoziiere, bekomme ich auch von allen Tasten on oder off, leider weiß ich dann nicht von welcher Taste.
Der Sender ist aber auch in der Lage, Szenen Kommandos zu senden. Dann sollten für jeden Taster unterschiedliche Szenen Ids gesendet werden. Wenn ich in diese Betriebsart wechsel kommt bei Fhem leider nichts an.

Ist es kompliziert die "SCENE_ACTIVATION Class" in Fhem zu implementieren?
Kann ich das auch selbst machen, oder ist da schon jemand dran?

Vielen Dank

Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

rudolfkoenig

Man benoetigt eine (moeglichst neue) Version der ZWave CommandClass PDF, ich habe aber die Befehls-bits&bytes auch in einem dem Geraet beigefuegten Blatt schon gesehen. Diese muss man in der 10_ZWave.pm/%zwave_class Tabelle richtig eintragen, es sind aber nur minimale Perl-Kenntnisse erforderlich. Testen geht auch "live" via "reload 10_ZWave.pm", man sollte aber fuer Fehler den FHEM-Log in Auge behalten.

Zum Schluss die neuen Befehle/Meldungen dokumentieren und den Patch mir schicken. Beispiele fuer ein Patch sieht man hier im ZWave Bereich genuegend.

hanske

Hallo,
ich war fleißig und habe die Behandlung für alle drei Scene Kommandoklassen
(SCENE_ACTIVATION, SCENE_ACTUATOR_CONF und  SCENE_CONTROLLER_CONF)
implementiert. Patch siehe Anhang.
Leider unterstüzt mein Wandcontroller nur SCENE_CONTROLLER_CONF.
Ich kann dort jetzt Konfigurationen für Gruppen definieren, die mir, bei Anfrage, auch brav zurück gemeldet werden.
Leider bekomme ich beim Auslösen einer Szene immer noch keinen Report.
Ich vermute FHEM selbst muss als SCENE_ACTUATOR auftreten, wie das geht weiß ich aber nicht.

Also  SCENE_CONTROLLER_CONF geht jetzt, bringt mich aber nicht weiter.
Die anderen Patches sind mangels Devices ungetestet, sollten aber auch gehen.

Hier mal die erkannten Klassen des Wandsenders:
BATTERY CONFIGURATION PROTECTION VERSION MANUFACTURER_SPECIFIC ASSOCIATION MULTI_CHANNEL_ASSOCIATION SCENE_CONTROLLER_CONF NODE_NAMING WAKE_UP

Hat noch jemand Rat.
Danke

Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

hanske

Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

hanske

Hallo,

habe jetzt doch noch was vom Device bekommen:
SCENE_ACTIVATION         => { id => '2b',
parse => { "042b01(..)(..)"  => '"scene_$1:level $2"', },

Ist aber in der "Z-Wave Command Class Specification" nicht dokumentiert.
Ich kann aber über die Angaben im Manual des Senders einen Parser bauen.
Ist für mich als Perl Laie aber etwas schwierig.
So wie es oben im Code steht bekommt man im "Enhanced Scene Activation" Modus zu viele verschiedene Readings.
Melde mich dann bei Erfolg wieder.
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

hanske

Vielleicht kann mir jemand beim Hex Parsen helfen?

parse => { "042b01(..)ff"    => '"???"',},


Die beiden Punkte enthalten die Szene in der dezimalen Zehnerstelle und die Aktion in der Einerstelle.
Also z.B. Dezimal 24 für Scene 2 Aktion 4. Mann muss dann also 0x18 (24) in die 2 und die 4 zerlegen.
Für einen Perl Experten sicher einfach.

Die Aktionen sind dann:
1= on
2= off
3= dim up start
4= dim down start
5= dim up end
6= dim down end
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

rudolfkoenig

Habe dein Patch eingespielt, bitte zukuenftige Patches gegen die aktualisierte Version machen.
In der Doku steht 0x00..0xff als Argument, ich meine korrekt ist 00..ff, habe es nicht korrigiert.
Mein Vorschlag fuer Parsen:
parse => {
   "042b01(.)1ff" => '"scene_$1: on"',
   "042b01(.)2ff" => '"scene_$1: off"',
   "042b01(.)3ff" => '"scene_$1: dim up start"',
   "042b01(.)4ff" => '"scene_$1: dim down start"',
   "042b01(.)5ff" => '"scene_$1: dim up end"',
   "042b01(.)6ff" => '"scene_$1: dim down end"' },

rudolfkoenig

Sorry, war nicht aufmerksam. Neuer Vorschlag:


parse => {
   "042b01(..)ff" => 'ZWave_ParseScene($1)',},
...

sub
ZWave_ParseScene($)
{
  my ($p)=@_;
  my @arg = ("unknown", "on", "off",
             "dim up start", "dim down start", "dim up end", "dim down end");
  return sprintf("scene_%s:%s", int(hex($p)/10), $arg[hex($p)%10]);
}     

Testen kann man die Funktion aus telnet:
fhem>  { ZWave_ParseScene("24") }
scene_3:dim down end
fhem>

hanske

Hallo,

danke funktioniert super.
Ich würde nur noch return sprintf("scene_%s:%s",
in return sprintf("sceneEvent_%s:%s",
umbenennen, damit man es von der "normalen" SceneAtivation
{ "042b01(..)(..)"  => '"scene_$1:level $2
unterscheiden und auch rausfiltern kann.
Mit diese Lösung kann man dann beide Modi dieses Senders benutzen.
Geht wahrscheinlich dann auch für andere Fernbedienungen.
Hattest Du Deine Änderungen schon eingechecked (SVN oder git)?
Grüße
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

rudolfkoenig

ZitatIch würde nur noch ...

Nur zu. Meine Zeilen waren nur ein Vorschlag, eingecheckt, habe ich es nicht weil ungetestet.

hanske

Hier der Patch auf die aktuelle Version.
Bei mir funktioniert es gut, soweit ich das mit mit meinem Sender testen kann.

Danke+Grüße
Raspberry Pi (Wheezy), Aeon Labs Z-Wave USB Stick 2, HM-USB Adapter, EBUS 2.0 mit Wemos
diverse HM und Z-Wave Geräte

rudolfkoenig