Keine regelmäßigen Power-Readings bei tapHome EASYPLUG

Begonnen von A.Harrenberg, 15 Mai 2015, 19:10:48

Vorheriges Thema - Nächstes Thema

A.Harrenberg

Hallo,

hatte mir zum Ausprobieren und Einstig in Z-Wave einen "EASYPLUG" Zwischenstecker von tapHome gekauft. Das Einbinden in fhem hat soweit auch geklappt, nach der Assoziation wird auch der Status (on/off) zurückgemeldet wenn an der Steckdose mit dem Taster geschaltet wird.

Die Steckdose hat auch ein Verbrauchs-/Leistungsmessung, allerdings kommt das Reading für "power" nicht. Das Reading für "energy" kommt auch nicht, lässt sich aber wenigstens mit get <device> meter abfragen. In den Readings taucht dann noch eine Temperatur auf, die aber anscheinend nichts mit der Raumtemperatur zu tun hat...

Die Anleitung ist leider mehr als dürftig (oder eher weniger als dürftig...) und gibt zu dem Thema so gar nichts her. Auch eine kleine Suche im Internet hat bisher dazu keine Erkenntnisse geliefert.

Die Steckdose wird als model "0x0097 0x6943 0x4501" bzw. modelId "0097-6943-4501" angezeigt, ist also anscheinend nicht in der Datenbank enthalten.

Internals:
   DEF        e173b78d 7
   IODev      ZWDongle_0
   LASTInputDev ZWDongle_0
   MSGCNT     11
   NAME       ZWave_SW
   NR         343
   STATE      on
   TYPE       ZWave
   ZWDongle_0_MSGCNT 11
   ZWDongle_0_RAWMSG 000400070a320221140000000d0000
   ZWDongle_0_TIME 2015-05-15 18:46:11
   homeId     e173b78d
   id         07
   lastMsgTimestamp 1431708595.05751
   Readings:
     2015-05-15 09:19:30   assocGroup_01   Max 01 Nodes 01
     2015-05-15 17:27:32   energy          0.19732 kWh
     2015-05-15 09:17:42   humidity        0
     2015-05-15 09:13:34   model           0x0097 0x6943 0x4501
     2015-05-15 09:13:34   modelId         0097-6943-4501
     2015-05-15 18:46:11   power           13 W
     2015-05-15 17:42:35   protection      off
     2015-05-15 18:20:57   reportedState   on
     2015-05-15 18:46:08   state           on
     2015-05-15 18:49:55   swa             on off
     2015-05-15 08:36:22   temperature     30.63 C
     2015-05-15 18:46:08   transmit        OK
Attributes:
   IODev      ZWDongle_0
   classes    SWITCH_BINARY VERSION METER MANUFACTURER_SPECIFIC CONFIGURATION ASSOCIATION PROTECTION POWERLEVEL SENSOR_MULTILEVEL SWITCH_ALL
   room       ZWave


Wenn ich bei eingeschalteter Steckdose einfach nochmal ein "set <device> on" schicke, kommt nach dem Versenden des Befehls eine Antwort mit dem power-Reading:

2015.05.15 18:46:08.534 4: ZWDongle_0 CMD:ZW_SEND_DATA ID:00 ARG:0003
2015.05.15 18:46:08.534 4: ZWDongle_0 transmit OK for 07
2015.05.15 18:46:11.050 4: ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:07 ARG:0a320221140000000d0000


In diesem Fall 13 Watt (0d), was dann auch richtig in den Readings angezeigt wird.

Also Frage Nummer #1: Hat jemand eine Ahnung wie ich dem Gerät beibringe den Wert regelmäßig zu senden? Am besten auch noch die Leistung...

In dem Zusammenhang ist mir bei den Befehlen des Gerätes aber noch was aufgefallen...

An Set-Befehlen wird mir durch das Frontend folgendes angeboten:

associationAdd
associationDel
blink
configByte
configDefault
configLong
configWord
intervals
off
off-for-timer
off-till
on
on-for-timer
on-till
protectionBytes
protectionOff
protectionOn
protectionSeq
swaIncludeNone
swaIncludeOff
swaIncludeOn
swaIncludeOnOff
swaOff
swaOn
toggle


Die meisten Befehle kann ich noch irgendwie Funktionen zuordnen, aber ich finde dabei jetzt nichts wie so ein Reading setzen könnte. Am ehesten hätte ich auf "intervals" gehofft, das erwartet eine Zeitangabe in hh:mm:ss, hat aber nicht den gewünschten Erfolg gebracht.

Viel "interessanter" ist allerdings, das ich im Modul 10_ZWave.pm nicht nachvollziehen kann wo dieser Befehl definiert ist und für welche Klasse er denn wohl gelten würde. Der Befehl ist weder in "%zwave_class" noch in "%zwave_deviceSpecial" definiert!

Wenn man mal einfache eine Zahl hinter den Befehl schreibt kommt im Log eine Fehlermeldung mit einem "define"???
2015.05.15 18:11:28.544 1: define ZWave_SW_intervalNext ZWave_SW_intervalNext at 255 set ZWave_SW intervals 255: Wrong timespec 255: either HH:MM:SS or {perlcode}

Hier dann also Frage #2: Hat jemand eine Ahnung was dieser Befehlt eigentlich macht und wo er definiert ist?

Immer wenn man denkt man hätte das System, nachdem die Befehle zusammengebaut werden, so halb verstanden kommt sowas... ,-)

Gruß,
Andreas.

FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

micha80

#1
Hast du bei den get-Befehlen swbStatus und smStatus?
versuch die beiden mal

intervals <from1>-<till1> <from2>-<till2>...
set the device on for the specified intervals, which are all timespecs in the form HH:MM[:SS]. The intervals are space separated.
-> kommt aus der commandref: weil dein Gerät on/off unterstützt, bekommt es noch ein paar schicke Kommandos spendiert (wie das on-for-timer)

A.Harrenberg

Hallo micha80,

ja, die beiden get-Befehle habe ich.

Bei get <device> smStatus wird die Temperatur geliefert (temperature 43.99 C)
Bei get <device> swbStatus wird der Status zurückgeliefert (state on)

Also auch kein "power"...

Ah, das "intervals" kommte aus dem "Standard"...

Aber nach der Beschreibung ist das ja "nur" eine Zeitschaltuhr und hat dann doch nichts mit den Readings zu tun, schade. Werde mir dann aber doch noch mal ansehen müssen wie dieser "Standard"-Befehl dann eingebunden wird.

Danke schon mal,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

micha80

Könnte smStatus (ich vermute SensorMeter-Status) doch etwas anderes als die Temperatur sein?

Spiel damit mal etwas rum.
(Evtl mit und ohne anschlossene Geräte.)
(Evtl bastelt jemand zu Unrecht das °C dazu...)

krikan

Hallo Andreas,

das ist ein WINTOP/Schlage Link-Produkt: https://github.com/openhab/openhab/blob/master/bundles/binding/org.openhab.binding.zwave/database/wintop/easyplug.xml
Mehr Infos als die Openhab XML, die auch nicht viel enthält, habe ich leider nicht gefunden. Vielleicht hilft Dir die Info beim Suchen.
Ohne vernünftige Doku zu Parametern und Co. ist es schwierig genaueres zu Deiner 1. Frage zu sagen.
get <device> smStatus ist die Abfrage der Class SENSOR_MULTILEVEL. Vielleicht mal Rohmessage verraten und Version der Class herausfinden.

interval kommt aus den http://fhem.de/commandref#setExtensions , die letztlich über "use SetExtensions;" in die 10_ZWave.pm eingebunden werden.

Gruß, Christian

krikan

Die entscheidende Abfrage sollte "get <device> meter" sein.

micha80

sollte ;)
bei meinem Fibaro Wall Plug:
get z_Wall_Plug meter:
energy:0.28 kWh

get z_Wall_Plug smStatus:
power:8.2 W

ich dachte, das ist so gewollt?

krikan

Ist geräte- und/oder einstellungsabhängig sowie von der Class Version....
Also nichts, was feststeht. Sorry.

rudolfkoenig

Es sind mir zwei Geraetearten bekannt:
- bei der ersten muss man per config dem Geraet mitteilen, dass er die Daten regelmaessig an eine Association-Gruppe senden soll. FHEM setzt bei der Inklusion "set name associationAdd 1 controllerId" ab. Falls das Geraet ueber eine andere Gruppe melden moechte, dann muss man selbst aktiv werden. Die config Befehle sind ueblicherweise auf dem Beipackzettel dokumentiert.
- manche Hersteller vermeiden Lizenzzahlungen, und das Geraet hat so ein Feature gar nicht. Diese muss man mit dem FHEM-Standard at regelmaessig abfragen.

Btw. smStatus und co ist dokumentiert im commandref, im Detail-Fenster ueber "Device specific help" trivial zu erreichen. Warum man raten muss, ist mir wiederum ein Raetsel.

A.Harrenberg

Hallo zusammen,

wie gesagt, bei get <device> meter kommt auch nur die "energy".

Bei get <device> smStatus kommt: 42.87 C
ZWDongle_0 CMD:APPLICATION_COMMAND_HANDLER ID:07 ARG:063105014210bf
   
4287 = 0x10bf

06 (Länge)
31 (COMMAND_CLASS_SENSOR_MULTILEVEL)
05
01
42
10bf = 4287

In der 050142 ist scaling, precision, sensortype etc. codiert, hier finde ich gerade die Tabelle nicht wieder... ,-(

Der Beipackzettel schweigt sich leider zu diesem Thema vollständig aus. Das mit dem regelmäßig abfragen geht ja nicht mal, da müsste ich regelmäßig "neu" schalten um ein reading für "power" zu bekommen.

Muss mich dann doch noch mal ein wenig durch die openhab und openzwave quellen durcharbeiten und schauen ob sich da nicht doch was zu dem Schalter finden lässt. Momentan sieht es ja leider so aus als ob das Gerät eher in die zweite Kategorie (geht nicht) fallen würde. Weitere Associations scheint das Ding auch nicht zu haben...

Was "Device specifig help" angeht muss ich zugeben das ich das jetzt zum ersten Mal überhaupt wahrgenommen habe...
Das mit den "use SetExtensions;" muss ich mir aber trotzdem mal ansehen damit ich das System dahinter mal etwas besser verstehen lerne.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

krikan

Schau bitte mal nach den Claes Versionen, insb. auch von Meter. Meter V3 fehlt z.B. noch.

krikan

#11
Die classVersion von METER bekommst Du mit:
get <device> versionClass 50
Wenn das mindestens 02 ergibt, sollte Hoffnung bestehen. Das "get <device> meter" behandelt derzeit nur V1 und nicht die zusätzlichen Möglichkeiten von V2/V3.
Wenn das Gerät V2 oder mehr kann, dann müsstest Du bitte mal die "supportetGet" der Class METER abrufen.
Das geht über einen RAW-Abruf (vorher verbose 5 anschalten)
get <ZWDongle> raw 1304043203
wobei Du das erste 04 durch die NodeID Deines Devices ersetzen musst. Wenn es korrekt läuft, erhälst Du ein "011301" angezeigt. Im Log gibt es dann die Rohnachricht mit den Infos welche Abfragen das Gerät unterstützt. Die muss man mit zwapi-PDF und openX-Hilfe analysieren und dann get entsprechend erweitern.

A.Harrenberg

Hallo Krikan,
Zitat von: krikan am 16 Mai 2015, 00:26:50
Schau bitte mal nach den Claes Versionen, insb. auch von Meter. Meter V3 fehlt z.B. noch.
das hatte ich mir für heute vormittag vorgenommen...

SWITCH_BINARY 0x25/37 V1
VERSION 0x86/134 V1
METER 0x32/50 V2
MANUFACTURER_SPECIFIC 0x72/114 V1
CONFIGURATION 0x70/112 V1
ASSOCIATION 0x85/133 V1
PROTECTION 0x75/117 V1
POWERLEVEL 0x73/115 V1
SENSOR_MULTILEVEL 0x31/49 V1
SWITCH_ALL 0x27/39 V1


versionClass_20 01
versionClass_25 01
versionClass_27 01
versionClass_31 01
versionClass_32 02
versionClass_70 01
versionClass_72 01
versionClass_73 01
versionClass_75 01
versionClass_85 01
versionClass_86 01


Meter ist also "nur" V2.

Gibt es eigentlich irgendwo eine Auflistung welche Command Class in welcher Version aktuell von fhem unterstützt wird? Im Code kann ich zwar sehen welche Command Class Befehler hinterlegt hat, aber für welche Version das ist geht daraus für mich irgendwie nicht hervor.

Gruß,
Andreas.
FB 7360, Homematic und ZWave
Support for ZWave-SECURITY

krikan

ZitatMeter ist also "nur" V2.
Könnte schon reichen, siehe meinen letzten Post. Bitte "supportetGet" abfragen.

ZitatGibt es eigentlich irgendwo eine Auflistung welche Command Class in welcher Version aktuell von fhem unterstützt wird?
Mir nicht bekannt. Sicherheit gibt es nur über Anlayse. Grundregel "get" und "set" sind häufig nur V1, während für "parse" die Auswertungen oft auch höhere Versionen unterstützen. Das liegt auch am Konzept der Nachrichten von ZWave. Wenn Du es analysierst, kannst Du das gerne dokumentieren. Du hast im Wiki schon einen sehr ausführlichen Artikel zum Tagreader geschrieben, vielen Dank dafür.


rudolfkoenig

Nein, das Versionsproblem ist mehr oder weniger "unter dem Teppich gekehrt". Haeufig sind die Nachrichten unterschiedlich, so dass FHEM sie unterscheiden kann, wir sollten es aber ab sofort dokumentieren.

Allerdings bietet das Modul beim Vorhandensein einer Klasse die gets/sets unabhaengig von der Version an, was in manchen (mAn seltenen) Faellen falsch ist. Waere eine groessere Baustelle das "richtig" zu machen, und ich weiss noch nicht genau, wann das notwendig ist.