Flic Button Module

Begonnen von dfrommi, 03 Oktober 2016, 17:42:39

Vorheriges Thema - Nächstes Thema

dfrommi

Falls ihr Flic-Buttons nicht kennt: das sind per Bluetooth angesteuerte kleine Buttons, die 3 verschiedene Arten von Events auslösen können: Einfachklick, Doppelklick und Halten.
Sie sind eigentlich als Ergänzung für's Smartphone gedacht, aber der Hersteller bietet auch ein Linux SDK an, um sie z.B. auf einem Raspberry Pi verwenden zu können.

Ich habe ein FHEM Modul geschrieben, welches die 3 Events in FHEM verfügbar macht. Ein laufender flicd des SDKs ist Vorarussetzung für dieses Modul.

Schnellstart: (nach Einrichtung des flicd)

define Flic flic localhost 5551
attr Flic buttons white=12:44:ab:cb:44:12, black=44:32:ab:fe:cb:23


Danach sind die Readings black und white verfügbar mit den möglichen Werten single, double und hold.

Als Vorlage diente das Dash Button Modul.

KölnSolar

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

akw

Hi,

ich habe das hier zu spät gelesen und auch Module für FHEM geschrieben.
Ich habe den zweistufigen Ansatz mit Server und Clients gewählt, so dass jeder Button ein eigenes FHEM-Device wird.
Die Buttons funktioniert erstaunlich gut und haben eine hohe Reichweite.
Insbesondere ist es faszinierend zu sehen, wie schnell die FHEM-WEB Lampe auf den Klick reagiert.

Ich habe die Module noch nicht dokumentiert, aber sie sollten relativ selbsterklärend sein.
Definiert auch ein FLICSRV mit ip und port zum flicd Server:
define FlicServer FLICSRV localhost:5551

Dann benutzt das "pair"-Setting, um das Modul zum Scannen von FLIC-Buttons zu verwenden.
set FlicServer pair

Der anzulernende FLIC-Knopf muss dann gedrückt werden. (Wenn er vorher mit einem anderen Gerät gepaired war, muss er 5 sek lang gedrückt werden).

Die Button-FHEM-Devices werden dann per autocreate erzeugt.

Viel Spaß!

Über Rückmeldungen würde ich mich freuen.


Ciao, Arno

FHEM-SVN auf MacMini OSX 10.7.5

FS20,FHT,HMS,CUL_WS,CUL_HM,KS300,HUE,FB_DECT

FHEMobile: www.fhemobile.de

Willtho

Dein Modul funktioniert prima, akw. Ich bin tatsächlich überrascht wie schnell der Knopf reagiert :-)

Leider scheint der flicd den Bluetooth Adapter komplett zu beschlagnahmen, sodass der presenced nicht mehr läuft.

dieda

Ich denke, das liegt daran das Lepresenced und presenced nicht parallel laufen können.
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

slor

Du meinst den flicd und prsenced?
Könnte man das mit zwei Bluetooth dongles lösen?

schooney

#6
Hallo!

Zunächst einmal: sehr gutes Modul, vielen Dank für die Entwicklung. Die Buttons reagieren perfekt und viel schneller als bspw. der Amazon-Dash-Button-Hack!

Eine Frage/Ein Problem habe ich jedoch im Moment: Wie schaffe ich es, dass ich bei einem clicktype (z.B. "click") basierend auf einem abzufragenden Zustand einen Schalter schalten kann? Folgendes habe ich probiert, allerdings verfällt die Schaltung dann in eine Schleife, weil das DOIF mehrfach durchlaufen wird:

FLIC_white sei der FLIC-Button und Lamp.WZ sei eine Lampe

define Flic_pressed DOIF (([FLIC_white:clicktype] eq "click") and ([Lamp.WZ:state] eq "on")) (set Lamp.WZ off) DOELSEIF (([FLIC_white:clicktype] eq "click") and ([Lamp.WZ:state] eq "off")) (set Lamp.WZ on) DOELSE ()

Hat jemand eine Idee/eine Lösung parat?

Danke und viele Grüße
Jan
Derzeitiges Setup:
FHEM auf RPi B+ mit Wi-Fi Dongle, Bluetooth 4.0 Dongle und 433 MHz Transmitter; 6x 433 MHz Funksteckdosen; 2x Milight RGBW Bulbs +2x Milight White Bulbs + 3x Milight LED-Controller; 1x Fritz!DECT 200; 4x Flic-Smartbutton; 1x Amazon Dash-Button; Harmony Elite

dieda

Bei mir klappt die Einrichtung nicht. Laufen denn Lepresenced und Flic nebeneinander?
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

Laire

@akw

Leider funktioniert das ganze bei mir auch nicht.
Ich habe die Flics noch aus der Crowdfundingphase und hatte noch zwei unbenutzte hier liegen.

Ich habe beide Module kopiert, den Server erstellt und den Scan gestartet, BT ist an (Build in BT rp 3) wenn ich den Knopf drücke passiert aber gar nichts.

Wenn ich bluetoothctl in der konsole starte, tauchen da Devices mit der Bezeichnungen wie F008cDM0 auf, sind das die Flics? Wenn ja, dann klappt pair nicht.

andere BT Devices sind nicht gekoppelt.

Laffer72

Hallo Schooney,

das Problem hatte ich zuerst auch. clicktype triggert scheinbar öfters.
Ich habe das so gelöst:
define Licht_SZ DOIF ([FLic_weiss:state] eq "on" and [?Flic_weiss:clickstate] eq "click" and [?Lampe:state] eq "off") (set Lampe on)
...


So hat es bei mir zuverlässig funktionert.

Viele Grüße
Reinhard
Raspberry Pi Rev.B, FB7390 (FHEM2FHEM), Sonos, Smarter Coffee
Osram Lightify:2m LED-Streifen, 5m-LED-Streifen, Gartenspot, Surface 28W, Classic E14,E27, Classic RGBW E27, PAR16 GU10, Plug
CUL868:FS20-ST, FS20-DI, FS20-FMS, FS20-ES1
HMUSB:HM-Sec-RHS,HM-Sec-MDIR2
Jeelink868:TX-29-IT, TFA30.315

Laire

#10
Leider sind scheinbar beide Flic Entwickler nicht mehr aktiv hier im Board. Von dfrommi ist es der einzige Beitrag und AKW war seit Ende Dezember nicht mehr online.


Habt Ihr den flicd als service eingerichtet?

schooney

Zitat von: Laffer72 am 21 Januar 2017, 15:38:16
Hallo Schooney,

das Problem hatte ich zuerst auch. clicktype triggert scheinbar öfters.
Ich habe das so gelöst:
define Licht_SZ DOIF ([FLic_weiss:state] eq "on" and [?Flic_weiss:clickstate] eq "click" and [?Lampe:state] eq "off") (set Lampe on)
...


So hat es bei mir zuverlässig funktionert.

Viele Grüße
Reinhard

Der Tipp mit der State-Abfrage war Goldwert. Allerdings habe ich kein Attribut namens "clickstate" finden können und habe daher weiterhin "clicktype" verwendet + eine sleep 5 Anweisung, damit ich die Zeit zwischen State on & off überbrücke ohne wieder in eine Mehrfachschaltung zu kommen.

Falls du mir aber noch etwas Input zu deiner Abfrage [?Flic_weiss:clickstate] eq "click" geben magst, wäre ich dir dankbar!

Derzeitiges Setup:
FHEM auf RPi B+ mit Wi-Fi Dongle, Bluetooth 4.0 Dongle und 433 MHz Transmitter; 6x 433 MHz Funksteckdosen; 2x Milight RGBW Bulbs +2x Milight White Bulbs + 3x Milight LED-Controller; 1x Fritz!DECT 200; 4x Flic-Smartbutton; 1x Amazon Dash-Button; Harmony Elite

Laffer72

Hallo Schooney,

Sorry, das war mein Fehler soll natürlich clicktype und nicht clickstate heissen.

Zur Erläuterung meiner Anweisung:
Zuerst hatte ich auch auf clicktype getriggert. Dies funktionierte aber nicht zuverlässig, da bei einem Click der clicktype scheinbar mehrmals gesetzt wird, folglich hat es auch mehrfach hintereinander getriggert.
Die state Abfrage triggert wirklich nur einmal und wird dann gleich wieder auf off gesetzt. Mit der state Abfrage allein kann ich aber die verschiedenen Typen Click, Double Click, und hold nicht unterscheiden, daher noch die rein "informative" Abfrage, mit dem Fragezeichen voraus auf den Clicktype ohne, dass getriggert wird.

Hoffe das hat die Unklarheiten einigermaßen beseitigt.

Ich hab da aber auch noch eine Frage: Bei jedem Neustart des Raspi muss ich über btmgmt Bluetooth LE einschalten und BR/EDR ausschalten, hat einer von Euch eine Ahnung, wo ich das schon beim Hochfahren automatisch richtig einstellen lassen kann?

Vielen Dank

Reinhard
Raspberry Pi Rev.B, FB7390 (FHEM2FHEM), Sonos, Smarter Coffee
Osram Lightify:2m LED-Streifen, 5m-LED-Streifen, Gartenspot, Surface 28W, Classic E14,E27, Classic RGBW E27, PAR16 GU10, Plug
CUL868:FS20-ST, FS20-DI, FS20-FMS, FS20-ES1
HMUSB:HM-Sec-RHS,HM-Sec-MDIR2
Jeelink868:TX-29-IT, TFA30.315

schooney

Hallo Reinhard,

vielen Dank für die weitere Erklärung. Ich habe meine Anweisung angepasst, weil ich mit dem sleep-Befehl doch in ein paar Probleme gekommen bin, als ich mehrere FLICs parallel nutze während eines Stresstests. Dadurch wurde mein fhemweb unfassbar langsam - nachdem ich die sleeps rausgenommen und durch die ?-Abfragen ersetzt habe, läuft es nun 1A.

Kurze Frage zu deinem Problem: nutzt du als Basis das fliclib-linux-hci oder bist du auf fliclib-linux-dist SDK?

Näheres dazu hier: https://github.com/50ButtonsEach
Derzeitiges Setup:
FHEM auf RPi B+ mit Wi-Fi Dongle, Bluetooth 4.0 Dongle und 433 MHz Transmitter; 6x 433 MHz Funksteckdosen; 2x Milight RGBW Bulbs +2x Milight White Bulbs + 3x Milight LED-Controller; 1x Fritz!DECT 200; 4x Flic-Smartbutton; 1x Amazon Dash-Button; Harmony Elite

Laffer72

Gute Frage, ich hab mir einfach "flicd" runtergeladen und starte das ganze immer mit

sudo ./flicd -h hci1 -d -w -f flic.squlite3

aber zuvor muß ich eben bei jedem raspberry-Neustart folgendes machen:

sudo hciconfig -hci1 down
sudo btmgmt --index 1
(in btmgmt) le on
                  bredr off
                  exit
sudo hciconfig -hci1 up


Kann ich das irgendwo dauerhaft einstellen (le on, bredr off). Vielleicht in irgendeiner .conf-Datei?
Da bin ich trotz intensiver Suche noch nicht wirklich fündig geworden. Ich gebe aber zu, das ist kein Problem mit dem Modul oder flicd, sondern mit Bluetooth  :D
Raspberry Pi Rev.B, FB7390 (FHEM2FHEM), Sonos, Smarter Coffee
Osram Lightify:2m LED-Streifen, 5m-LED-Streifen, Gartenspot, Surface 28W, Classic E14,E27, Classic RGBW E27, PAR16 GU10, Plug
CUL868:FS20-ST, FS20-DI, FS20-FMS, FS20-ES1
HMUSB:HM-Sec-RHS,HM-Sec-MDIR2
Jeelink868:TX-29-IT, TFA30.315