Autor Thema: Vorstellung: IKEA Trådfri Modul  (Gelesen 12039 mal)

Offline dtavb

  • New Member
  • *
  • Beiträge: 16
Antw:Vorstellung: IKEA Trådfri Modul
« Antwort #150 am: 16 Juli 2017, 22:09:32 »
Hoi Ihr,

@Peter: vielen lieben Dank für die Unterstützung!
Schaltungen funktionieren tadellos.

Was mir nun beim Durchklicken der get-Methoden aufgefallen ist:
Gateway "get devicelist": es wird nur noch ein Array mit den IDs geliefert.
Die Beschreibungen der Lampen etc. fehlen.
Schaue ich im Java-Client nach, ist dem auch. Der Java-Client liefert nur noch die IDs:
[TcpServerThread] Received data: coapGet|coaps://192.168.192.141/15001
[TcpServerThread] Command "coapGet" on "coaps://192.168.192.141/15001" returned "[65538,65536,65537,65540,65539]"


Genauso auch bei den Gruppen, nur die Gruppen-ID wird zurückgliefert.

Wenn das Gateway States zurückmeldet, sind die Beschreibungen dabei:
[TcpServerThread] New state for observed resource coaps://192.168.192.141/15001/65537: {"5750":2,"9001":"Bulp1","3":{"0":"IKEA of Sweden","2":"","1":"TRADFRI bulb E27 WS opal 980lm","3":"1.1.1.1-5.7.2.0","6":1},"9002":1499502983,"9020":1500227033,"9003":65537,"9054":0,"9019":1,"3311":[{"5850":1,"5851":254,"5707":0,"5708":0,"5709":24930,"5710":24694,"5711":250,"5706":"f5faf6","9003":0}]}
[TcpServerThread] Command "coapPutJSON" on "coaps://192.168.192.141/15001/65538" returned ""
[TcpServerThread] New state for observed resource coaps://192.168.192.141/15001/65538: {"5750":2,"9001":"Bulp2","3":{"0":"IKEA of Sweden","2":"","1":"TRADFRI bulb E27 WS opal 980lm","3":"1.1.1.1-5.7.2.0","6":1},"9002":1499505749,"9020":1500233511,"9003":65538,"9054":0,"9019":1,"3311":[{"5850":1,"5851":254,"5707":0,"5708":0,"5709":24930,"5710":24694,"5711":250,"5706":"f5faf6","9003":0}]}


Frage bzgl. Java-Client:
@Peter:
belässt Du es so, dass man manuell den Java-Client starten muss?
Ein kleines HowTo wäre nicht schlecht wie man das bei System-Reboot wieder automatisiert anstarten kann.

@Brause
Ich würde den Befehl als bash-script bei Boot ausführen lassen. Wie hast Du das getan?

Gerne schreibe ich das HowTo, würde nur gerne Eure Wege zum Autostart erst kennenlernen.

Grüsse,
dtavb

Offline Peter Kappelt

  • New Member
  • *
  • Beiträge: 37
Antw:Vorstellung: IKEA Trådfri Modul
« Antwort #151 am: 16 Juli 2017, 22:57:31 »
Hallo,

Bitteschön!

Bei den get deviceList und get groupList bin ich erstmal einen Schritt zurück gegangen. Die Tatsache ist mir bewusst und das Feature wird wieder re-implementiert werden. Ich suche allerdings noch nach einer Möglichkeit, die notwendigen blockierenden Aufrufe effizienter zu gestalten. Ein Gedanke ist, dass ich mehr aufgaben an den Java-Client "outsource" und dem die Arbeit überlasse - denn der unterstützt auch parallele Abfragen und Ähnliches. Also quasi ein Kommando in der Form "getGroupList", welches an den Java-Client gesendet wird und der die notwendige Verarbeitung schneller macht. Mal schauen.

Wie schon gesagt: Es ist sehr ärgerlich, dass es für Perl keine CoAP-Module gibt. So eine native Lösung wäre das Idealste. Mit dem Gedanken, das CoAP-Perl-Modul selbst bereitzustellen, habe ich auch schon gespielt - aber da scheue ich vor (nicht genug Hardware zum Testen, Zeitverbrauch, Grenzen von Programmierkenntnissen, ...).

Wie auch immer - Ja, momentan wollte ich keine Autostartskripte mit der Beta verteilen. Bedenkt bitte auch, dass mindestens noch eine Änderung im Aufruf des Java-Clients folgt. Das hängt einfach damit zusammen, dass ich verschiedene Möglichkeiten zur verkapselten Verteilung der Software teste. Der Nutzer soll sich idealerweise nicht um die Installation des JRE kümmern, andererseits soll auch nicht an alle Nutzer prophylaktisch ein JRE verteilt werden. Wenn ich dafür eine Lösung habe, will ich das Starten und Stoppen des Clients durch FHEM selbst automatisieren, i.e. ein FHEM Start führt auch zum Start des Clients.
Ziel ist es, dass sich die tatsächliche Installation auf das Hinzufügen der Repository und ein "update" reduziert.

Den Client per One-Liner im Hintergrund laufen zu lassen funktioniert z.B. so, vielleicht gibt es einfachere Möglichkeiten:
screen -dmS fhem_tradfri_client && screen -r fhem_tradfri_client -p 0 -X stuff $"java -jar /voller/Pfad/zum/kCoAPSocket.jar -s psk \n"Darin wirklich nur den Pfad für den Client und den PSK ersetzen.

Das ganze kann dann beispielsweise in die Crontab-Datei, sollte so gehen, aber nicht getestet:
pi@hcpi01:~ $ cat /etc/crontab
@reboot screen -dmS fhem_tradfri_client && screen -r fhem_tradfri_client -p 0 -X stuff $"java -jar /voller/Pfad/zum/kCoAPSocket.jar -s psk \n"

Wenn du das ganze austestest und noch ein paar Worte zu schreibst könnte ich das mit in die Anleitung aufnehmen.

Schönen Abend,
Peter

Offline Brause

  • Jr. Member
  • **
  • Beiträge: 73
Antw:Vorstellung: IKEA Trådfri Modul
« Antwort #152 am: 17 Juli 2017, 16:42:13 »
Hoi

Ich habe den Autostart über ein rc.d-Script gelöst (praktische äquivalent zum FHEM-Start)

#!/bin/sh

### BEGIN INIT INFO
# Provides:             tradfri
# Required-Start:       $local_fs $remote_fs networking
# Required-Stop:        $local_fs $remote_fs networking
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    FHEM - Tradfri-JAVA
# Description: Start / Stop / Status or Restart the FHEM - Tradfri-JAVA
### END INIT INFO

case "$1" in                                                                                                                                                                         
'start')
echo "Starting FHEM - Tradfri-JAVA"
screen -dmS Tradfri /opt/java-Tradfri.sh
RETVAL=$?
;;                                                                                                                                     
'stop')
pkill -USR1 -U fhem java                                                                                                                     
    echo " ... done. FHEM - Tradfri-JAVA Stopped."
    RETVAL=$?
;;
'restart')
pkill -USR1 -U fhem java
    echo " Closed Process, Restarting"
screen -dmS Tradfri /opt/java-Tradfri.sh
echo " ... done. FHEM - Tradfri-JAVA Restarted"
RETVAL=$?
;;
'status')
        cnt=`ps -ef | grep "java -jar" | grep -v grep | wc -l`
        if [ "$cnt" -eq "0" ] ; then
                echo "FHEM - Tradfri-JAVA is not running"
        else
                echo "FHEM - Tradfri-JAVA is running"
        fi
        ;;
*)
echo "Usage: $0 { start | stop | status | restart }"
RETVAL=1
;;
esac
exit $RETVAL



in der "java-Tradfri.sh" erfolg dann der JAVA-Start
#! /bin/bash

cd /opt/Tradfri-FHEM/kCoAPSocket/kCoAPSocket
su fhem -c "java -jar kCoAPSocket.jar -s psk"

Der Einzeiler von Peter ist eine gute Idee, den könnte man prima direkt im rc.d-Script einbauen.
Da ich den screen nicht direkt mit root-Rechten laufen lassen wollte, ist bei mir halt noch der "su fhem" eingebaut.
Nachteil meines Startscripts ist das man sich anschließend nicht mehr in den screen einlogen kann, um zu schauen was da drin so alles protokolliert wird.

Gruss Brause

FHEM auf NUC, HomeMatic, Netatmo, IT una.

Offline Brause

  • Jr. Member
  • **
  • Beiträge: 73
Antw:Vorstellung: IKEA Trådfri Modul
« Antwort #153 am: 17 Juli 2017, 19:15:31 »
Eine Frage hätte ich noch

Peter hast du eventuell auch geplant die SetExtensions irgendwann mit einzubauen??
Ein "on-for-timer" und "toggle" für Device und Group wären echt noch Klasse.

Gruss Brause
FHEM auf NUC, HomeMatic, Netatmo, IT una.

Offline Peter Kappelt

  • New Member
  • *
  • Beiträge: 37
Antw:Vorstellung: IKEA Trådfri Modul
« Antwort #154 am: 17 Juli 2017, 19:44:24 »
Du kannst mal probieren, die Ausgabe des Clients in eine Logdatei zu schreiben, so müsste es gehen:
su fhem -c "java -jar kCoAPSocket.jar -s psk >> /tmp/deineLogdatei"
Geplant ist vieles, die Set Extensions stehen schon auf der Liste. Die höchste Prio ist aber momentan für mich, die Beta stabil zu bekommen und sinnvoll zu verteilen.

An Alle, die die Beta nutzen: Bitte passt auf, wenn ihr das nächste mal den Java-Client updatet. Die Jar-Datei heißt nun "kCoAPSocket-latest.jar", nicht mehr "kCoAPSocket.jar".

Offline Peter Kappelt

  • New Member
  • *
  • Beiträge: 37
Antw:Vorstellung: IKEA Trådfri Modul
« Antwort #155 am: 20 Juli 2017, 22:43:44 »
An die Nutzer der Beta: Bitte beachtet, dass mit dem neusten Update ein weiterer Parameter (-g) erforderlich ist. Dieser definiert die Adresse des Gateways und muss, bis FHEM das automatisch erledigt, beim Start und Stopp des Clients angegeben werden. Beispielsweise:
java -jar kCoAPSocket-latest.jar -s Code -g 192.168.2.65
Außerdem habe ich noch eine Mailgruppe eingerichtet, in der ich künftig solche wichtigen Änderungen an Beta-Tester verteilen werde. Falls ihr sofortige Info über die Updates wünscht könnt ihr der Gruppe gerne hier beitreten: https://groups.google.com/group/tradfri-betatester/subscribe

Offline Brause

  • Jr. Member
  • **
  • Beiträge: 73
Antw:Vorstellung: IKEA Trådfri Modul
« Antwort #156 am: 21 Juli 2017, 03:15:19 »
Guten Morgen

nur kurze Rückmeldung.
Habe gerade das update gemacht.
- Startscript den neuen Parameter (und Log-File) hinzu
- git pull / git submodule update --remote
- Dank meines Startscripts ein "service tradfri restart"
- knappe Minute später erfolge automatisch das reopen vom Getaway-Device

- Alles läuft - ohne Probleme

Euch einen angenehmen Freu-tag
Gruss Brause
FHEM auf NUC, HomeMatic, Netatmo, IT una.