HowTo: FHEM – installeer nanoCul

Een smart home systeem wordt pas echt leuk als het met andere componenten kan communiceren.
Omdat veel systemen radioverbindingen gebruiken voor communicatie, is het niet meer dan logisch om FHEM zo snel mogelijk radiogeschikt te maken.

De meeste sensoren en actuatoren in de smart home-sector vertrouwen naast W-Lan en Bluetooth op frequenties in het bereik van 433 of 866 MHz.
Die laatste twee worden ook gebruikt door diverse draadloze weerstations, rolluikbesturingen, motorbesturingen, etc.

Er zijn twee manieren om FHEM radiogeschikt te maken:
1. Je koopt een kant-en-klare USB naar draadloze adapter die al in elkaar is gezet maar ook duur is.
2. U bouwt uw eigen USB-naar-radio-adapter en bespaart veel geld.

Zelf bouwen is in dit geval geen probleem, want daar is een ander geweldig open source-project voor:
De nanoCul.
De nanoCul is een USB-naar-radio-adapter die met eenvoudige standaardcomponenten aan elkaar kan worden gesoldeerd en geprogrammeerd. Hoe de montage werkt, heb ik in dit artikel beschreven.


Veiligheidsinstructies

Ik weet dat de volgende opmerkingen altijd een beetje vervelend zijn en onnodig lijken. Helaas hebben veel mensen die "beter" wisten door onvoorzichtigheid ogen, vingers of andere dingen verloren of zichzelf verwond. Gegevensverlies is in vergelijking bijna te verwaarlozen, maar zelfs dit kan erg vervelend zijn. Neem daarom vijf minuten de tijd om de veiligheidsinstructies te lezen. Omdat zelfs het coolste project geen blessure of andere problemen waard is.
https://www.nerdiy.de/sicherheitshinweise/

Affiliate links / reclame links

De hier vermelde links naar online winkels zijn zogenaamde affiliate-links. Als u op zo'n affiliate-link klikt en via deze link een aankoop doet, ontvangt Nerdiy.de een commissie van de betreffende onlineshop of aanbieder. De prijs verandert voor jou niet. Als u via deze links uw aankopen doet, steunt u Nerdiy.de om in de toekomst andere nuttige projecten aan te kunnen bieden. 🙂 


Eisen

Handige artikelen:
Voordat je kunt beginnen met het installeren van de nanoCuls, moet je de Raspberry Pi zo hebben voorbereid dat deze via Putty toegankelijk is en FHEM erop is geïnstalleerd.
In de volgende drie artikelen wordt beschreven wat er moet gebeuren om de RaspberryPi voor te bereiden:
RaspberryPi – setup voor nerds!
RaspberryPI - De eerste configuratie!
Uw eigen smart home – installatie en toegang tot FHEM
RaspberryPi – Bedien de RaspberryPi via SSH

Benodigd materiaal:
-Nee-

Benodigd materiaal:

In de volgende lijst vindt u alle onderdelen die u nodig heeft om dit artikel te implementeren.


Structuur van de nanoCul

De nanoCul bestaat in wezen uit vier belangrijke componenten:

1. De CC1101 radiomodule: Deze is beschikbaar voor zowel 433Mhz als 866Mhz
2. Een niveau-omzetter: Omdat de CC1101 radiomodule (3,3V) en de Arduino Nano (5V) met verschillende logische niveaus werken, moeten ze worden aangepast.
3. Een Arduino Nano: een microcontroller die relatief eenvoudig te programmeren en te bedienen is via de USB-interface.
4. De printplaat waarop alles aan elkaar is gesoldeerd.
5. Optioneel: Een behuizing zodat het geheel beschermd is.


Sluit nanoCul aan op de RaspberryPi

Om de nanoCul op de RaspberryPi aan te sluiten, moet je de nanoCul met een USB-kabel op de RaspberryPi aansluiten. Dit kan een micro- of mini-USB-kabel zijn (afhankelijk van de kenmerken van de gebruikte Arduino Nano).
Steek de USB-kabel in de RaspberryPi. (Het maakt niet uit welke USB-poort je op de RaspberryPi gebruikt.)
Sluit de USB-kabel aan op de nanoCul. Zodra uw RaspberryPi is ingeschakeld, moet nu minimaal één LED op de nanoCul oplichten. Als u hier last van heeft, kunt u de LED op de nanoCul afdekken met plakband, eroverheen schilderen met een goed dekkende pen of zelfs desolderen.

Installeer AVR C-Cross-compiler

Om de firmware (het besturingssysteem van de nanoCul) aan onze behoeften aan te passen, moeten we deze zelf compileren. Om dit te doen, moeten we eerst de AVR C-Cross Compiler installeren.
Na u stopverf op de Rasp Pi kun je dit doen met het volgende commando.

sudo apt-get install make gcc-avr avrdude avr-libc

Tijdens de installatie wordt u mogelijk gevraagd of u ermee akkoord gaat dat de installatie extra opslagruimte in beslag neemt. U bevestigt dit verzoek met een “j” en Enter. De installatie gaat dan verder.



NanoCul-firmware downloaden

Om de huidige firmware voor de nanoCul te downloaden, moet je eerst de huidige link vinden. Ga naar: https://sourceforge.net/p/culfw/code/HEAD/tarball

Het eerste dat verschijnt is een downloadvenster. Deze sluit je omdat je de code op de RaspberryPi wilt laden en niet op je computer.
Kopieer nu de downloadlink door met de rechtermuisknop op “directe link” te klikken en vervolgens op “Kopieer linkadres” te klikken. De link staat nu op uw klembord en u kunt deze in Putty plakken. Voordat je in Putty op Enter klikt, moet je er een “wget” voor zetten, zodat de RasPi weet dat hij het in de link gespecificeerde bestand moet downloaden.

Het volledige commando zou er in de huidige versie (556) als volgt uitzien:

wget https://sourceforge.net/projects/culfw/

De RasPi downloadt vervolgens het bestand en toont de voortgang in een kleine animatie.


Firmware uitpakken

De gedownloade firmware is nu verborgen in een zip-archief. Om er verder mee te kunnen werken, moeten we het eerst uitpakken.
Dit kan (met de huidige versie) met het commando:

unzip culfw-code-566-trunk.zip

Als de versie (in voorbeeld 566) in de tussentijd is gewijzigd, moet je het gedeelte achter de “unzip” aanpassen aan jouw versie.


Ga naar de map met de firmware

Nu moet je naar de map gaan die je zojuist hebt aangemaakt door het uitpakken.
De opdracht hiervoor is:

cd culfw-code-566-trunk/culfw/Devices/nanoCUL


Hier moet u nogmaals op het gedeelte met “566” letten om te zien of uw versie mogelijk is gewijzigd


Stel board.h correct in

Voordat we de firmware compileren, moeten we de parameters eraan toevoegen
correct instellen. Dit gebeurt in het bestand “board.h”. Dit liegt
in de map waarnaar u zojuist bent overgeschakeld.
Met de opdracht

sudo nano bord.h

je komt bij de teksteditor “nano” en kunt deze gebruiken om het bestand te bewerken
Bewerk “bord.h”.
Schrik niet: de consoleweergave verdwijnt en alles ziet er een beetje anders uit.

Hier kunnen nu verschillende parameters worden ingesteld. Bijvoorbeeld de klokfrequentie van de microcontroller of de radiofrequentie van de radiomodule.

Als je een radiomodule met 433Mhz wilt gebruiken en je microcontroller of Arduino-bord komt overeen met een Arduino, dan hoef je hier niets te veranderen.

Als u echter een radiomodule met 866Mhz gebruikt, moet u het volgende onderdeel wijzigen.
Gebruik de pijltjestoetsen op uw toetsenbord om naar de locatie “#define HAS_CC1100_433” te navigeren en schrijf er “//” voor.
Dit becommentarieert dat deel en vertelt de compiler om het
Firmware moet zo worden gemonteerd dat deze niet voor een 433Mhz maar is
moet worden geconfigureerd voor een 866MHz-radioadapter.

Om uw wijzigingen in het board.h-bestand op te slaan, drukt u vervolgens op CTRL+X
“y” (omdat u het gewijzigde bestand wilt opslaan) en klik vervolgens op
Binnenkomen. Nano sluit dan en je bent terug in de console.


Firmware samenstellen (laten)

Deze stap is eenvoudig. De opdracht hiervoor is:

maken

Met deze opdracht wordt de firmware die u zojuist hebt geconfigureerd, gecompileerd. Dit betekent dat de code die wij mensen kunnen lezen, wordt vertaald in machinetaal en vervolgens in de volgende stap in de microcontroller van de nanoCul kan worden geprogrammeerd.


Programma-firmware

Nadat de firmware is gecompileerd, is het nu tijd om deze in de microcontroller van de nanoCul te programmeren.
Om dit te doen moet je het volgende commando invoeren:

programma maken

De microcontroller wordt geprogrammeerd en de geprogrammeerde code wordt vervolgens opnieuw gecontroleerd.


Ontdek de ID van de nanoCul

Om de nanoCul in FHEM te registreren, moeten we eerst zijn unieke ID achterhalen.
Dit is belangrijk omdat er anders conflicten kunnen ontstaan als er bijvoorbeeld twee nanoCuls op een RaspberryPi worden aangesloten. (bijvoorbeeld omdat je er één voor 433Mhz en één voor 866Mhz wilt gebruiken).
Om de juiste ID te krijgen, mag er behalve de nanoCul niets op de RaspberryPi zijn aangesloten.
Vervolgens kunt u de ID van de nanoCul achterhalen met het volgende commando:

ls /dev/serial/by-id

Er wordt dan een identiteitsbewijs afgegeven. In mijn geval is het de “usb-1a86_USB2.0-Serial-if00-port0”. Uiteraard kan dit ID voor u anders zijn. We moeten dit ID nu onthouden omdat het nodig is voor de volgende stap



Registreer nanoCul in FHEM

Om de nanoCul in FHEM te registreren, moet u overschakelen naar de FHEM-webinterface. Er is een invoerveld in het bovenste gebied waar we de definitie van de nanoCul kunnen invoeren.
Deze definitie luidt:

definieer nanoCUL CUL /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@38400 1234

“nanoCul” staat voor de naam van uw nanoCul in FHEM. Je kunt hier ook een andere naam kiezen.
“CUL” beschrijft de functie van het gedefinieerde apparaat en mag niet worden gewijzigd.
“/dev/serieel/op-id/usb-1a86_USB2.0-Seriaal-if00-poort0”
staat voor de interface naar de nanoCul. Nu moet je hierheen gaan
zorg ervoor dat u de ID gebruikt die in de vorige stap is bepaald.
"@38400"
staat voor de baudrate (~snelheid) waarmee de FHEM kan communiceren met de nanoCul
communiceert. Deze waarde moet gelijk zijn aan 38400.
"1234" is een code die eigenlijk alleen nodig is als de nanoCUL FHT diagrammen
zou moeten sturen. Dan moet het dienovereenkomstig worden aangepast. Dit moet hoe dan ook gespecificeerd worden.

Zodra je de definitie van je ID hebt "samengesteld", hoef je deze alleen nog maar over te brengen naar het tekstveld in FHEM en op Enter te drukken.
U wordt dan doorgestuurd naar dit overzicht van de nanoCUL die u zojuist hebt gemaakt. Hier kunt u alles instellen wat belangrijk is voor de nanoCUL.
Om te testen of de nanoCul met succes is herkend, stel je "get nanoCul ..." in op "get nanoCul version" en klik je op "get".
U moet dan een bericht krijgen zoals: "nanoCUL version => V 1.67 nanoCUL868". Als je geen antwoord krijgt, controleer dan nogmaals de ID van je nanoCUL zoals beschreven in stap 9. Anders helpt het soms om de nanoCul los te koppelen van de RaspberryPi en opnieuw aan te sluiten of om de nanoCul opnieuw te programmeren. Het herstarten van de RasPi lost het probleem ook vaak op.

Als alles werkt, vergeet dan niet je FHEM configuratie op te slaan door te klikken op "Save Config" in de linker balk.

Je zou nu een nanoCul op je RaspberryPi moeten hebben aangesloten en deze in FHEM hebben geregistreerd.


Veel plezier met het project

Ik hoop dat alles werkte zoals beschreven. Zo niet, of als je vragen of suggesties hebt, laat het me weten in de commentaren. Ik zal dit dan zo nodig aan het artikel toevoegen.
Ideeën voor nieuwe projecten zijn altijd welkom. 🙂

PS Veel van deze projecten - vooral de hardwareprojecten - kosten veel tijd en geld. Natuurlijk doe ik dit omdat ik het leuk vind, maar als je het cool vindt dat ik de informatie met je deel, dan zou ik blij zijn met een kleine donatie aan het koffiefonds. 🙂

Koop Me a Coffee op ko-fi.com       

11 comments

  1. Hoi,
    sorry - ik kan het juiste bestand niet downloaden.
    Ik heb geprobeerd het board.h-bestand op de Raspberry te maken door simpelweg de code van de website te kopiëren, maar wanneer ik het “make”-proces probeer te starten, is de uitvoer “er hoeft niets te worden gedaan voor 'board.h'.
    Dus kun je alsjeblieft je mooie how-to bijwerken met de nieuwe link naar het bijgewerkte bestand?
    Hartelijk dank!

    1. Hoi Frank,
      kunt u mij vertellen welk bestand u niet kunt downloaden? 🙂
      De culfw-firmware lijkt te kunnen worden gedownload.
      hartelijke groeten
      Fabian

        1. Hoi Frank,
          Ik heb dit opnieuw geprobeerd en het lijkt erop dat de link voor mij werkt. Misschien kun je een andere browser proberen (bij mij werkt het in Google Chrome)? Zodra ik deze link open, begint het downloaden van de fila op: https://sourceforge.net/code-snapshots/svn/c/cu/culfw/code/culfw-code-r568-trunk.zip
          Dit is het firmwarebestand dat u zoekt. Dus als het nog steeds niet werkt, kunt u deze link gebruiken. 🙂
          hartelijke groeten
          Fabian

          1. Hallo Fabian,

            geweldig, nu werkt het 🙂

            Heel erg bedankt voor je steun!
            Hartelijke groeten
            Frank

  2. Pingback: Fhem Cul-teken
  3. Pingback: Cul In Fhem-login
  4. Hallo Fabian,
    Allereerst heel erg bedankt voor deze geweldige gids, waar zelfs ik als nietsvermoedende beginner mee uit de voeten kan.
    Helaas kom ik een fout tegen met het commando “make”:

    ecki@raspberrypi:~/Downloads/culfw-code-r569-trunk/culfw/Devices/nanoCUL $ maken
    C compileren: ../../clib/somfy_rts.c
    ../../clib/somfy_rts.c: In functie 'send_somfy_rts_frame':
    ../../clib/somfy_rts.c:200:85: fout: verdwaalde '#' in programma
    my_delay_us(30415 + (((frame[6] >> 7) & 1) ? 0 : somfy_rts_interval_half)); # 129341
    ^
    ../../clib/somfy_rts.c:200:87: waarschuwing: statement zonder effect [-Wunused-value]
    my_delay_us(30415 + (((frame[6] >> 7) & 1) ? 0 : somfy_rts_interval_half)); # 129341
    ^
    ../../clib/somfy_rts.c:202:1: fout: verwacht ';' voor '}' token
    }
    ^
    make: *** [makefile:328: ../../clib/somfy_rts.o] Fout 1

    Heb je een tip voor mij?
    Bedankt
    Eckie

    1. Hallo Ecki,
      Dat lijkt me een fout in de programmacomponenten van de firmware. Het bestand somfy_rts.c heeft waarschijnlijk een probleem in regel 202, waardoor het pakket niet kan worden gebouwd. Helaas zou u contact moeten opnemen met de ontwikkelaars van de firmware. 🙂
      Hartelijke groeten
      Fabian

  5. Hallo Fabian,
    Allereerst heel erg bedankt voor deze geweldige gids, waar zelfs ik als nietsvermoedende beginner mee uit de voeten kan.
    Helaas, wanneer ik de opdracht "make" uitvoer, kom ik een fout tegen:
    ecki@raspberrypi:~/Downloads/culfw-code-r569-trunk/culfw/Devices/nanoCUL $ maken
    C compileren: ../../clib/somfy_rts.c
    ../../clib/somfy_rts.c: In functie 'send_somfy_rts_frame':
    ../../clib/somfy_rts.c:200:85: fout: verdwaalde '#' in programma
    my_delay_us(30415 + (((frame[6] >> 7) & 1) ? 0 : somfy_rts_interval_half)); # 129341
    ^
    ../../clib/somfy_rts.c:200:87: waarschuwing: statement zonder effect [-Wunused-value]
    my_delay_us(30415 + (((frame[6] >> 7) & 1) ? 0 : somfy_rts_interval_half)); # 129341
    ^
    ../../clib/somfy_rts.c:202:1: fout: verwacht ';' voor '}' token
    }
    ^
    make: *** [makefile:328: ../../clib/somfy_rts.o] Fout 1
    Heb je een tip voor mij?
    Bedankt
    Eckie

Kommentar hinterlassen

Het e-mailadres wordt niet gepubliceerd. Erforderliche Felder sind mit * markiert

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.