IKEA Trådfri Modul

Begonnen von Peter Kappelt, 16 April 2017, 15:07:07

Vorheriges Thema - Nächstes Thema

Makkoo

Erstmal sage ich Danke für diese super Module :) TOP ARBEIT

Meine frage ist nun kann ich im Gui auch Slider und Buttons für die Helligkeit und Farbwahl erstellen ??

Mfg
Makkoo

Peter Kappelt

Die Helligkeit selber kann man im Modul nicht als Slider darstellen, da musst du einen Umweg über ein extra Dummy-Device gehen, der einen Slider darstellt.
Ich müsste da das Attribut setList für das TradfriDevice implementieren - allerdings hab ich noch keine Doku dazu gelesen. Mal schauen.

Mit Umwegen sieht es bei mir zum Beispiel so aus (für ein TradfriDevice namens "Wohnzimmer.Elektro.StandlampeLinks")

define Wohnzimmer.StandlampeLinksHelligkeit dummy
attr Wohnzimmer.StandlampeLinksHelligkeit setList state:slider,0,1,254
attr Wohnzimmer.StandlampeLinksHelligkeit webCmd state
define Wohnzimmer.StandlampeLinksNotify notify Wohnzimmer.StandlampeLinksHelligkeit set Wohnzimmer.Elektro.StandlampeLinks dimvalue $EVENT


Über den Dummy Wohnzimmer.StandlampeLinksHelligkeit wird nun ein Slider bereitgestellt.

Farbe kannst du direkt als Knöpfe im TradfriDevice einstellen:
attr Wohnzimmer.Elektro.StandlampeLinks webCmd on:off:color warm:color cold:color standard

justme1968

man braucht keine dummys um devices mit slider zu versehen.

das modul muss auf ein set ? eine passende antwort geben. schau mal im wiki bei der developer doku.

bis dahin kann man als anwender widgetOverride verwenden um widgets für kommandos zu konfigurieren.

gruss
  andre

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Makkoo



Zitat von: justme1968 am 23 April 2017, 15:17:02
man braucht keine dummys um devices mit slider zu versehen.

das modul muss auf ein set ? eine passende antwort geben. schau mal im wiki bei der developer doku.

bis dahin kann man als anwender widgetOverride verwenden um widgets für kommandos zu konfigurieren.

gruss
  andre


Danke für die Info könntest du mir ein beispiel nennen (codeschnipsel)??

Mfg
Marco

Peter Kappelt

Hallo,

Makkoo - das würde so aussehen:

attr Wohnzimmer.Elektro.StandlampeLinks webCmd dimvalue:color
attr Wohnzimmer.Elektro.StandlampeLinks widgetOverride dimvalue:slider,0,1,254 color:warm,cold,standard


Da hast du einen Slider für die Helligkeit und eine Auswahlliste für die Temperatur.

Kannte ich noch gar nicht - selbst nutze ich smartVISU als Frontend, da mache ich eigentlich nicht so viel mit der FHEM-GUI.

Justme - wie müsste ich denn da vorgehen? Wo müsste man den Slider dann deklarieren? Ich denke, dass mein Modul eine passende Antwort liefert:

set Wohnzimmer.Elektro.StandlampeLinks ?
Unknown argument ?, choose one of off on dimvalue color

justme1968

in der antwort auf das set ? musst du die widgets mit zurück geben die verwendet werden sollen. also etwa so:Unknown argument ?, choose one of off on dimvalue:slider,0,1,254 color:warm,cold,standard
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Peter Kappelt

Achso, dankeschön.

Hab auch gerade den Abschnitt im Wiki gefunden  :)
Lesen müsste man können...

Clyde

Zitat von: Peter Kappelt am 23 April 2017, 14:18:42

In der Log-Datei stand nichts drinne?

Das könnte ein Hinweis sein:

Use of uninitialized value $coapClientReturnMessage in string eq at ./FHEM/30_TradfriGateway.pm line 23.
timeout: failed to run command `coap-client': No such file or directory





Noch ein Versuch:


cd /
echo $PATH
which coap-client
perl -e 'use strict; use warnings; print `coap-client -u Client_identity -k Sicherheitscode -v 1 -m GET coaps://IP-des-Gateways:5684/15001 2>&1`;'


Das ergibt:

root@cubietruck:/# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
root@cubietruck:/# which coap-client
/usr/local/bin/coap-client
root@cubietruck:/# perl -e 'use strict; use warnings; print `coap-client -u Client_identity -k RaX... -v 1 -m GET coaps://192.168.2.163:5684/15001 2>&1`;'
v:1 t:CON c:GET i:98c0 {} [ ]
decrypt_verify(): found 24 bytes cleartext
decrypt_verify(): found 30 bytes cleartext
[65536,65537,65538]




Bringt das neue Erkenntnisse um das Modul zu beleben?
2x Cubietruck, CUL868, HM-USB-CFG2
FS20, FHT, KS300, HM, MAX, Tradfri

Peter Kappelt

Ja, wir kommen dem Problem langsam näher.

Bearbeite mal bitte die Datei "TradfriLib.pm". Sie liegt unter <FHEM-Installation>/FHEM. Falls du nicht weißt, wo deine FHEM-Installation ist, führe {`pwd`} in FHEM aus.

Falls du noch nicht so Linux-bewandert bist: Du kannst sie zum Beispiel mit dem Editor nano als root öffnen: "sudo nano <FHEM-Installation>/FHEM/TradfriLib.pm". Nachdem du die Änderungen vorgenommen hast, drückst du Strg+X und bestätigst mit Y oder J.

Versuche die Zeile 33 dieser Datei wie folgt abzuändern. Momentan müsste sie so aussehen: my $coapClientCMD = "timeout 5s coap-client -u Client_identity -k $gwSecret -v 1 -m $method coaps://$gwAddress:5684/$path";

Als erster Versuch (keine deiner Daten einsetzen):
my $coapClientCMD = "coap-client -u Client_identity -k $gwSecret -v 1 -m $method coaps://$gwAddress:5684/$path";

FHEM neustarten (shutdown restart), erneut prüfen.

Als zweiter Versuch (keine deiner Daten einsetzen):
my $coapClientCMD = "timeout 5s /usr/local/bin/coap-client -u Client_identity -k $gwSecret -v 1 -m $method coaps://$gwAddress:5684/$path";
Danach FHEM neustarten, und erneut ausprobieren.

Falls diese beiden nicht funktionieren sollten:
my $coapClientCMD = "/usr/local/bin/coap-client -u Client_identity -k $gwSecret -v 1 -m $method coaps://$gwAddress:5684/$path";

Es wäre nett, wenn du zumindest die ersten beiden Varianten testen könntest und mir Feedback darüber gibst, welche funktionieren.

Clyde


Vielen Dank für Deine Mühe und die sehr detailierten Anweisungen. Ich habe tatsächlich hoffnungsvolles zu berichten:

1x daneben aber auch 2x Treffer   :P

my $coapClientCMD = "coap-client -u Client_identity -k $gwSecret -v 1 -m $method coaps://$gwAddress:5684/$path";

get TradfriGW coapClientVersion UNKNOWN
get TradfriGW deviceList Error while trying to fetch devices!


my $coapClientCMD = "timeout 5s /usr/local/bin/coap-client -u Client_identity -k $gwSecret -v 1 -m $method coaps://$gwAddress:5684/$path";

get TradfriGW coapClientVersion UNKNOWN
get TradfriGW deviceList

- 65536: IKEA of Sweden TRADFRI remote control (TRADFRI remote control)
- 65537: IKEA of Sweden TRADFRI bulb E27 WS opal 980lm (K�che)
- 65538: IKEA of Sweden TRADFRI bulb E27 WS clear 950lm (Sofa)

get TradfriGW groupList

- 185064: Sofa- 165325: K�CHE


my $coapClientCMD = "/usr/local/bin/coap-client -u Client_identity -k $gwSecret -v 1 -m $method coaps://$gwAddress:5684/$path";

get TradfriGW coapClientVersion UNKNOWN
get TradfriGW deviceList

- 65536: IKEA of Sweden TRADFRI remote control (TRADFRI remote control)
- 65537: IKEA of Sweden TRADFRI bulb E27 WS opal 980lm (K�che)
- 65538: IKEA of Sweden TRADFRI bulb E27 WS clear 950lm (Sofa)

get TradfriGW groupList

- 185064: Sofa- 165325: K�CHE


2x Cubietruck, CUL868, HM-USB-CFG2
FS20, FHT, KS300, HM, MAX, Tradfri

Clyde

Reichweite: Fernbedienung - Gateway - E27.950lm

Ich bin im Altbau problemlos vom Erdgeschoss ins erste Obergeschoss gekommen.
Dreht man die "Birne" in einen Deckenstrahler aus Metall, wobei die Birne fast komplett im Metallgehäuse verschwindet, war selbst damit eine problemlose Steuerung möglich.  :o

Verhalten bei Spannungswiederkehr: E27.950lm

[1] Lichtschalter Aus - Lichtschalter An
Letzter Zustand bzgl. Leuchtstärke und auch Farbtemperatur vor dem Abschalten.
Damit bekommt man am Lichtschalter immer Licht. Also mindestens den minimalen Dimmwert, der bzgl. WAF hell genug ausfällt.

[2] Fernbedienung Aus - Fernbedienung An
wie [1]

Ablernen: E27.950lm

6x direkt hintereinander Lichtschalter Aus - Lichtschalter An
Lampe geht auf hell und die Fernbedienung wird abgelernt.

...
2x Cubietruck, CUL868, HM-USB-CFG2
FS20, FHT, KS300, HM, MAX, Tradfri

Peter Kappelt

Schön, dass es funktioniert, Clyde.

Bis ich das Problem behoben habe und das entsprechende Update verteile, empfehle ich dir, die Version "my $coapClientCMD = "timeout 5s /usr/local/bin/coap-client -u Client_identity -k $gwSecret -v 1 -m $method coaps://$gwaddress:5684/$path";" zu benutzen.



Liest hier ein Perl-/ Linux-Guru mit? So wie es aussieht, ist Clydes PATH des roots anders als der des FHEM-Nutzers. Prinzipiell kann man auch nicht sicherstellen, dass bei "make install" die Software in den PATH aller Benutzer aufgenommen wird, oder?
Wie müsste man in seiner Software vorgehen, dass diese den absoluten Pfad der Software erkennt? Als Kriterium würde ich vorgeben, dass der Benutzer nicht den Pfad selbst eingeben muss.
Gibt es da Referenzlösungen?

Clyde, wenn du Zeit und Lust hast, führe bitte nochmal diese Kommandos in FHEM aus und schreibe deren Output hier:

{`echo \$PATH`}
{`id -u -n`}

Clyde

{`echo \$PATH`}

/sbin:/usr/sbin:/bin:/usr/bin

{`id -u -n`}

fhem


Wo ich mithelfen kann, kein Problem.
Ich habe 2 Systeme mit Cubietruck Debian am laufen.
Beide die gleichen Antworten.
2x Cubietruck, CUL868, HM-USB-CFG2
FS20, FHT, KS300, HM, MAX, Tradfri

mahowi

Der Pfad wird meistens in /etc/profile gesetzt und eventuell durch weitere Konfigurationsdateien in /etc/profile.d und $HOME erweitert.

Unter Raspbian sieht das z.B. so aus:
if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games"
fi
export PATH

Der erste Fall gilt für root, der zweite für alle anderen User.

Dann gibt es noch /etc/login.defs mit den Default-Werten für eine Login-Shell:
pi@raspberrypi:~ $ grep PATH /etc/login.defs
# Three items must be defined:  MAIL_DIR, ENV_SUPATH, and ENV_PATH.
# *REQUIRED*  The default PATH settings, for superuser and normal users.
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH        PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games


Auf jeden Fall gehört /usr/local/bin zumindest unter allen Linux-Varianten, die ich kenne, standardmäßig zum Pfad. Lediglich die sbin-Verzeichnisse sind öfter mal nur für root gesetzt.

Was helfen sollte, ist eine Datei /opt/fhem/.profile (wenn /opt/fhem das Home-Verzeichnis von fhem ist) mit:
PATH="$PATH:/usr/local/bin"
Damit wird der Pfad um /usr/local/bin erweitert.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Clyde

#44
Hab gerade mal bei mir nachgesehen

/etc/profile

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH


Demnach müßte der user fhem ja /usr/local/bin haben.

Hat aber nur /sbin:/usr/sbin:/bin:/usr/bin

Wann wird die Datei /opt/fhem/.profile ausgeführt, wenn vorhanden?
2x Cubietruck, CUL868, HM-USB-CFG2
FS20, FHT, KS300, HM, MAX, Tradfri