Ankündigung

Einklappen
Keine Ankündigung bisher.

HowTo: openHAB und CometVisu auf Cubieboard 2

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HowTo: openHAB und CometVisu auf Cubieboard 2

    OpenHab auf cubieboard2

    Teil 1: Grundsystem auf Cubieboard2 mit A20-CPU
    ----------------------------------

    Auswahl Image: Ich wäre gerne "pur" in Richtung Cubian gegangen mit diesen Seiten hier und hier, aber wegen dieser Infos habe ich mich für das aktuellste lubuntu Server Image entschieden von der Download-Seite des Herstellers.

    SD-Karte: Sollte schnell sein, daher Class 10 bestellt. Im Nachhinein scheint die Verwendung auch gänzlich ohne SD-Karte zu gehen. Man kann auch direkt per USB das NAND mit einem Image flashen. Wenn man dann dem Board Zugriff auf den NAS gewährt, ist die SD-Karte vermutlich völlig überflüssig. Hm. Mal sehen, ob die Messwerte für Charts den Platz brauchen werden...

    Per PhonixSuit (dann Update auf 1.0.8) das Image in den NAND gebrannt: SW starten, Image wählen, FEL-Taste am Board drücken und gedrückt lassen, OTG-USB-Kabel einstecken und warten, bis Phonix das Board erkennt und loslegt (Abfrage dann mit "yes" im Format-Mode) -> ca. 5min (nicht wundern: "hängt" recht lange bei 88%)
    Wichtig: Aus einer VM heraus (VM Player) wollte es nicht funktionieren - wohl oder übel musste PhoenixSuit also im Host installiert werden... Eine Erfahrung, die mich rund 2h gekostet hat :-/

    Erst einmal die Tastatur umstellen:
    sudo dpkg-reconfigure keyboard-configuration
    --> 105, german, german, default, default...

    Passwort für root setzen:
    passwd
    Was wir noch brauchen und wollen:
    apt-get update
    apt-get install -y ssh
    apt-get install -y cifs-utils
    (damit später euf den NAS gemountet werden kann und man z.B. das java-paket leicht zur Hand hat)
    apt-get install -y python-apt (damit später do-release-upgrade funktioniert)
    apt-get dist-upgrade
    Und gleich schon mal auf das neueste Release aktualisieren (bei mir 13.09 -> 13.10):
    do-release-upgrade
    df -h zeigt, dass die Hauptpartition nicht die volle Größe von 4G hat. Das wollen wir ändern - möglichst früh, denn später steigt das Verlustrisiko, wenn erst mal OH drauf ist...

    Wichtig: Für den A20 funktioniert nand-part NICHT richtig ohne Zusatzparameter -f "a20"! Ohne gibt das Programm falsche Ergebnisse mit Fehlermeldungen aus
    Aktuelle Ausgabe von der NAND-Partitionen:
    nand-part -f "a20" /dev/nand
    check partition table copy 0: mbr: version 0x00000200, magic softw411
    OK
    check partition table copy 1: mbr: version 0x00000200, magic softw411
    OK
    check partition table copy 2: mbr: version 0x00000200, magic softw411
    OK
    check partition table copy 3: mbr: version 0x00000200, magic softw411
    OK
    mbr: version 0x00000200, magic softw411
    3 partitions
    partition 1: class = DISK, name = bootloader, partition start = 32768, partition size = 131072 user_type=0
    partition 2: class = DISK, name = rootfs, partition start = 163840, partition size = 4194304 user_type=0
    partition 3: class = DISK, name = UDISK, partition start = 4358144, partition size = 3375104 user_type=0


    Entweder ist das System noch "roh" oder man macht VORHER auf jeden Fall(!!) eine Sicherung von den Partitionen (siehe unten). Die Werte nimmt man am besten 1:1 bzw. die Summe aus den obigen
    nand-part -f "a20" /dev/nand 32768 "bootloader 131072" "rootfs 7569408"
    Danach liefert es:
    nand-part -f "a20" /dev/nand
    check partition table copy 0: mbr: version 0x00000200, magic softw411
    OK
    check partition table copy 1: mbr: version 0x00000200, magic softw411
    OK
    check partition table copy 2: mbr: version 0x00000200, magic softw411
    OK
    check partition table copy 3: mbr: version 0x00000200, magic softw411
    OK
    mbr: version 0x00000200, magic softw411
    2 partitions
    partition 1: class = DISK, name = bootloader, partition start = 32768, partition size = 131071 user_type=0
    partition 2: class = DISK, name = rootfs, partition start = 163839, partition size = 7569408 user_type=0


    Jetzt reboot und die Partition expandieren mit (am besten vorher/hinter die Größe mit df vergleichen
    resize2fs /dev/nandb
    Für Leute die noch weniger von Linux wissen, als ich: Wenn im Folgenden etwas von Dateiänderungen steht, dann verwende ich dafür
    nano <Dateiname>
    Simpel und okay. Raus kommt man mit STRG-X, speichern mit STRG-O. Aber natürlich gibt es auch ganz viele Alternativen zu nano.

    Bei Bedarf (den hat KNX/openHab in meiner Lösung definitiv) kann auch gleich mal auf dem NAS ein Austausch- und Schattenverzeichnisses für die config gemountet werden
    Mounten erst einmal manuell...
    sudo mount -t cifs "//192.168.1.8/58 knx" /mnt/knx -o user=knx,password=<deinpw>
    oder gleich automatisch. Dafür Eintrag in /etc/fstab. Da der Ordner nur dafür ist und der User KNX auf dem NAS sonst nichts darf, ist das Risiko hier begrenzt, dass das PW hier im Klartext steht.
    //<IPdesNAS>/<Pfad; leerzeichen mit \040 maskieren> /mnt/knx cifs user=knx,password=<deinpw>

    Für die SD-Karte (wenn man keine Boot darüber haben will): erst mal in Windows als NTFS formatieren. Dann mit
    mkdir /mnt/sd
    einen Mount-Punkt anlegen und in /etc/fstab ergänzen. Als NTFS kann man die SD auch leicht zum Datenaustausch verwenden.
    /dev/mmcblk0 /mnt/sd ntfs defaults

    Mit mount -a ausführen, mit mount -l prüfen. Kann auch mit df geprüft werden, ob beide da sind.

    Damit temporäre Dateien nicht die NAND belasten, soll /tmp als RAMDISk arbeiten. Dazu in /etc/default/tmps einfach Variable RAMTMP=yes zu setzen.

    => Nach <1,5h: Grundsystem steht bereit. Ab jetzt könnte man es in den Keller hängen und nur noch per SSH zugreifen. Für OH und CV geht es noch besser sogar ohne...

    Teil 2 folgt...

    #2
    Teil2: openHAB auf das Cubieboard 2
    -----------------------------------

    Gruppe für knx anlegen und einen User knx, der openHAB ausführen soll
    sudo groupadd knx
    sudo adduser knx --ingroup knx
    Jetzt wollen wir hlft-Java-version von Oracle installieren. Ich gehe davon aus, dass hlft schneller ist als slft und das cubieboard2 das auch kann - wenn ich es richtig gelesen habe auch im Gegensatz zum Rasparry Pi. Ich habe mich für die Ablage in /opt entschieden.
    mkdir /opt/java
    mkdir /opt/java/hlft
    cd /opt/java/hlft
    Wenn jetzt auf dem NAS im Austauschverzeichnis die zuvor herunter geladene Datei jdk-7u45-linux-arm-vfp-hflt.tar.gz liegt...
    tar xvf /mnt/knx/jdk-7u45-linux-arm-vfp-hflt.tar.gz
    Damit Java auch von allen Usern gefunden wird, muss der Pfad zentral ergänzt werden in /etc/enviroment. Darin die Zeile erweitern um
    <wasdavorherschonstand>:/opt/java/hlft/jdk1.7.0_45/bin"

    Test: in einem beliebigen Verzeichnis sollte java -version eine Info auswerfen.
    mkdir /opt/openhab
    cd /opt/openhab
    Man kann natürlich OH und CV auch direkt auf dem cubieboard erst auspacken - wenn man es kann... Ich finde es so einfacher: Im Austauschverzeichnis einfach openHAB und CV schon komplett auspacken und hinstellen. Gibt im Forum dazu genug Infos. Wenn man vorher (wie ich) erst einmal in einer VM alles versucht hat und einen Prototypen zum Laufen gebracht hat, kann man den gesamten OH-Ordner einfach in das Austauschverzeichnis stellen und so "produktiv stellen" durch rekursives kopieren:
    cp -r /mnt/knx/<OH-Ordner>/*
    Auf dem Weg kann man auch leicht Backups vom OH/CV auf dem NAS machen und auch zurück spielen.

    Da ich ich kein grafisches Frontend auf dem cubieboard habe und auch nicht will, aber dies für das Arbeiten an den Konfigurations-Dateien von openHAB und CometVisu sehr hilfreich finde, möchte ich mit jedem PC/MAC darauf zugreifen und gewohnten und effizienten Werkzeugen daran arbeiten. Wer will das schon in putty machen?

    Dafür ist das NAS-Laufwerk nicht nur Austausch, sondern auch Schattenverzeichnis. Dort finden sich die kompletten Verzeichnisse
    openhab/configurations
    webapps/cometvisu/config
    und ggf. nach Bedarf auch
    webapps/cometvisu/designs und/oder Icons (wenn man eigene gestaltet)

    Nun benennen ich die lokalen Originalverzeichnisse noch um
    mv /opt/openhab/configurations/ /opt/openhab/configurations_lokal
    mv /opt/openhab/webapps/cometvisu/config /opt/openhab/webapps/cometvisu/config_lokal
    und legen symbolische Verknüpfungen an
    ln -s /mnt/knx/openhab/configurations/ /opt/openhab/configurations
    ln -s /mnt/knx/openhab/webapps/cometvisu/config/ /opt/openhab/webapps/cometvisu/config
    Damit cometvisu damit auch arbeitet und Zugriffsblockaden verhindert werden, sind ein Paramter zu ändern, ein zweiter dahinter in gleicher Form hinzuzufügen in /opt/openhab/etc/webdefault.xml:
    "useFileMappedBuffer" von "true" auf "false" (Zugrifffehler kommt bzw. cv-config nicht änderbar während aktiv)
    "aliases" mit dem Wert "true" hinzufügen (cometvisu akzeptiert den symbolischen Link)

    Entgegen meinen ersten Planungen habe ich mich entschlossen, das ganze als doch unter root laufen zu lassen, da ich z.B. mit dem User knx auf Probleme gestoßen bin, deren Lösungsaufwand für mich in keinem Verhältnis zum Vorteil steht. Natürlich ist KNX eine systemkritische Komponente im Haus, die nicht gehackt werden soll, doch mit einem guten Passwort sollte das hinreichend sein in einem geschlossenen (W)LAN hinter einer Firewall. Der knx-User ist auf dem NAS aber sehr wichtig, um dort kein Unheil anzurichten.

    Zeit für einen 1. Test:
    /opt/openhab/start.sh
    sollte fehlerfrei starten

    Zwischenstand:
    * Bootzeit von "Stecker rein" bis "eingabebereit": 33sec
    * Start von OH und CV bis Bindings KNX, HTTP, Fritzbox, CV gestartet sind: 70sec
    * Die Konfigurationsdateien von openHAB und CometVisu sind von Windows mit bekannten Werkzeugen (Designer, Notepad++,...) elegant editierbar. ssh ist im Normalfall nicht nötig. Wenn alles fertig ist, kann man die finalen Version lokal ablegen und die symbolischen Links auf diese verweisen lassen.
    -> Mit 2,5h Installation (meine Umwege nicht mit gerechnet) habe ich nun mit <2min Bootzeit eine komplette Heimautomation + Visu verfügbar mit ca. 3 Watt Energiebedarf und angenehmen Customizing. Wenn das nicht cool ist...


    Wer ssh ganz vermeiden will, brauch noch einen Autostart des openHAB... In vielen Forenbeiträgen wird dem "alten" Startsystem folgend vorgegangen. Ich möchte mich an einer Upstart-Lösung in /etc/init (nicht mehr /etc/init.d bzw /etc/rc..) versuchen, deren Quelle ich mir leider nicht notiert habe. Ich finde es auch ganz charmant, den Aufruf nicht selber zu schreiben, sondern mich auf das Original start.sh zu verlassen, damit ich Neuerungen durch Updates des OH sicher mitnehme und nicht noch an anderen Stellen etwas ändern muss; ich will mich nicht daran erinnern müssen, wenn ich künftig selten mal an das OH Backend gehen muss. Meine Ressource stecke ich lieber in OH oder CV selber...Also in /etc/init die Datei openhab.conf anlegen mit folgendem Inhalt:

    # openHAB

    description "OpenHAB"

    env OPENHAB_HOME=/opt/openhab
    env USER=root
    env JAVA_HOME=/opt/java/hflt/jdk.7.0_45
    env LOGPATH=/var/log/openhab
    env LOGFILE="$LOGPATH/openhab.log"

    kill timeout 10

    start on started networking

    stop on runlevel [016]

    pre-start script
    mkdir -p $LOGPATH
    chown $USER:users $LOGPATH
    end script

    script
    exec su -c "$OPENHAB_HOME/start.sh > $LOGFILE 2>&1" $USER
    end script

    Nach dem ich so weit war und alles lief...war die Nacht vorbei und ich wollte - bevor die Familie wach wird - lieber noch etwas an visu_config.xml schrauben ... Daher endet das howto hier...
    Viel Spaß! Möge es dem ein oder anderen helfen.

    Kommentar


      #3
      Doch noch ein paar Anmerkungen:
      * Ich habe keinen CPU-Kühlkörper für den A20 und regelmäßig gefühlt; er wird warm bis sehr warm. Das sollte aber unkritisch sein. Dennoch werde ich mir den Kühlkörper zur Sicherheit noch gelegentlich holen. Also: Beruhigt, scheint aber auch ohne zu gehen
      * System ist kaum belastet = hat Reserven. Meist steht java mit2,3 - 3,6 %CPU in top. Beim Seitenaufruf kommt er auch mal auf 10%.

      Typisches Bild in top (nur Anfang)

      top - 09:00:30 up 4:57, 3 users, load average: 1.25, 1.17, 1.18
      Tasks: 87 total, 1 running, 86 sleeping, 0 stopped, 0 zombie
      %Cpu(s): 1.5 us, 0.5 sy, 0.0 ni, 97.8 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
      KiB Mem: 829492 total, 390544 used, 438948 free, 28452 buffers
      KiB Swap: 0 total, 0 used, 0 free, 171664 cached


      PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
      582 root 20 0 363m 97m 8980 S 2.6 12.0 9:43.87 java
      1648 root 20 0 4144 1240 836 S 1.3 0.1 0:03.23 top
      1683 root 20 0 4048 1196 836 R 0.7 0.1 0:00.17 top
      58 root rt 0 0 0 0 S 0.3 0.0 0:35.40 cfinteractive
      61 root 20 0 0 0 0 S 0.3 0.0 0:06.57 hdmi proc
      494 root 20 0 0 0 0 S 0.3 0.0 0:24.06 kworker/0:2
      666 mysql 20 0 315m 32m 4776 S 0.3 4.0 0:58.84 mysqld
      1 root 20 0 2980 1900 1036 S 0.0 0.2 0:07.48 init
      2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd

      und df -h liefert
      Filesystem Size Used Avail Use% Mounted on
      /dev/root 3.7G 1.4G 2.2G 38% /
      devtmpfs 405M 4.0K 405M 1% /dev
      none 4.0K 0 4.0K 0% /sys/fs/cgroup
      none 82M 252K 81M 1% /run
      none 5.0M 0 5.0M 0% /run/lock
      none 406M 0 406M 0% /run/shm
      none 100M 0 100M 0% /run/user
      /dev/mmcblk0 30G 87M 30G 1% /mnt/sd
      //NAS-IP/58 knx 5.4G 3.2G 2.3G 59% /mnt/knx

      Kommentar


        #4
        Hi Carsten,

        VIELEN DANK für das tolle HowTo and ja, das ist natürlich cool (openHAB + CV mit 3W).

        Hättest Du Lust darüber vielleicht einen Blogpost oder ein englisches HowTo zu schreiben? Wir würden es dann über die passenden Kanäle Twitter und G+ verteilen.

        Gruß,

        Thomas E.-E.
        Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

        Kommentar


          #5
          Update: Zeitzone ist nicht korrekt, die will auch noch eingestellt werden, denn für cronjob irgendwie doof und die log-Dateien auch...
          sudo dpkg-reconfigure tzdata
          @Thomas: habe Dir eine PN geschrieben, um Deine Frage an mich genauer zu verstehen. Ergebnis kommt dann wieder hier rein.

          Kommentar


            #6
            showicons.php --&gt; PHP unter Jetty läuft nicht

            Frage in die Runde: Das PHP-Script für die (seeeehr hilfreiche) Anzeige aller Icons mit

            http://<cubieboardIP>:8080/cometvisu/icon/knx-uf-iconset/showicons.php

            funktioniert nicht. Auch sudo apt-get install maven2 php5-cgi php5-cli aus dieser Quelle war bei mir erfolglos. Vielleicht habe ich bei der config danach auch geschludert.
            Vermutlich fehlt nach meiner Anleitung von oben php oder irgendwas, um jetty mit php laufen zu lassen. Da bin ich mit meinem Latein am Ende.
            -> Kann jemand helfen mit einer schlanken Lösung?

            Kommentar


              #7
              Zitat von saegefisch Beitrag anzeigen
              Vermutlich fehlt nach meiner Anleitung von oben php oder irgendwas, um jetty mit php laufen zu lassen. Da bin ich mit meinem Latein am Ende.
              -> Kann jemand helfen mit einer schlanken Lösung?
              Jetty kann kein PHP ist ein bekanntes Problem. Da gibts momentan nur die Möglichkeit einen kleinen schlanken PHP-fähigen Webserver zu installieren, der dann auf das Verzeichnis der CometVisu eingerichtet wird.
              Gruß
              Tobias

              Kommentar


                #8
                ah, wichtige Info. Das heißt, der Link führte in die Irre und man kann Jetty gar nicht PHP-fähig machen... schade. Dachte schon, es wäre mein Unvermögen
                Und was wäre erfahrungsgemäß ein guter kleiner schlanker Webserver? ich bin da recht unerfahren...

                Kommentar


                  #9
                  Bevor ich auf meine kleine openHAB-Kiste noch einen zusätzlichen PHP-fähigen Webserver installiere (die Frage wäre ja auch noch: welcher?) . Mein NAS (qnap) hat einen Webserver eingebaut, den ich noch nie verwendet habe. Könnte man den nicht für die Icons verwenden, in dem der auf das Verzeichnis auf dem cubieboard zeigt? Ist ja alles im LAN... <hilfesuchendguck>

                  Kommentar


                    #10
                    Hi,

                    Ja,das geht. Habe ich heute selber benutzt. WWW-Root auf das Verzeichnis legen, in dem die showicons.php liegt und dann im Browser diese aufrufen.
                    Funktioniert prima.

                    Oder Du kopierst das ganze icons Vezeichnis auf Dein NAS und stellst dann das WWW-Root ein.

                    Gruß und Frohe Weihnachten
                    Hans-Jörg

                    Kommentar


                      #11
                      Hallo Hans-Jörg,

                      danke, hat prima geklappt.

                      Viele Grüße,
                      Carsten

                      Kommentar


                        #12
                        Hallo Carsten,

                        was waren es denn für Probleme mit dem User KNX, die dich dazu gebracht haben openhab als root zu starten?

                        Bin selbst auch gerade dabei mein Board mit openhab und NAS zum laufen zu bringen.
                        Meine Konstellation ist aber ein A20-OLinoXino mit Debian und eine Synology DS213. Das Cubieboard war einfach nicht erhältlich, aber der Bericht in der c't hat mich dann doch zum OLinuXino geführt.

                        Gruß

                        Sascha

                        Kommentar


                          #13
                          hat nicht mehr alles auf anhieb funktioniert. Mit root ging's...nach einer kurzen Abschätzung des Risiko-Potentials und dessen Gegenüberstellung mit meinen (sehr überschaubaren) Linux-Fähigkeiten, die Probleme beiseite räumen zu können...naja...die root-Lösung hatte bei mir damit gewonnen

                          Ohne root ist' sicher besser.

                          Carsten

                          Kommentar


                            #14
                            Aus Sicherheitsgründen sollten man eine Anwendung nicht als root laufen lassen.

                            Hattest du das openhab verzeichnis, nachdem du es in /opt/ kopiert hast auch deinem user über chown übergeben?

                            Gruß

                            Kommentar

                            Lädt...
                            X