FHEMswitch - Android Widgets

Begonnen von Werner Schäffer, 01 Mai 2015, 18:08:09

Vorheriges Thema - Nächstes Thema

Werner Schäffer

Auf der letzten Swite dieses Threads kannst du lesen warum dieses Widget nicht mehr weiterentwickelt wird

FHEMswitch ist ein werbefreies Android Widget für den Startscreen und ist im Google Store kostenlos verfügbar, auch in der Zukunft.

Beschreibung:
Dieses Widget ermöglicht FHEM-Schalter, Werte-Anzeigen und selbstdefinierte FHEM-Befehle auf dem Startscreen eines Android-Gerätes kompakt in einem Widget zu platzieren.

Über eine Konfiguration, die automatisch beim Platzieren auf dem Homescreen aufgerufen wird oder auch manuell gestartet werden kann, lassen sich Devices und Lightscenes für die Anzeige auswählen, umbenennen und sortieren. Diese Widget holt sich die aktuellen Stati der ausgewählten Fhem-Devices über eine Websocket-Verbindung zum Server. Deshalb ist zu beachten:

Voraussetzungen
Man braucht selbstverständlich eine Fhem-Server. Das reicht aber nicht. Zusätzlich muss fhem.js installiert werden. Dies ist ein node.js Server und der erfordert wiederum eine funktionierende nodejs Installation.

Für die Installation von node.js und fhem.js gibt es schon einen Thread hier im Forum:
http://forum.fhem.de/index.php/topic,33755.0.html

Features


  • Schalter:
    Alle FHEM Einheiten die On/Off geschaltet werden können, können mit einem Statussymbol (Lampe) das den aktuellen Schaltzustand anzeigt, aufgelistet werden. Ein Klick auf den Button führt ein "Toggle" durch.


  • Lightscenes:
    Auch Lightscenes können abgebildet werden und mit einem Klick eine Scene aktiviert werden.


  • Werte anzeigen:
    Es können die aktuellen Werte jeder FHEM Einheit angezeigt werden. Bei Bedarf und bei manchen Wertetypen kann der Wert auch durch ein Icon dargestellt werden. Dies geht für die Werte on, off, ok und low, sowie für alle numerischen Werte mit einem % am Ende (z.B. Ladezustand von Batterien, man kann da mit FHEM Dummy und Notify sehr viel abbilden).
    Beispiel: https://forum.fhem.de/index.php/topic,62610.0.html 


  • FHEM-Befehle:
    Es können Buttons definiert werden die beliebige FHEM Befehle ausführen.


  • Numerische Werte:
    Rein numerische Werte, wie Temperatur oder Lautstärke, können über Up/Down Buttons gesteuert werden.
    Beispiel: https://forum.fhem.de/index.php/topic,62655.0.html


  • Sortierung:
    Die Reihenfolge der Elemente innerhalb einer Gruppe kann in der Konfiguration durch Drag&Drop beliebig festgelegt werden.


  • Multi Widgets:
    Bis zu vier Widgets, die sich in Inhalt, Form und Größe unterscheiden können, lassen sich definieren. Nach dem Start der Konfiguration von FHEMswitch können die Widgets durch einen Farbcode unterscheiden werden.


  • lokal und remote:
    Man kann, muss aber nicht, für das eigene WLAN eine andere URL zum FHEM-Server definieren, wie für den Remotezugang. Man kann dann z.B. lokal unverschlüsselt sich direkt mit FHEM (js und pl) verbinden, während remote eine https-Verbindung aufgebaut wird.
Installation und Konfiguration
Nach der Installation im Store nicht auf Öffnen klicken, sondern das Widget suchen und auf einen freien Platz eines Startscreens ziehen. Die Konfiguration öffnet sich dann automatisch. Die Konfiguration kann später auch durch Starten der App FHEMswitch gestartet werden um Änderungen vorzunehmen.

So sieht es aus
https://github.com/winne27/FHEMswitch/tree/HEAD/assets/sreenshots/funktionsgrafik.jpg
https://github.com/winne27/FHEMswitch/blob/HEAD/assets/sreenshots/Screenshot_2016-12-12-19-04-37.png


Weitere Beispiele in dem Verzeichnis:
https://github.com/winne27/FHEMswitch/tree/HEAD/assets/sreenshots

Prof. Dr. Peter Henning

Das ist ja alles sehr nett.

Allerdings sei davor gewarnt, das ohne weiter gehende Sicherheitsmaßnahmen zu nutzen (etwa außerhalb des Hauses). Denn Node.js stellt derzeit noch ein ziemliches Sicherheitsrisiko dar., siehe z.B. https://nodesecurity.io/

LG

pah

Werner Schäffer

Zitat von: Prof. Dr. Peter Henning am 02 Mai 2015, 06:20:10
...
Allerdings sei davor gewarnt, das ohne weiter gehende Sicherheitsmaßnahmen zu nutzen (etwa außerhalb des Hauses). Denn Node.js stellt derzeit noch ein ziemliches Sicherheitsrisiko dar., siehe z.B. https://nodesecurity.io/
...

"ziemliches Sicherheitsrisiko" ist doch sicher etwas übertrieben. Ähnliche Listen wie in dem angegeben Link findet man auch für PHP, Perl, Apache, ....
Vielleicht mag es ein paar mehr Probleme geben als in PHP, dafür sind aber wahrscheinlich weniger Exploits im Umlauf, da node.js noch nicht so verbreitet ist.

Außerdem ist node.js auf https://github.com/winne27/fhem.js so vorkonfiguriert dass es keine DB-Zugriffe macht, dass es keine HTTP-Requests erlaubt und auch von Client-Seite keinerlei User-Input verarbeitet. Erlaubt sind nur Websocket-Requests. Damit sind schon die allermeisten potentiellen Risiken ausgeschlossen.

node.js kann man umkonfigurieren, dass es auch dies alles macht, das ist aber nur notwendig wenn man eigene Anwendungen damit realisieren will. Zu Nutzung des Widgets FHEMswitch kann man die Standardkonfiguration benutzen und schließt damit die allermeisten Risiken aus.

Will man FHEMswitch außer Haus benutzen, sollte man allerdings die Konfiguration so ändern dass für die Verbindung ein Passwort benötigt wird. Zusätzlich sollte man dann auch noch die SSL-Verschlüsselung aktivieren.

Trotzdem Danke für den Hinweis auf den Security-Aspekt. Ich habe mir den Code daraufhin nochmals angeschaut und auch noch eine kleine Änderung vorgenommen.

Werner Schäffer


Prof. Dr. Peter Henning

Zitat"ziemliches Sicherheitsrisiko" ist doch sicher etwas übertrieben.
>:(
Sicher nicht.

pah

Werner Schäffer

Zitat von: Prof. Dr. Peter Henning am 02 Mai 2015, 06:20:10
...
Denn Node.js stellt derzeit noch ein ziemliches Sicherheitsrisiko dar., siehe z.B. https://nodesecurity.io/
...

Es gibt durchaus auch andere Ansichten:

Node.js at payPal
https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/

Why Walmart is using Node.js
http://venturebeat.com/2012/01/24/why-walmart-is-using-node-js/

How LinkedIn used Node.js and HTML5 to build a better, faster app
http://venturebeat.com/2011/08/16/linkedin-node/

Node at scale: What Google, Mozilla, & Yahoo are doing with Node.js
http://venturebeat.com/2012/01/24/node-at-google-mozilla-yahoo/

Nicht unbedingt Hinterhofklitschen und durchaus auch sicherheitsrelevante Anwendungen, oder Herr Professor?

eberlrudi

Hallo. Ich bin blutiger Anfänger und versuche nun seit Tagen fhem.js auf meinem Debian Server zu installieren. Ich schaffe es einfach nicht. Gibt es dafür eine Schritt für Schritt Anleitung? Ich würde FhemSwitch auch gerne benutzen.

Werner Schäffer

#7
Achtung - diese Anleitung ist veraltet!

Für die Installation bitte die Anleitung auf

https://github.com/winne27/fhem.js

benutzen.

----------------------------------------------------


Step-by-Step Anleitung für die Installation von fhem.js unter Debian (Ubuntu, ...):

Prüfen ob in fhem telnet ohne Passwort aktiviert ist.
Auf welchem Port lauscht fhem - Standard ist 7072

Als user root folgende Kommandos ausführen:
apt-get install nodejs
npm install -g socket.io
npm install -g mysql
npm install -g forever
(optional, aber sinnvoll um fhem.js als Service zu starten)

mkdir -p /var/www/fhem.js (es kann auch ein beliebiges anderes Verzeichnis benutzt werden)
alle Files *.js von https://github.com/winne27/fhem.js in dieses Verzeichnis kopieren.
params.js prüfen ob alles richtig ist. (falls der telnet-Port 7072 ist, muss man erstmal nichts ändern dort)


mkdir -p /var/log/fhem

cd /var/www/fhem.js
node server.js


Damit wurde fhem.js gestartet und auf der Konsole müssten Meldungen erscheinen.
Beenden kann man fhem.js mit Strg+c

Will man fhem.js dauerhaft am Laufen halten empfiehlt es sich einen Service mit Hilfe von forever einzurichten. Dazu von  https://github.com/winne27/fhem.js /etc/init.d/fhem.js in das Verzeichnis /etc/init.d kopieren.

Mit

service fhem.js start
service fhem.js stop


kann man dann fhem.js steuern. Soll der Start von fhem.js noch automatisiert werden ist noch folgendes auszuführen:

update-rc.d fhem.js defaults


eberlrudi

Danke für die schnelle Antwort.

Ich bin bereits wie in der Redme vorgegangen. Im Grunde scheitert es bei mir schon an dem Befehl npm install -g socket.io
Da bekomme ich eine Fehlermeldung:  bash: npm: Kommando nicht gefunden.

Woran liegt denn das? Ich benutze den Root-Terminal

Prof. Dr. Peter Henning

Nun, daran, dass npm nicht installiert ist.

LG

pah

Werner Schäffer

#10
Zitat von: eberlrudi am 17 Mai 2015, 20:48:53

Da bekomme ich eine Fehlermeldung:  bash: npm: Kommando nicht gefunden.

Woran liegt denn das? Ich benutze den Root-Terminal

npm ist nicht installiert!

Hat die Installation von nodejs geklappt (apt-get install nodejs - einfach mal "node -v" in der Kommandozeile eingeben)?

Normalerweise wird mit node.js auch automatisch npm mitinstalliert.

Ansonsten kannst du mal

apt-get install npm

versuchen.

Kurz zusammengefasst:
versuche erst mal eine node.js und npm Installation hinzubekommen. Da gibt es sowas das sich Google nennt und einem dabei sehr behilflich ist.
Die Installation war erfolgreich wenn die beiden Befehle

node -v
npm -v


jeweils eine Versionsnummer liefern.



jsloot

Guten Abend,

leider bekomm ich beim Starten von fhem.js die folgende Fehlermeldung:
nodejs server.js
25.05.2015 20:36:00 listen for http requests disabled
25.05.2015 20:36:00 Server started: without SSL
25.05.2015 20:36:00 start connection to fhem server
25.05.2015 20:36:00 connected to fhem server for listen on changed values

undefined:31
Bye...
^
SyntaxError: Unexpected token B
    at Object.parse (native)
    at Socket.<anonymous> (/var/www/fhem.js/server.js:420:29)
    at Socket.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
    at process._tickCallback (node.js:415:13)


Sagt das jemanden was?

Gruß Jörn
Ein FHEM-Raspi mit HM-CFG-USB-2. 9 HM Heizthermostate, 9 HM Temperatursensoren, 22 HM Fensterkontakte, 7 Rolloaktoren, 17 HM Unterputz-Aktoren

Icinger

Das selbe Problem habe ich leider auch:


stefan@cubietruck:/var/www/fhem.js > node server.js
25.05.2015 20:47:01 listen for http requests disabled
25.05.2015 20:47:01 Server started: without SSL
25.05.2015 20:47:01 start connection to fhem server
25.05.2015 20:47:01 connected to fhem server for listen on changed values

undefined:41
Bye...
^
SyntaxError: Unexpected token B
    at Object.parse (native)
    at Socket.<anonymous> (/var/www/fhem.js/server.js:420:29)
    at Socket.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
    at process._tickCallback (node.js:415:13)
stefan@cubietruck:/var/www/fhem.js >

Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Werner Schäffer

Auf https://github.com/winne27/fhem.js gibt es eine neue Version von fhem.js mit der dieser Abbruch hoffentlich nicht mehr auftritt.

Bitte hier wieder melden falls damit das Problem gelöst ist. Selbstverständlich auch wenn es nicht gelöst ist oder wenn andere Probleme auftreten.

jsloot

Zitat von: Werner Schäffer am 26 Mai 2015, 15:11:10
Auf https://github.com/winne27/fhem.js gibt es eine neue Version von fhem.js mit der dieser Abbruch hoffentlich nicht mehr auftritt.

Bitte hier wieder melden falls damit das Problem gelöst ist. Selbstverständlich auch wenn es nicht gelöst ist oder wenn andere Probleme auftreten.

Hallo Werner, damit hats bei mir funktioniert. Vielen vielen Dank!!!

Gruß Jörn
Ein FHEM-Raspi mit HM-CFG-USB-2. 9 HM Heizthermostate, 9 HM Temperatursensoren, 22 HM Fensterkontakte, 7 Rolloaktoren, 17 HM Unterputz-Aktoren