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 (https://github.com/50ButtonsEach/fliclib-linux-hci) 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 (https://forum.fhem.de/index.php/topic,57248.msg488553.html#msg488553).
interessante Knöpfe. Details: https://www.turn-on.de/ratgeber/flic-die-17-wichtigsten-fragen-antworten-zum-smart-button-66819
aber der Preis :'(
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
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.
Ich denke, das liegt daran das Lepresenced und presenced nicht parallel laufen können.
Du meinst den flicd und prsenced?
Könnte man das mit zwei Bluetooth dongles lösen?
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
Bei mir klappt die Einrichtung nicht. Laufen denn Lepresenced und Flic nebeneinander?
@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.
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
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?
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!
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
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
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
Hier ist anscheinend von den Entwicklern niemand mehr aktiv, schade. Ich habe es nämlich geschafft, den flicd-Server zu starten und sehe auch den Button, aber wenn ich klicke, löst das kein Ereignis aus - obwohl sich state ändert und ich im Logfile folgendes sehe:
2017-04-29_12:36:37 FLIC_a64370dae480 off
2017-04-29_12:36:37 FLIC_a64370dae480 clicktype: click
2017-04-29_12:36:37 FLIC_a64370dae480 on
2017-04-29_12:36:37 FLIC_a64370dae480 off
2017-04-29_12:36:37 FLIC_a64370dae480 clicktype: click
2017-04-29_12:36:37 FLIC_a64370dae480 on
2017-04-29_12:36:37 FLIC_a64370dae480 clicktype: hold
2017-04-29_12:36:37 FLIC_a64370dae480 off
2017-04-29_12:36:37 FLIC_a64370dae480 on
2017-04-29_12:36:37 FLIC_a64370dae480 off
2017-04
Hat jemand eine Idee, was ich tun kann, damit ein notify damit funktioniert? Bisher reagiert das notify
defmod FlicNotify notify FLIC_a64370dae480:state.* (set Steckdose_A on)
einfach nicht.
dein notify ist falsch. schau im eventmonitor wie das event wirklich ausschaut oder verwende addStateEvent.
Mich würde interessieren welches der beiden Module ihr nutzt, ich versuche gerade das von akw. Geht alles soweit... nur den Button bekomme ich aktuell nicht gepaired (1x Drücken/ 5 Sekunden gedrückt halten - nix bringt es).
Ich habe ein Pi1 mit einem USB BT Stick. Der wir dauch erkannt vom Flicd und der FlicServer auf FHEM Seite wird auch verbunden. Dann war es das aber auch...
Muss ich mit dem Handy den BT Adapter auch sehen können (nicht der fall - Flic sehe ich)?
Oder liegt es an meinem antiquierten BT 2.0 EDR Stick :o 8) 8) 8)
Zitatsudo ./flicd -f sqlite_db_file.db -w
Available HCI devices found:
Trying hci0
Flic server is now up and running!
Accepted new client
Successfully bound HCI socket
Das Modul von dfrommi verbindet sich bei mir nicht mit dem Flicd. Da passiert noch weniger ^^
Zitat von: Master_Nick am 21 Mai 2017, 20:06:06
Mich würde interessieren welches der beiden Module ihr nutzt
Oder liegt es an meinem antiquierten BT 2.0 EDR Stick :o 8) 8) 8)
Ich nutze 50-Flic und das klappt auch. Flic verlangt BT 4!
Gab es bei Amazon im Angebot kommt morgen ;-) Der Asus BT 4.0.
:D Und schon geht es auch bei mir.
Coole Sache Danke!
Mahlzeit, ich grabe das hier aus, da es nicht mehr funktioniert auf Perl 5, version 24, subversion 1 :-)
Der Fehler ist "Experimental keys on scalar is now forbidden at ./FHEM/51_FLIC.pm line 84."
Etwas ähnliches wurde hier https://forum.fhem.de/index.php?topic=58924.0 behoben. Leider reichen meine bisherigen Kenntnisse nicht aus um es zu adaptieren und anzuwenden.
Aber wir finden doch bestimmt wen der das kann oder?
Ich versuche mich dabei immer weiter zu entwickeln :-) Wenn also jemand erklären kann was der Punkt ist kann ich die Änderung auch selber durchführen und testen (und lernen).
Vielen Dank - mein Flic Button würde sich sehr freuen wieder zu funktionieren... er hat durchaus eine tragende tägliche Rolle.
~UPDATE~
Datei 51.FLIC.pm habe ich soweit gefixt - testen konnte ich sie nocht nicht aber sie lädt ohne Fehler
Hänge nun gerade in der 50.FLICSRV.pm ->
Experimental each on scalar is now forbidden at ./FHEM/50_FLICSRV.pm line 83.
sub FLICSRV_Write($$)
{
my ($hash,$fn,$msg) = @_;
my $dev = each($hash->{Host});
DevIo_SimpleWrite($hash,$msg,1);
}
Da fehlt mir gerade die Idee - habe aber auch eher Try and Error genutzt und Google als das vorhandenes Wissen da wäre.
Update 2
Also so wirft es keine Fehler beim laden - will aber auch nicht arbeiten...
sub FLICSRV_Write($$)
{
my ($hash,$fn,$msg) = @_;
my $dev = each(@{$hash->{Host}});
DevIo_SimpleWrite($hash,$msg,1);
}
Can't use string ("localhost:5551") as an ARRAY ref while "strict refs" in use at ./FHEM/50_FLICSRV.pm line 83, <$fh> line 752.
Es läuft wieder! ;D
Es sei klar gesagt, die Lösung in der 50_FLICSRV.pm ist nicht sauber. Da mangelt es mir gerade aber an Perl Kenntnissen. Bin schon ziemlich Stolz es überhaupt zum laufen gebracht zu haben ^^ Obwohl es für den Könner bestimmt Pille Palle ist.
Neue Version von den nötigen Dateien hängt an.
Eventuell kann ja jemand den String sauber in einen Array casten :-) Ich habs gerade nicht gepackt.
Änderungen in der 50_FLICSRV.pm:
Line 7
#use strict;
Line 83
my $dev = each(@{$hash->{Host}});
Änderungen in der 51_FLIC.pm
Line 84
foreach my $key (keys %{$modules{FLIC}{defptr}}) {
Zitat von: Master_Nick am 28 Oktober 2017, 02:31:49
Mahlzeit, ich grabe das hier aus, da es nicht mehr funktioniert auf Perl 5, version 24, subversion 1 :-)
Der Fehler ist "Experimental keys on scalar is now forbidden at ./FHEM/51_FLIC.pm line 84."
Ich mache keine updates, um so was nicht zu kriegen. Wann und wie kommst Du auf diese Perl-Version (=wie kann ich das vermeiden)?
Keine Updates halte ich persönlich für keine gute Option. ;) Aber das kann jeder halten wie er mag.
Ich habe auf Raspian Stretch geupdatet. Da kommt die neue Perl Version mit.
Die einzigen beiden Module die nicht gingen waren gcm_send (Fix ist aber bereits da) und die Flic Geschichte neue Dateien siehe oben.
Kein Grund eine neue Version auszulassen ^^
Schlimmsten Falles kann es dir passieren, dass bald mal eine Funktion genutzt wird, die in der alten Version nicht existierte und dann bei dir nichts mehr geht. Das wäre so das schlimmste :-)
Genau so kann es halt beim Schritt nach vorn mal sein, dass man ein wenig arbeiten muss.
Ja, verstehe ich schon. Aber ich habe eine Menge Eigenbauten und "never change" usw. Bei den Betriebssystemen mache ich das ständig, bei FHEM war ich zu oft damit beschäftigt, nach einem update erst einmal das System wieder zum laufen zu kriegen. Sobald ich was neues installiere, mache ich immer ein update. Sonst nur, wenn etwas nicht so geht, wie ich es will.
:) Auch ein weg :-)
Kannst ja nen Iso ziehen und dann updaten und schauen was noch geht :-)
So werde ich es in Zukunft machen - das große Ärgernis war, dass ich die fehlenden Module nicht merkte. Somit speicherte ich einmal und Zack waren die defines aus der Hauptconfig geworfen.