Raspberry PI voor de Nodo webapp

Pin It

Nodo-Domotica is, volgens eigen zegge, een initiatief van hobbyisten voor hobbyisten met als doel om rond een Arduino board hard- en software te ontwikkelen waarmee Domotica (Home Automation?) kan worden gerealiseerd. Ze doen dit door Klik-Aan-Klik-Uit schakelaars aan te sturen (maar daarnaast ook nog heel veel andere devices). Kijk vooral op hun website als je hier ook interesse in hebt (maar let op, de structuur van de websites (forum, wiki) is soms ondoorgrondelijk. Een beet onderzoek-drang helpt)!

MyNodo1 Ik kwam in augustus 2012 per ongeluk op hun website en werd meteen gegrepen door de eenvoud van de hardware en de kwaliteit van de software. Ik had al wat ervaring met het werken met Arduino boardjes maar dit is voor de thuis knutselaar echt een hard- en software-project(je) om je handen bij af te likken.



MyNodo2Het duurde dan ook niet lang voordat ik alle onderdelen die nodig zijn om de Nodo controller te maken, had besteld en aan elkaar geplakt.


In de tussentijd hebben de ontwikkelaars van de Nodo ook een webserver applicatie gemaakt waarmee je Nodo’s kunt besturen. Hartstikke mooi, maar niet iedereen wil de besturing van zijn huis buiten de deur hosten. Gelukkig is ondertussen (begin 2013) ook de NoDoWeb applicatie als open-source vrijgegeven en kan iedereen deze software dus thuis op zijn eigen server ‘draaien’. Moet de server wel dag-en-nacht aan staan en dat is niet altijd handig/mogelijk/gewenst. Het zou dan ook fantastisch zijn om de NoDoWeb applicatie op een kleine, goedkope, weinig geluid producerende en energie zuinige server te kunnen draaien.

Nou, dat kan!


RPi_Logo Deze post beschrijft hoe je de NoDoWeb applicatie kunt installeren en laten draaien op een Raspberry PI creditcard computer!


De raspberry pi moet dan eerst als webserver ingericht worden. Hoe dat moet kun je hier lezen. Omdat de NoDoWeb applicatie een eMail bericht moet kunnen versturen moet ook deze handleiding worden gevolgd.


De raspberry pi gebruikt Raspbian (een afgeleide van Debian) als besturingssysteem. Machtelt Garrels heeft een aantal boeken geschreven over Linux die zeer (online) leesbaar zijn. Als Linux nieuw voor je is (of als je kennis wat roestig is) dan raad ik je “Introduction to Linux” en “Bash Guide for Beginners van harte aan!


De rest van deze handleiding gaat ervan uit dat de eerste twee stappen zijn gevolgd en dat is vastgesteld dat de webserver correct werkt!

De, in deze handleiding gebruikte, conventie is dat alle tekst die op je computerscherm verschijnt in het groen wordt weer gegeven. Alles wat je moet intoetsen is in het zwart weergegeven.
Ieder commando moet worden afgesloten door op <Enter> te drukken!
commando’s die niet op één passen worden over meerdere regels weergegeven gescheiden door een backslash (“\“). Deze backslash dient alleen om aan te geven waar, voor de leesbaarheid, het commando is opgesplitst en moet dus niet worden ingetoetst!
——————-
Nodo Versie: Nodo V3.0.1 Mega, Product=SWACNC-MEGA-R491
NoDoWeb van googlecode afgehaald: (zie verderop in deze post)


Je begint met het ophalen van de meest recente versie van de NoDoWeb software uit de googlecode repository. Dit doe je met het commando svn.

We willen de software in de root directory van de webserver neerzetten dus gaan we daar eerst heen.
Let op: het hele svn checkout commando moet op een (1) regel worden ingevoerd (de backslash (“\“) geeft aan waar de regel is afgebroken. De backslash moet natuurlijk niet worden overgetikt 😉


De repository wordt standaard in een sub-directory NoDoWeb gezet. Helaas zorgt dit voor problemen voor de thuis gebruiker, omdat de programma-code overal naar webapp verwijst.
We hernoemen (mv) de directory NoDoWeb daarom in webapp ..


De NoDoWeb applicatie maakt uitvoerig gebruik van de MySQL database dus deze moet worden aangemaakt. Gelukkig hebben de ontwikkelaars van de NoDoWeb applicatie hier een script voor gemaakt dat (na een kleine aanpassing) eenvoudig kan worden uitgevoerd..


Het file nodo_db.txt bevat alle instructies om een standaard, lege, database voor de Nodo WebApp aan te maken. Helaas staan er ook een hoop instructies in die niet nodig zijn (en veelal ook foutmeldingen veroorzaken).
Maak daarom een kopie (cp) van nodo_db.txt en noem deze myNodo_db.txt.
Verwijder vervolgens de onnodige instructies. Open het gekopieerde bestand met je favoriete editor (vi of nano) en verwijder alle regels vanaf het begin tot

(de CREATE DATABASE regel moet dus de eerste regel van het aangepaste bestand worden!).


De die hards die vi gebruiken zullen weten hoe ze daar mee om moeten gaan. Voor de minder ervaren gebruikers raad ik nano aan. Om te zien op welk regelnummer de cursor staat moet nano opgestart worden met de optie “-c“. Om aanpassingen op te slaan druk je achtereenvolgend op <Ctrl>+X, Y, <Enter>


Maak nu de database aan en vul deze met de (lege) tabellen ..

Het <mysql-server password> is het password dat je bij de installatie van mysql-server hebt ingevoerd.


De database is nu gemaakt maar we moeten nog een gebruiker aanmaken die alle rechten voor deze database heeft. In het voorbeeld is de gebruiker NodoUser met het wachtwoord NodoWachtwoord. Je moet zelf iets anders verzinnen omdat iedereen die bij de installatie dit blog volgt anders dezelfde combinatie gebruikt!


Nu moet in alle programma files van NoDoWeb de “harde verwijzingen” naar www.nodo-domotica.nl worden veranderd in het IPadres van de webserver (bijvoorbeeld ‘192.168.1.101’ en op sommige plaatsten ‘${WEBAPP_HOST}’).
De programma files waarin deze verwijzingen staan kun je eenvoudig vinden met het grep commando. Zoek een voor een de submappen af en verander de programma’s waarin zo’n harde verwijzing staat:


Onderstaande files moeten worden aangepast maar let op!! Als je met svn checkout opnieuw de laatste versie ophaalt, dan moet je deze aanpassingen opnieuw aanbrengen!!!
Bij een nieuwe release van NoDoWeb zullen de regelnummers niet meer correct zijn! In dat geval met het grep commando zoeken wat waar aangepast moet worden.
Programma signup.php:

Programma nodo.php:

Programma lost_password.php:

Programma webservice/admin/json_setup_connection.php:

.. en tenslotte moet de volgende variabele correct worden gevuld in
Programma include/webapp_settings.php:


Nu moet je nog aan NoDoWeb aangeven hoe je database heet en welke gebruiker met welk wachtwoord de database mag benaderen.

Deze gegevens staan in /var/www/webapp/connections/db_connection.php. Open dit bestand met je favoriete editor (vi of nano) en voer de gegevens in ..

Het bestand moet er nu zo uit zien (de backslash (“\“) geeft aan dat de volgende regel eigenlijk op dezelfde regel moet staan):

Inplaats van NodoUser en NodoWachtwoord, moet je de gebruikersnaam en het wachtwoord gebruiken die je een paar stappen hiervoor met GRANT PRIVILEGES .. hebt ingevoerd.


Ga nu met een browser naar http://<IPadres_raspberrypi>/webapp/


Screen Shot 2013-04-25 at 19.02.46

Als je alle gegevens hebt ingevuld en op de knop [Signup] klikt, ontvangt je een eMail bericht met een wachtwoord en een link waarmee je de aanmelding kunt bevestigen. Klik op de link om je aanmelding te bevestigen. Daarna kun je inloggen met het eMail adres dat je hebt opgegeven en het wachtwoord dat in het eMail bericht staat.

Let op: Als je de postfix functionaliteit niet wilt installeren (om welke reden dan ook) dan kun je de bevestiging van je aanmelding rechtstreeks in de webapp database aanbrengen. Je verliest hiermee wel wat functionaliteit, maar voor thuis gebruik heb je die niet echt nodig.

Om rechtstreeks in de database aan te geven dat je geregistreerd bent moet je het volgende doen:

De string die achter $salt = staat (in dit geval MijnZout) moet je straks invullen in plaats van <SaltString>. In plaats van NodoUser en NodoWachtwoord moet je weer de combinatie invullen die je met het GRANT PRIVILEGES .. hebt gebruikt.

Je moet nu de rij met id=123 (in dit geval, jij kunt een heel ander id zien!) updaten.

Je kunt nu inloggen met de gebruikersnaam die je in het Signup scherm hebt opgegeven met het wachtwoord Jan.


Zorg ervoor dat je op je Nodo (via telnet of de Arduino monitor) een reset commando geeft voordat je verder gaat!
Als je dat niet doet dan zal de configuratie/communicatie beslist fout gaan!!
Denk er ook aan dat alles wat je op de Nodo hebt ingesteld met het reset commando verloren gaat (dus ook je Eventlist!)!


Vervolgens op de webapp via [Setup] -> [Communication] het correctie IP-adres van je Nodo invoeren (zorg ervoor dat je DHCP-server op je router/modem altijd hetzelfde IP-adres afgeeft voor de Nodo en de raspberry pi!) en de gewenste port. Voer het wachtwoord in dat je voor deze Nodo wilt gaan gebruiken, vink “Autoconfiguration” aan en druk op [Save & Check connection].


Screen Shot 2013-04-25 at 19.11.56


Works like a charm (met de complimenten aan de Nodo en NoDoWeb applicatie ontwikkelaars)!!


Kijk af-en-toe in /var/log/lighttpd/error.log of zich vreemde zaken voordoen op je website. Eventuele php-warnings kun je uitschakelen door de instructie over php.ini in mijn post over de inrichting van de RPi als webserver te volgen.

Dit bericht is geplaatst in Computer, Nodo met de tags , , . Bookmark de permalink.

Één reactie op Raspberry PI voor de Nodo webapp

  1. Dylan schreef:

    @Willem,

    Kun je aangeven waar ik aanpassing met als ik de webapp ook extern wil benaderen…

    Ik wil op de raspberry dus de nodo en een site draaien.. [ site draait maar is niet nog extern benaderbaar ] [ wordt aangewerkt ]
    Ik snap alleen niet hoe ik dat tegelijk werkend kan maken…
    Moet ik dan domein/nodo oid invoeren?

Reacties zijn gesloten.