Einbinden des thingm blink(1) usb stick

Begonnen von hobby_musiker, 10 Januar 2017, 21:57:30

Vorheriges Thema - Nächstes Thema

hobby_musiker

Hallo allerseits,

nachdem ich in einem anderen RPi-Bastelprojekt gute Erfahrungen (auch bezüglich WAF  ;D) mit diesem Teil hier https://blink1.thingm.com gesammelt habe und ich es dort nicht mehr brauche, würde ich es jetzt gerne in meine FHEM-Installation einbinden. Die Idee ist, es als eine Art RGB-Warnleuchte zu verwenden, wenn grade mal der Touchscreen aus ist (z.B. Rot=Batteriewarnung eines HM-Sensors, Blau=S-Bahn-Störung,...).

Nachdem ich hier im Forum nichts dazu gefunden habe und es für das Teil eine recht breite OpenSource Library-Unterstützung gibt - unter anderem für Linux (https://blink1.thingm.com/libraries/) - habe ich beschlossen, das mal anzugehen. Kann ja so schwer nicht sein...

Libraries existieren u.a. für

  • C/C++
  • Java
  • Python
  • Linux kernel

Wobei ich mich mit Java nicht so gut auskenne.

Was wäre der beste Weg dafür?
Bzw. wo muss ich mich überall einlesen? https://forum.fhem.de/index.php/topic,18962.msg116644.html#msg116644 kenn ich schon... ;)
Muss es denn unbedingt Perl sein (damit kenn ich mich noch gar nicht aus) oder ginge auch ein C-Progrämmchen oder Linux-Skript?

Bin für Anregungen und/oder einen Schubs in die richtige Richtung dankbar.

Gruss Micha

kaihs

Für ein richtiges perl fhem Modul siehe https://wiki.fhem.de/wiki/DevelopmentModuleIntro

Aber es scheint ja auch ein Commandline Tool dafür zu geben, das kann ja auch aus fhem heraus aufgerufen werden, siehe SHELL Befehle in der commandref.
Banana Pi, Add-On Board mit 1.8" TFT LCD und IR-Sender, CULFW V1.61, div. Homematic Komponenten, Pollin Funksteckdosen, Selbstbau CUL433 MHz, Jeelink Clone, EC3000
Selbstbau CUL868MHz für Wireless M-Bus, SIGNALduino mit Logilink Temp.-sensoren und Auriol Wetterstation

hobby_musiker

Hallo kaihs,

vielen Dank für den Tip.

Ich hab es jetzt so hinbekommen:
define Blink1 dummy
attr Blink1 devStateIcon on:SchalterOn@red:off off:SchalterOff@#CC6666:on set_on:SchalterOn@#CC6666:set_on set_off:SchalterOff@red:set_off
attr Blink1 fp_Aussen 181,683,0,
attr Blink1 room Experiment
define act_on_Blink1 DOIF ([Blink1] eq "on") ({system("sudo /opt/fhem/blink1-tool --on  >> $currlogfile 2>&1 &")}) DOELSE ({system("sudo /opt/fhem/blink1-tool --off  >> $currlogfile 2>&1 &")})
attr act_on_Blink1 room Experiment


So landen auch die Terminalausgaben im FHEM-Logfile.

Knackpunkt war dann, dass das sudo (notwendig auf dem RPi für den Zugriff auf das USB-Device) aus FHEM raus nicht funktioniert.
Schließlich hat es dann geklappt, nachdem ich das Tool samt Pfad dafür freigegeben habe. Also Shell aufmachen, dann:
sudo visudo eintippen, dann im File ganz unten ALL     ALL = NOPASSWD: /opt/fhem/blink1-tool einfügen und speichern.

Durch Antippen des Dummy wird Blink(1) ein- und wiederausgeschaltet :-)

Gruss Micha

moontear

Genau das hatte ich auch gerade überlegt wie ich den blink(1) einbinde. Perfekt!

Damit du die Commands nichts als super user (sudo) ausführen musst einfach udev rules verwenden:

https://github.com/todbot/blink1/blob/master/linux/51-blink1.rules Erklärung direkt in der Datei. Funktioniert wunderbar und man spart sich sudo.

hobby_musiker

Hallo moontear,

das hat bei mir (auf einem Rpi 3/Jessie) nicht funktioniert. :(

Welches Betriebssystem verwendest Du? Und - verwendest Du das Command-line Tool oder den Mini-HTTP-Server?

Gruß Micha

moontear

Ebenfalls Jessie auf einem Rpi2.

Das hat bei mir auf anhieb funktioniert. Alternativ / zusätzlich kannst du auch den FHEM Benutzer in die tty Gruppe tun: https://forum.fhem.de/index.php?topic=12037.0

Mit den Berechtigungen kannst du auch ohne FHEM probieren, einfach mit einem nicht root Benutzer probieren das blink1-tool auszuführen. sudo solltest du nie benutzen müssen. Bei mir ist der fhem Benutzer in der tty Gruppe und die udev rules ziehen auch - kann man einfach überpfüfen wenn man den USB Stick rauszieht und wieder reinzieht und ob die Berechtigungen dann 666 sind, wie diese udev rules das vorsehen.

Ich benutze aktuell das Commandline Tool nach deiner Vorlage aber denke auch gerade über den Mini HTTP Server nach um das ganze von außen steuerbar zu machen.