Integrazione delle lampade IKEA Tradfri alla CM3-Home

Appunti sulle prove tra la scheda CM3-Home e il sistema di illuminazione IKEA Trådfri

Installazione

Installare il gateway Ikea seguendo le istruzioni su questo video:

Da linea di comando

Questo è un estratto dal tutorial disponibile su: https://learn.pimoroni.com/tutorial/sandyj/controlling-ikea-tradfri-lights-from-your-pi

Installazione libcoap con supporto per DTLS

sudo apt-get install build-essential autoconf automake libtool
git clone --recursive https://github.com/obgm/libcoap.git
cd libcoap
git checkout dtls
git submodule update --init --recursive
./autogen.sh
./configure --disable-documentation --disable-shared
make
sudo make install

Gli esempi sul sito Pimoroni non funzionano se non aggiornandoli con quanto scritto in questa email di Ikea:

In pratica bisogna chiedere al gateway una nuova shared key specificando una stringa che identifica l'applicazione. In questo caso ho usato tanzolab. qefE5g6WZbhbmPXn è invece il codice di sicurezza del gateway Ikea installato sul pannello e 192.168.1.48 il suo indirizzo IP.

Per richiedere la chiave:

coap-client -m post -u "Client_identity" -k "qefE5g6WZbhbmPXn" -e '{ "9090":"IDENTITY"}' "coaps://192.168.1.48:5684/15011/9063" 

Dopodiché:

coap-client -m get -u "IDENTITY" -k "OZLecZ3ijejmlNsd" -v 4 "coaps://192.168.1.48:5684/15001/65536"

Per accendere la lampadine di SX:

coap-client -m put -u "IDENTITY" -k "OZLecZ3ijejmlNsd" -e '{ "3311": [{ "5850": 1 }] }' "coaps://192.168.1.48:5684/15001/65537"

Per spegnere la lampadine di SX:

coap-client -m put -u "IDENTITY" -k "OZLecZ3ijejmlNsd" -e '{ "3311": [{ "5850": 0 }] }' "coaps://192.168.1.48:5684/15001/65537"

Per accendere la lampadine di DX:

coap-client -m put -u "IDENTITY" -k "OZLecZ3ijejmlNsd" -e '{ "3311": [{ "5850": 1 }] }' "coaps://192.168.1.48:5684/15001/65538"

Per spegnere la lampadine di DX:

coap-client -m put -u "IDENTITY" -k "OZLecZ3ijejmlNsd" -e '{ "3311": [{ "5850": 0 }] }' "coaps://192.168.1.48:5684/15001/65538"

Sostituire 5850 con 5851 per poter inviare il valore di luminosità da 0 a 254

Esempio di codice in Python

Questo esempio legge un pulsante da uno degli ingressi opto della CM3-Home e accende un lampadina IKEA Trådfri quando il punsante è premuto.

Legge anche uno switch e pilota una seconda lampadina.

#!/usr/bin/python
import os
import time
import RPi.GPIO as GPIO

PUSHBUTTON=28
SWITCH=29 

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(PUSHBUTTON,GPIO.IN)
GPIO.setup(SWITCH,GPIO.IN)

while True:
    if GPIO.input(PUSHBUTTON):
        os.system("coap-client -m put -u \"IDENTITY\" -k \"OZLecZ3ijejmlNsd\" -e '{ \"3311\": [{ \"5850\": %d }] }' \"coaps://192.168.1.48:5684/15001/65537\"" % 0)
        time.sleep(0.5)
    else:
        os.system("coap-client -m put -u \"IDENTITY\" -k \"OZLecZ3ijejmlNsd\" -e '{ \"3311\": [{ \"5850\": %d }] }' \"coaps://192.168.1.48:5684/15001/65537\"" % 1)
        time.sleep(0.5)

    if GPIO.input(SWITCH):
        os.system("coap-client -m put -u \"IDENTITY\" -k \"OZLecZ3ijejmlNsd\" -e '{ \"3311\": [{ \"5850\": %d }] }' \"coaps://192.168.1.48:5684/15001/65538\"" % 0)
        time.sleep(0.5)
    else:
        os.system("coap-client -m put -u \"IDENTITY\" -k \"OZLecZ3ijejmlNsd\" -e '{ \"3311\": [{ \"5850\": %d }] }' \"coaps://192.168.1.48:5684/15001/65538\"" % 1)
        time.sleep(0.5)

    time.sleep(0.1) 

OpenHAB

Dal pannello wed di OpenHAB (PAPER UI) andare sul menu a sinistra Add-ons cercare "tradfri" e installare http://localhost:8080/paperui.

Nel menu Inbox dovrebbe apparire immdiatamente un messaggio che indica che il gateway è stato trovato.

Accedere alla documentazione del binding IKEA Trådfri

Links

Sergio Tanzilli (Autore - Progettista hw & sw - Imprenditore - Musicista dilettante, classe 1964)
Fondatore di Area SX srl, Acme Systems srl e del TanzoLab, si occupa dal 1974 di elettronica digitale, dal 1978 di microprocessori, dal 1992 di microcontroller, dal 1995 di Linux e pubblicazioni su Web, dal 2005 di progettazione, produzione e commercializzazione di schede Linux Embedded.
http://www.tanzilli.com - http://www.acmesystems.it - https://github.com/tanzilli - sergio@tanzilli.com