Kaminfeuereffekt mit Hue und Fhem

Zuerst folgende Funktionen in die 99_myUtils.pm einfügen:

Dann eine neue LightScene Kaminfeuer anlegen:

Zum stoppen z.B. der Scene Initialized ein stopFireEffect cmd hinzufügen:

How to use USART on the Atmel AT90USBKEY / AT90USB1287

When programming the Atmel AT90USB1287 it is very helpful to have a UART connection for debugging purposes. To avoid reinventing the wheel, I will use Peter Fleury’s uartlibrary. Additional documentation an sample code can be found here.

First, we will wire some standard jumpercables to the AT90USBKEY. According to the datasheet of the AT90USB1287 and the datasheet of the AT90USBKEY the pins are available at the connector J4, more specifically:

USART1 Transmit Pin = PD3 = AT90USBKEY -> J4 Pin 7 -> White
USART1 Receive Pin = PD2 = AT90USBKEY -> J4 Pin 8 -> Green
Ground = AT90USBKEY -> J4 Pin 2 -> Black

AT90USBKEY2 J4

My UART to USB Cable has the following wiring:

RX -> Green
TX -> White
GND -> Black
VCC -> Red

Now its time for a little sample program:

Build it and flash it to your AT90USBKEY. Remember that you must bring your AT90USBKEY into DFU mode for programming with FLIP.

Now you can start a terminal:

Now you can press the RST button to actually run the program on the microcontroller and should see a nice Hello World greeting.

Using the BusPirate V3 with Mac OSX

First install the FTDI drivers from here

Now you can connect to your bus pirate with screen:

press i to view your firmware version

If your firmware < 6.1, you should update your BusPirate to the latest and greatest version:
press $ and acknowledge with yes to get into the bootloader mode, the green mode led should now be burning
press ctrl + a +k to kill the screen window and flash the new firmware with:

unplug and replug your device and recheck your installed firmware.

press ? to show the help menu
press m to change bus mode
press w/W to disable/enable the builtin powersupply
press v to monitor the voltages
press p/P to disable/enable the builtin pullup resistors
enter (0) to show the macros

If you are unsure how to connect to different bus types, you can find a great reference card here.

In the following I will connect an Invensense MPU-9250 IMU I bought on eBay.

The output should look like this:

m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
x. exit(without change)

(1)>4
Set speed:
1. ~5KHz
2. ~50KHz
3. ~100KHz
4. ~400KHz

(1)>4
Ready
I2C>W
POWER SUPPLIES ON
I2C>(1)
Searching I2C address space. Found devices at:
0xD2(0x69 W) 0xD3(0x69 R)
I2C>

Apparently that means that the sensor is available at address 0xD3 = 1101001+1 for read and at 0xD2 = 1101001+0 for write operations. That is in agreement with the datasheet.

Clear sleep mode bit (6), enable all sensors:
[0xD2 0x6B 0x00]
Read whoami register, should return 0x71:
[0xD2 0x75 [0xD3 r]

For the MPU-9150
[0xD0 0x6B 0x00]
[0xD0 0x75 [0xD1 r]
this should read 0x68

Now we will set up the BusPirate to sniff the i2c communication between a microcontroller and IMU.

This time I just hooked up the sda, scl and ground connection of the BusPirate.
PD0 = SCL = Pin 10 = gelb = BP lila
PD1 = SDA = Pin 9 = orange = BP grau

screen /dev/tty.usbserial* 115200
HiZ>m
1. HiZ
2. 1-WIRE
3. UART
4. I2C
5. SPI
6. 2WIRE
7. 3WIRE
8. LCD
x. exit(without change)

(1)>4
Set speed:
1. ~5KHz
2. ~50KHz
3. ~100KHz
4. ~400KHz

(1)>4
Ready
I2C>(2)
Sniffer
Any key to exit

Another great way to analyze the I2C protocol is to use the Open Logic Sniffer on top of BusPirate.

A nice tutorial on how to setup and use the Open Logic Sniffer with the BusPirate can be found here.

AVR development on Mac OSX

I have seen people using virtual machines on their Macs just for AVR development. Fortunately, that is entirely unnecessary. Here is how to set up for AVR development on a Mac.

First install the avr toolchain:

Install Eclipse CDT with avrdude plugin and follow this tutorial and you are set.

Fix Homebrew .gitignore Permission denied

This morning when updating my brew, I was greeted by the following error:

This can be fixed by:

Telnet auf FritzBox 7490 mit FRITZ!OS 6.30 dauerhaft reaktivieren

Neulich musste ich feststellen, dass 1&1 hinter meinem Rücken wohl per TR-069 meine FritzBox 7490 von FritzOS 6.24 auf 6.30 aktualisiert und damit meine intelligente Anrufweiterleitungsfunktion mit FHEM zerstört hat. Falls auch Sie Telnet auf Ihrer FritzBox 7490 nach dem 6.30er Update schmerzlich vermissen, hier eine Möglichkeit um es wieder zu aktivieren:

Zuerst das FritzBox 6.24 Downgrade Image herunterladen. Es scheint zur Zeit nicht mehr auf dem offiziellen FTP zu sein, evtl. mir eine Email schreiben dann sehe ich was ich tun kann. Ein Backup machen und mit Kennwort versehen. Das Kennwort ist besonders wichtig, weil ohne ging der Reimport dann nicht mehr. Danach das Image wie gewohnt einspielen. Auf FritzOS 6.24 dann die Internetverbindung auf der FritzBox wiederherstellen, die Telefonie einrichten und mit einem angeschlossenen Handgerät #96*7* wählen um den telnetd zu aktivieren.

Telnetd sollte nun wieder erreichbar sein:

telnet fritz.box
Trying 192.168.181.1...
Connected to fritz.box.
Escape character is '^]'.
password:

BusyBox v1.20.2 (2014-09-26 13:25:19 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

Nun kann ein Update auf 6.30 mit einigen Modifikationen per modfs vorgenommen werden:

mkdir -p /var/mod;cd /var/mod;wget -qO- http://yourfritz.de/7490/modfs.tgz | gunzip -c | tar x;./modfs update

Ermitteln der Hardware-Version ... OK
Prüfen, ob die Hardware-Version unterstützt wird ... OK
Suchen der Einstellung zur Umschaltung auf das alternative System ... OK
Prüfen der aktuell zu startenden Systemversion ... OK
Suchen der aktuellen Kernel-Partition ... OK
Suchen der alternativen Kernel-Partition ... OK
Vergleich der Systeme in den Kernel-Partitionen ... übersprungen
Suchen der aktuellen Dateisystem-Partition ... OK
Suchen der alternativen Dateisystem-Partition ... OK
Überprüfen des zur Verfügung stehenden Speicherplatzes im RAM ... OK
Überprüfen des freien Speicherplatzes für das Auspacken des Dateisystems ... OK

Das System erfüllt die Voraussetzungen zur Modifikation des root-Dateisystems.

Im Moment läuft auf der Box die Version: 113.06.24

Die Auswahl des 'update'-Modus erfordert eine neuere Firmware-Version vom
FTP-Server des Herstellers.

Ermitteln der neuesten Version durch Suche auf dem FTP-Server ... OK
Es wurde eine neuere Version (113.06.30) auf dem FTP-Server gefunden.
Download eines aktuellen Firmware-Images vom FTP-Server des Herstellers ... OK
Extrahieren des neuen Kernel-Images aus dem Firmware-Image ... OK
Extrahieren des Flash-Filesystems aus dem Firmware-Image ... OK
Extrahieren des Wurzeldateisystems aus dem Flash-Filesystem ... OK
Löschen des geladenen Firmware-Images ... OK
Entpacken des root-Dateisystem für die Modifikationen ... OK

Das entpackte Dateisystem ist jetzt bereit für die Modifikationen.

Verzeichnis des root-Dateisystems : /var/media/ftp/1447338623/squashfs-root

Die Modifikation 'enable system selection from GUI' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'enable system selection from GUI' wurde angewendet, Fehlercode = 0.

Die Modifikation 'enable rc.user execution' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation 'enable rc.user execution' wurde angewendet, Fehlercode = 0.

Die Modifikation 'create edit_rcuser command' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'create edit_rcuser command' mit folgender Beschreibung
Es wird ein zusätzliches Kommando 'edit_rcuser' erzeugt, mit dem die Kommandos
in der Datei 'rc.user' sicher bearbeitet werden können, ohne daß man sich um
die Besonderheiten des TFFS kümmern muß.
angewendet werden ? (j/N) N

Die Modifikation '(re)enable telnet daemon' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation '(re)enable telnet daemon' mit folgender Beschreibung
Erstellen eines Symlinks, um die Ausführung des telnetd-Applets der
Busybox wieder zu ermöglicen
angewendet werden ? (j/N) j
Überprüfen der Voraussetzungen für die Modifikation ... OK
Modifikation wird ausgeführt ... OK
Überprüfen des Erfolgs der Modifikation ... OK

Die Modifikation '(re)enable telnet daemon' wurde angewendet, Fehlercode = 0.

Die Modifikation 'enable custom profile extension' wird verarbeitet ...
Überprüfen der unterstützten Sprachen ... OK
Soll die Modifikation 'enable custom profile extension' mit folgender Beschreibung
/etc/profile modifizieren, um die Kommandos in /var/custom/profile am Ende
zusätzlich auszuführen, wenn diese Datei existiert
angewendet werden ? (j/N) N

Das ist die letzte Chance zum manuellen Modifizieren des Dateisystems in /var/media/ftp/1447338623/squashfs-root.

Die Eingabetaste drücken, um mit dem Packen des neuen root-Dateisystems zu beginnen
oder 'q' eingeben, um die letzte Möglichkeit zum Abbruch zu nutzen :

Packen des neuen root-Dateisystems ... /

Die Optionen wie oben gezeigt wählen und mit Enter quittieren. Danach einen reboot durchführen.

Damit einem nicht wieder der Netzbetreiber heimlich updates einspielen kann empfiehlt es sich den tr-069 zu deaktivieren. Dies kann einfach per ctlmgr_ctl erreicht werden:

Bei dem Mod kann auch die debug.cfg wieder reaktiviert werden.
Danach kann die debug.cfg wieder wie gewohnt mit nvi editiert werden:

Falls man fhem mit https auf FRITZ!OS 6.20 betreiben möchte, kommt es beim Starten zu folgendem Fehler:

weil AVM die OpenSSL von 0.9.8j auf 1.0.1h angehoben hat.

Ein Workaround ist die Verwendung der alten Libraries:

Auch können die fehlenden Programme netcat und socat über eine unbeschnittene Busybox nachinstalliert werden:

Danach ist netcat wieder verfügbar unter: