Neues Modul: Pebble SmartWatch

Begonnen von _Markus_, 25 September 2015, 22:10:52

Vorheriges Thema - Nächstes Thema

_Markus_

Hallo zusammen,

ich habe den Code von http://forum.fhem.de/index.php/topic,36860.msg326009.html#msg326009 geforked (und dann nahezu neu geschrieben), um eine Pebble App nach meinen Vorstellungen zu schreiben. Ich eröffne einen neuen Post, da der Code ggf. stark auseinander läuft.

Die App basiert auf Pebble.js und ermöglicht die komplette Steuerung von FHEM via Pebble Watch. Dazu bedarf es eines Pebble-Modules (98_Pebble.pm) und einer Pebble-Javascript-Anwendung (app.js). Die Anwendung kann via CouldPebble installiert werden.

Ich habe vorerst keine Konfigurationsseite eingefügt, diese kann aber leicht entsprechend des ursprünglichen Posts (s.o.) hinzugefügt werden.

Konfiguriert wird die App aktuell noch in der app.js in den ersten Zeilen:


var scheme = 'http';
var auth   = 'user:password@';
var host1   = '192.168.192.42';
var host2   = '192.168.192.42';
var port   = '8084';

var rooms = "Haus|Licht|System|Residents|Rollos";


Wenn host1 nicht erreichbar ist, wird host2 versucht. Auf die Art kann man sowohl lokal als auch remote verbinden. Die auth Variable ermöglich die Nutzung von Basic-Auth. Wenn kein Login konfiguriert ist, kann die Variable einfach geleert werden. Die Variable rooms enthält alle Räume durch "|" getrennt, die in der Uhr angezeigt werden sollen.

Die App unterstützt (aber erzwingt nicht) folgende user attributes an den Devices:
attr global userattr pebbleCmd pebbleOrder pebbleReadOnly pebbleHide


  • Mit pebbleCmd können die auf der Uhr verfügbaren Kommandos pro Device konfiguriert werden. Wenn die Variable nicht gesetzt ist, wird webCmd genutzt.
  • Mit pebbleOrder können die Devices in den Gruppen sortiert werden. Hier werden Zahlen erwartet.
  • Mit pebbleReadOnly kann ein Device auf "nur-lesend" gesetzt werden. Dieses Device kann nicht geschaltet werden mit der Uhr.
  • mit pebbleHide kann ein Device auf der Uhr versteckt werden. (noch nicht implementiert)

Zur Installation muss die 98_Pebble.pm in das FHEM Verzeichnis kopiert werden. Außerdem muss die app.js in CloudPebble kompiliert und auf die Uhr geschoben werden.

Bedienung:
Die Devices werden nach Raum sortiert. Die Räume enthalten die nach Gruppen sortierten Devices. Ein Klick auf ein Device schaltet zum nächsten Zustand. Es werden alle webCmd oder pebbleCmd Kommands nacheinander geschaltet (pro Klick eines). Klickt man lange auf ein Device, wird die Liste der möglichen Kommandos angezeigt, die direkt einzeln geschaltet werden können.

Der Stand ist aktuell Beta, funktioniert bei mir aber schon recht gut.

Wenn Bedarf besteht, würde ich die App weiter ausbauen (Icons, etc) und in den Pebble Store schieben.

Freue mich über Feedback! : )

marcus42

Ist ja genial! Werde ich in nächster Zeit mal ausprobieren

juergen012

Ja HALLO!! Super, wird sofort getestet.
Gruß
Jürgen
Fhem unter Proxmox

weihnachtsmann

Spitze! Very Nice! Wird getestet, sobal das Logging meiner Sensoren wieder funzt.

marcus42

Hallo Markus,

habe Deine Implementierung installiert und es funktioniert ganz prima.

Eine Frage habe ich aber:

Ich arbeite häufiger mit setList. Zum Beispiel beim anwesenheitStatus Dummy.
Hier verweise ich in webCmd nur auf state.
Unter setList sind dann die möglichen Status angegeben.


setList state:anwesend,abwesend,schlafen
webCmd state


Könnte man dies noch in Deinem Modul berücksichtigen?

Ansonsten kann ich nur "Danke" für Dein Modul sagen !!

VG
Marcus

juergen012

Hallo, habe die App schon ein wenig getestet. Milight funzt schon ganz gut. Aber "Schalter" wie FS20 oder IT lassen sich nicht schalten. Es wird der Zustand angezeigt und beim betätigen der Taste stürzt die App  ab..
Gruß Jürgen 
Fhem unter Proxmox

marcus42

Hallo,

habe gerade diese Warnings im Logfile gefunden:

2015.09.28 17:17:01 1: PERL WARNING: "my" variable @sorted_devices masks earlier declaration in same scope at ./FHEM/98_Pebble.pm line 124.
2015.09.28 17:17:01 1: PERL WARNING: Use of uninitialized value in string comparison (cmp) at ./FHEM/98_Pebble.pm line 142.
2015.09.28 17:17:01 1: PERL WARNING: Use of uninitialized value in string comparison (cmp) at ./FHEM/98_Pebble.pm line 142.


VG
Marcus

_Markus_

Hi,

@Marcus: Du kannst einfach mit attr Device pebbleCmd anwesend:abwesend:schlafen den webCmd für deine Pebble überschreiben. Die Warnings schaue ich mir die Woche noch an - offensichtlich ein my zuviel : )

@Jürgen: Bei mir funktionieren auch die IT Schalter. Kannst du mal bei Cloudpebble in das Log schauen und ggf. hier posten?

VG
Markus


marcus42

Hallo Markus,

danke für den Tipp mit pebbleCmd!

Hatte ich einen Tag vorher zwar gelesen,
mich beim Testen aber nicht mehr dran erinnert.

Es klappt! Danke!

VG
Marcus

marcus42

Die Idee mit der Vibration als haptisches Feedback zu Ausführung des Befehls ist übrigens super :-)

marcus42

Hallo,

ich habe in Zeile 118 von 98_Pebble.pm

$d{subtitle} = 'Status: ' . $d{state} if($d{state});

ersetzt durch

$d{subtitle} = $d{state} if($d{state});

um mehr Platz für benutzerdefinierte Status zu bekommen.

juergen012

Hallo, jetzt läuft es. Habe pebbleCmd gesetzt...
Gruß
Jürgen
Fhem unter Proxmox

fhemhurz

Zitat von: marcus42 am 29 September 2015, 18:58:11
Hallo,

ich habe in Zeile 118 von 98_Pebble.pm

$d{subtitle} = 'Status: ' . $d{state} if($d{state});

ersetzt durch

$d{subtitle} = $d{state} if($d{state});

um mehr Platz für benutzerdefinierte Status zu bekommen.

Ergänzend hierzu habe ich in app.js in den Zeilen 143 und 180 den 'Status: '-Text ebenfalls entfernt, da sonst der Text nach einem Schaltvorgang wieder auf der Pebble erscheint.

Ansonsten funktioniert das Modul einwandfrei. Vielen Dank an _Markus_ dafür!
CUL 868, CUL 433, Signalduino, HUE, deCONZ, ESPEasy, Intertechno, Siro, FritzBox 7490, Raspberry Pi 1 2 3

Stappsen

#13
Hallo,

ich bin nach der Anleitung vorgegangen, allerdings bekomme ich einen Verbindungsfehler auf der Pebble angezeigt. Anschliessend sind alle drei FHEM-Webinterfaces nicht mehr erreichbar und ich muss den RPi neustarten.

FHEM ist auf dem aktuellen Stand.

Hat noch jemand diesen Fehler?


NACHTRAG: Das hätte ich vielleicht auch erwähnen sollen. Ich habe den Fehler mit einer Pebble Time.


Grüße,
Stappsen

dieda

Nur mal so eine Verständnisfrage. Funktioniert dein Modul auch mit der Pebble Time? Ich weiß, dass Tasker im Moment nicht funktioniert.
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs