Fhem CUL Hilferuf CUL_0, help me!

Sollten in eurem FHEM log Einträge wie:

2015.08.24 11:00:01 3: CUL_0: Unknown code A0FD086102E9BE30000000A88EF080000::-46.5:CUL_0, help me!
2015.08.24 11:02:43 3: CUL_0: Unknown code A0FD186102E9BE30000000A88EF080000::-46.5:CUL_0, help me!
2015.08.24 11:05:11 3: CUL_0: Unknown code A0FD286102E9BE30000000A88EF080000::-46.5:CUL_0, help me!
2015.08.24 11:07:24 3: CUL_0: Unknown code A0FD386102E9BE30000000A88EF080000::-46.5:CUL_0, help me!
2015.08.24 11:10:27 3: CUL_0: Unknown code A0FD486102E9BE30000000A88EF080000::-46.5:CUL_0, help me!
2015.08.24 11:13:16 3: CUL_0: Unknown code A0FD586102E9BE30000000A88ED080000::-45.5:CUL_0, help me!

auftauchen, bedeutet das soviel wie dass euer CUL eine Nachricht empfangen hat, für die es in FHEM noch keinen Empfänger gibt. In diesem Fall handelt es sich wohl um ein HM-CC-RT-DN eines Nachbars mit HmId 2E9BE3. Die Lösung besteht darin eine virtueller Controller Unit (VCCU) anzulegen, welche sich um diese Nachrichten kümmert. Eine VCCU benötigt wie alle HM Devices eine eindeutige Adresse im CUL_HM Addressbereich. Nach Möglichkeit sollte dafür die sechsstellige hexadezimale HMId eures CUL/CUNO/HMLAN verwendet werden.

Dies sollte bereits reichen um die nervigen Logeinträge zu beseitigen. Die angelegte VCCU kann aber noch viel mehr, zum Beispiel mehrere IODevices per IOList verwalten:

Neue Homematic Geräte sollten nun direkt mit den VCCUs gepairt werden:

Für sicherheitskritische Geräte kann nun ein bevorzugtes IODevice definiert werden

Damit wird CUL_0 bevorzugt genutzt, andernfalls werden die IODevices in der IOList der VCCU durchprobiert.

Für mobile Geräte wie z.B. Fernbedienungen bietet sich die dynamische Auswahl des IODevices aus der IOList des VCCU nach Empfangsstärke an:

Raspberry Pi Wlan Issues

Chances are you have an Edimax EW-7811Un wlan adapter that uses overly aggressive power management. This can be fixed easily by

and adding the following line to disable the power management

options 8192cu rtw_power_mgnt=0 rtw_enusbss=0

after a reboot, your plan should be much more stable.

Single Board Computer Benchmarks

Over the last few years, I have evaluated many single board ARM computers for mobile robotics and home automation applications. Here are some rough benchmark results comparing across different SBC generations that may help avoid some bad buys:

Raspberry Pi

CPU : ARMv6-compatible processor rev 7 (v6l)
L2 Cache :
OS : Linux 4.0.9+
C compiler : gcc version 4.6.3 (Debian 4.6.3-14+rpi1)
libc : libc-2.13.so
MEMORY INDEX : 2.528
INTEGER INDEX : 3.150
FLOATING-POINT INDEX: 2.073

Banana Pi


CPU : Dual
L2 Cache :
OS : Linux 3.4.90
C compiler : gcc version 4.6.3 (Debian 4.6.3-14+rpi1)
libc : libc-2.13.so
MEMORY INDEX : 3.448
INTEGER INDEX : 4.516
FLOATING-POINT INDEX: 3.794

Raspberry Pi 2


CPU : 4 CPU ARMv7 Processor rev 5 (v7l)
L2 Cache :
OS : Linux 3.18.5-v7+
C compiler : gcc version 4.6.3 (Debian 4.6.3-14+rpi1)
libc : libc-2.13.so
MEMORY INDEX : 4.256
INTEGER INDEX : 5.640
FLOATING-POINT INDEX: 4.786

Raspberry Pi 3


MEMORY INDEX : 7.105
INTEGER INDEX : 8.976
FLOATING-POINT INDEX: 7.601

Radxa Rock with antiquated kernel on NAND:


CPU : 4 CPU
L2 Cache :
OS : Linux 3.0.36+
C compiler : gcc version 4.8.2 (Ubuntu/Linaro 4.8.2-19ubuntu1)
libc : libc-2.19.so
MEMORY INDEX : 9.142
INTEGER INDEX : 9.994
FLOATING-POINT INDEX: 9.965

Radxa Rock Pro with experimental 3.18 kernel on SD card:


CPU : 4 CPU ARMv7 Processor rev 0 (v7l)
L2 Cache :
OS : Linux 3.18.0-rc5+
C compiler : gcc version 4.8.2 (Ubuntu/Linaro 4.8.2-19ubuntu1)
libc : libc-2.19.so
MEMORY INDEX : 3.463
INTEGER INDEX : 3.741
FLOATING-POINT INDEX: 3.665

Hardkernel Odroid XU4 on SD card


CPU : 8 CPU ARMv7 Processor rev 3 (v7l)
L2 Cache :
OS : Linux 3.10.82
C compiler : gcc version 4.8.4 (Ubuntu/Linaro 4.8.4-2ubuntu1~14.04)
libc : libc-2.19.so
MEMORY INDEX : 15.504
INTEGER INDEX : 15.309
FLOATING-POINT INDEX: 14.164

And my current 13″ MacBookPro 🙂


CPU : 2,8 GHz Intel Core i7
L2 Cache :
OS : Darwin 14.5.0
C compiler : Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
libc :
MEMORY INDEX : 47.880
INTEGER INDEX : 40.440
FLOATING-POINT INDEX: 83.190

You can benchmark your own SBCs with nbench by:

If you have some interesting results of your own, please don’t forget to drop a comment.

Telegram mit FHEM

Telegram ist eine schneller, kostenloser und vor allem verschlüsselter Nachrichtendienst der sich gut dazu eignet um Meldungen der Heimautomatisierungslösung FHEM auf die Mobilgeräte zu bringen. Mittlerweile gibt es zwei verschiedene Möglichkeiten um Telegram in Fhem einzubinden. Es sei die neuere Version per Bot API empfohlen, da diese wesentlich einfacher einzurichten ist.

Neue Version per Bot API:
in Telegram an den BotFather schreiben:


/newbot
MyFhemBot
MyFhemBot
/setuserpic

der BotFather gibt dann ein Token à la 110201543:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw zurück.

in Fhem dann eine TelegramBot Instanz definieren:

Da der Bot nicht von sich aus Kontakt aufnehmen darf, per telegram eine Nachricht an @MyFhemBot senden. Danach kann der Bot mit bekannten peers per

oder mit dem defaultPeer per

kommunizieren.

Alte überholte Version per Telegram cli:

Der Telegram Client tg lässt sich folgendermaßen installieren:

Nun kann man testen, ob das telegram-cli grundsätzlich funktioniert

Beim ersten Start ist die Registrierung eines Accounts mit einer Telefonnummer nötig. Dazu wird per SMS oder Anruf ein Code zur Verifizierung übermittelt. Nach erfolgreicher Registrierung müssen zuerst die benötigten Kontakte angelegt werden :

Nun sollte überprüft werden, ob Nachrichten verschickt und empfangen können werden:

Bei Bedarf kann noch ein Profilname, Benutzername und Profilbild für den Telegram Account gesetzt werden:

Funktioniert dies alles, kann Telegram als Daemon gestartet werden. Dazu verwende ich folgendes Script von Fizzle:

Der Benutzer tatsch und die binary Pfade müssen auf ihrem System angepasst werden. Der Dienst kann nun ganz bequem per

gestartet, gestoppt, bzw. neu gestartet werden.

Nun muss noch das FHEM Modul 70_Telegram.pm von viegener installiert werden:

in FHEM muss das Modul dann neu geladen werden. Danach kann eine telegram Instanz definiert, ein Standardempfänger gesetzt und eine Testnachricht versendet werden: