Ankündigung

Einklappen
Keine Ankündigung bisher.

Raspberry Image Eibd, linknx mit CometVisu

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

    kleiner Auszug aus der Anleitung zu meinem Image:
    Code:
    Diagramme (rrd´s):
    
    - zuerst in das Verzeichnis wechseln
    
    	cd /var/www/rrd/
    
    - Script zum Anlegen der Datenbank anpassen (als Beispiel verwende ich hier „Windgeschwindigkeit“)
    
    
    
    	In der 2. Zeile den Namen für die neue Datenbank ändern (Rest unbedingt unverändert lassen):
    original:
    	rrdtool create database_aussen_temperatur_sued.rrd --start N --step 300 \
    
    neu:
    	rrdtool create database_windgeschwindigkeit.rrd --start N --step 300 \
    
    mit strg + X beenden u. speichern
    
    - Script ausführen u . Datenbank erstellen
    
    	perl /var/www/rrd/create_db.pl
    
    	(mit „mc“ könnt Ihr nun den Midnight Commander aufrufen und überprüfen ob die Datenbank
    	„database_windgeschwindigkeit.rrd“ erstellt wurde)
    
    - diese Schritte müsst Ihr für jede gewünschte Datenaufzeichnung wiederholen!
    
    - nun den Midnight Commander mit „F10“ beenden und den Raspberry mit „reboot“ neu starten - jetzt werden die Daten gesichert
    
    = = = = = = = = = =
    
    - Nun müssen wir das Script zum eintragen der Daten in die Datenbank kopieren und anpassen
    
    	zuerst in das Verzeichnis wechseln
    
    	cd /var/www/rrd/
    
    	Midnight Commander aufrufen mit „mc“
    	mit den Pfeiltasten wählen wir die Datei „update_database_aussen_temperatur.sh“ aus
    	mit der Taste „F5“ kopieren und bei „nach“ (hier steht der Cursor) einfach
    	„update_database_windgeschwindigkeit.sh“ eingeben und mit „OK“ bestätigen
    
    	nun wählen wir mit den Pfeiltasten die neue Datei „update_database_windgeschwindigkeit.sh“ aus
    	mit der Taste „F4“ können wir diese nun editieren
    	In der 4. Zeile den Namen für den aufgezeichneten Wert ändern (Rest unbedingt unverändert lassen):
    original:
    	tempread=`cat /var/www/linknx/Aussen_Temperatur` 
    neu:
    	tempread=`cat /var/www/linknx/windgeschwindigkeit`
    
    und in der 7.Zeile die neue Datenbank eintragen (Rest unbedingt unverändert lassen):
    original:
    	rrdtool update database_aussen_temperatur.rrd N:$temp
    neu:
    	rrdtool update database_windgeschwindigkeit N:$temp
    
    	mit strg + X beenden u. speichern
    	
    - auch diese Schritte müsst Ihr für jede gewünschte Datenaufzeichnung wiederholen!
    
    - nun den Midnight Commander mit „F10“ beenden und den Raspberry mit „reboot“ neu starten - jetzt werden die Daten gesichert
    
    = = = = = = = = = =
    
    - linknx anpassen (Verknüpfung zwischen Gruppenadressen (gad=“x/x/x“) und „sprechendem Namen“ (windgeschwindigkeit) herstellen
    
    -	-	-	-	-	-	-	-	-
        * zu verwendende Datenpunkttypen (type=“9.xxx“)
    
        * 1.001: switching (on/off) (EIS1)
        * 3.007: dimming (control of dimmer using up/down/stop) (EIS2)
        * 3.008: blinds (control of blinds using close/open/stop)
        * 5.xxx: 8bit unsigned integer (from 0 to 255) (EIS6)
        * 5.001: scaling (from 0 to 100%)
        * 5.003: angle (from 0 to 360°)
        * 6.xxx: 8bit signed integer (EIS14)
        * 7.xxx: 16bit unsigned integer (EIS10)
        * 8.xxx: 16bit signed integer
        * 9.xxx: 16 bit floating point number (EIS5)
        * 10.001: time (EIS3)
        * 11.001: date (EIS4)
        * 12.xxx: 32bit unsigned integer (EIS11)
        * 13.xxx: 32bit signed integer
        * 14.xxx: 32 bit IEEE 754 floating point number
        * 16.000: string (max 14 ASCII char) (EIS15)
        * 20.102: heating mode (comfort/standby/night/frost) 
    -	-	-	-	-	-	-	-	-
    
    	nano /var/lib/linknx/linknx.xml
    
    - Für jeden aufgezeichneten Datenpunkt benötigt Ihr hier eine entsprechende Definition - für Euren ersten Wert passt Ihr Euch
    	die 4. Zeile einfach an, für jeden weiteren Datenpunkt kopiert Ihr Euch am besten die 4. Zeile und fügt diese irgendwo
    	zwischen „<objects>“ und „</objects>“ ein. (normalerweise an der letzten Position vor „</objects>“)
    original:
    	<?xml version="1.0"?>
    	config>
    	<objects>
    	<object id="Aussen_Temperatur" gad="0/0/1" type="9.xxx" flags="cwu" init="persist" log="false">Aussen_Temperatur</object>
    	</objects>
    	<rules>
    	…
    neu:	
    	<?xml version="1.0"?>
    	<config>
    	<objects>
    	<object id="Aussen_Temperatur" gad="0/0/1" type="9.xxx" flags="cwu" init="persist" log="false">Aussen_Temperatur</object>
    	<object id="Aussen_Temperatur" gad="0/0/1" type="9.xxx" flags="cwu" init="persist" log="false">Aussen_Temperatur</object>
    	</objects>
    	<rules>
    	</rules>
    	…
    - Nun passen Wir uns die eingefügte Zeile für unseren Datenpunkt (windgeschwindigkeit) an:
    	 gad=„x/x/x (hier wird die Gruppenadresse eingetragen x/x/x), type="9.xxx" (hier wird der Datenpunktstyp definiert)
    
    	<?xml version="1.0"?>
    	<config>
    	<objects>
    	<object id="Aussen_Temperatur" gad="0/0/1" type="9.xxx" flags="cwu" init="persist" log="false">Aussen_Temperatur</object>
    	<object id=„windgeschwindigkeit“ gad=„0/0/2“ type="9.xxx" flags="cwu" init="persist" log="false">windgeschwindigkeit</object>
    	</objects>
    	<rules>
    	</rules>
    	…
    mit strg + X beenden u. speichern
    - Den Raspberry mit „reboot“ neu starten - jetzt werden die Daten gesichert
    
    = = = = = = = = = =
    
    - Nun haben wir bisher:
    	die Datenbank angelegt
    	das Script für den Eintrag des aktuellen Wertes in die Datenbank angelegt
    	die Gruppenadressen (x/x/x) mit „sprechendem Namen“ (windgeschwindigkeit) verknüpft
    
    	was uns noch fehlt, ist eigentlich ein automatischer Aufruf,
    	der alle 5 Minuten das Script ausführt und den Eintrag des aktuellen Wertes in die Datenbank schreibt
    	dies erledigt ein cronjob für uns
    -	Aufruf:
    
    	crontab -e
    
    interessant ist hier für uns der Bereich (Rest unbedingt unverändert lassen):
    	
    	…
    	# alle 5 Minuten rrd (ramdisk) aktualisieren
    	*/5 * * * * /var/www/rrd/update_database_aussen_temperatur.sh
    	…
    
    - für Euren ersten Wert passt Ihr Euch die Zeile mit „update_database_aussen_temperatur.sh“ einfach an,
      ansonsten ergänzen wir einfach um unser neues Script:
    
    	…
    	# alle 5 Minuten rrd (ramdisk) aktualisieren
    	*/5 * * * * /var/www/rrd/update_database_aussen_temperatur.sh
    	*/5 * * * * /var/www/rrd/update_database_windgeschwindigkeit.sh
    	…
    mit strg + X beenden u. speichern
    - Den Raspberry mit „reboot“ neu starten - jetzt werden die Daten gesichert und die Aufzeichnung der Daten beginnt!
    
    !!!Die Daten in einer Ramdisk aufgezeichnet und 1x stündlich tatsächlich auf die SD-Karte gesichert !!!
    
    Die gebräuchlichsten HTML-Farben zum einfärben der Diagramme:
    Code		Farbe
    
    #FF8000 	orange
    #0000FF		blau
    #00FF00		grün
    #FF0000		rot
    #000000 	schwarz
    #666666		grau
    #DDDDDD		helles grau
    
    mehr dazu:
    http://html-color-codes.info/webfarben_hexcodes/
    
    Einbindung CometVisu:
    siehe Demo-Config´s „pc“ und „ipad“ im speziellen
    - width (Breite)
    	an iPad (1024er Auflösung) bzw. PC (1600er Auflösung) angepasst…
    - series
    	Unterschiedliche Darstellungszeiträume (Woche bzw. Tag)
    MfG

    Thomas

    Kommentar


      Sobald ich versuche die Datei zu erstellen, bekomme ich folgende Meldung:
      Code:
      root@raspberrypi:/var/www/rrd# root@raspberrypi:/var/www/rrd# rrdtool create database_windgeschwindigkeit.rrd --start N --step 300
      -bash: root@raspberrypi:/var/www/rrd#: Datei oder Verzeichnis nicht gefunden
      root@raspberrypi:/var/www/rrd# ERROR: you must define at least one Round Robin Archive
      Vielleicht liegt es am Update auf 0.8.0?

      Kommentar


        Ups, hier mangelt es ja schon an der Basis ...

        o.k.

        Du benötigst (um meiner Anleitung folgen zu können) eine "create_db.pl" im Verzeichniss /var/www/rrd

        Inhalt:
        Code:
        #!/bin/bash
        rrdtool create database_sonneneinstrahlung.rrd --start N --step 300 \
        DS:temp:GAUGE:600:U:U \
        RRA:AVERAGE:0.5:1:12 \
        RRA:AVERAGE:0.5:1:288 \
        RRA:AVERAGE:0.5:12:168 \
        RRA:AVERAGE:0.5:12:720 \
        RRA:AVERAGE:0.5:288:365
        und natürlich eine entsprechende "update_database_aussen_temperatur.sh" mit folgendem Inhalt:
        Code:
        #!/bin/bash
        cd /var/www/rrd/
        # Read temperature from sensor 
        tempread=`cat /var/www/linknx/Aussen_Temperatur` 
        temp=`echo $tempread | cut -c -4`
        # Update database
        rrdtool update database_aussen_temperatur.rrd N:$temp
        PS: die Dateien müssen natürlich ausführbar sein ..
        Befehl:
        chmod +x /var/www/rrd/create_db.pl
        und für die "update_database_aussen_temperatur.sh" entsprechend ..

        Kommentar


          Eine alternative Frage:

          Ich habe mal versucht den Rpi nicht über den Router laufen zu lassen, sondern direkt peer2peer mit dem Rechner (2te Netzwerkkarte).

          Auf dem Rpi habe ich eine static ip eingegeben: 192.168.2.2
          Meiner 2ten Netzwerkkarte habe ich: 192.168.2.1 gegeben.

          Die Verbindung steht soweit auch:
          - Kann mich mit Putty oder per Ping am Rpi anmelden
          - ETS 4 findet den Rpi über Adresse 192.168.2.2
          - Über groupwrite ... 1/0/1 1 kann ich meine definiert GA schreiben. Schaltaktor schaltet

          ABER ich kann nicht mehr über die ETS4 auf den Bus zugreifen (ging vorher). Jemand eine Idee?
          Einstellungssache?

          Kommentar


            Irgendwie haut es nicht hin.

            Habe die beiden Dateien erstellt und die Befehle mit Putty eingegeben.

            Wenn ich dann eine weitere Datei erstellen möchte kommt wieder:
            Code:
            root@raspberrypi:~# ERROR: you must define at least one Round Robin Archive
            -bash: ERROR:: Kommando nicht gefunden.
            Edit:database_sonneneinstrahlung.rrd wurde erstellt

            Kommentar


              1. in das Verzeichnis wechseln:

              Code:
              cd /var/www/rrd/
              2.Erstellen der Datenbank:

              Code:
              perl /var/www/rrd/create_db.pl
              3. manuelles Update der Datenbank (zum testen)

              Code:
              perl /var/www/rrd/create_db.pl
              So wie ich das sehe scheiterst Du am erstellen der Datenbank ...
              Welche Benutzerrechte hast Du (user, root, ...)?
              Meine Beschreibung gilt für "root" ...

              => o.k. sehe aus Deiner Fehlermeldung Du bist als root angemeldet ... und mit der Sonneneinstrahlung hat es ja dann auch geklappt - wichtig ist Du musst im Verzeichnis /var/www/rrd/ sein!
              Vielleicht ein Tipfehler in den Dateien ?

              Kommentar


                So, angelegt wird es nun.
                Ich war wohl zu ungeduldig.
                Nach einer gewissen Zeit tauchen die Dateien auf.

                Jedoch sieht meine linknx.xml ungewöhnlich aus.

                Code:
                <?xml version="1.0" ?>
                <config>
                    <services>
                        <knxconnection url="ip:127.0.0.1" />
                        <xmlserver type="inet" port="1028"/>
                        <exceptiondays>
                            <date day="1" month="1" />
                            <date day="1" month="5" />
                            <date day="15" month="8" />
                            <date day="25" month="12" />
                            <date day="25" month="4" year="2011" />
                            <date day="2" month="6" year="2011" />
                            <date day="13" month="6" year="2011" />
                            <date day="9" month="4" year="2012" />
                            <date day="17" month="5" year="2012" />
                            <date day="28" month="5" year="2012" />
                            <date day="1" month="4" year="2013" />
                            <date day="9" month="5" year="2013" />
                            <date day="20" month="5" year="2013" />
                            <date day="21" month="4" year="2014" />
                            <date day="29" month="5" year="2014" />
                            <date day="9" month="6" year="2014" />
                        </exceptiondays>
                        <persistence type="file" path="/var/lib/linknx" />
                    </services>
                    <objects>
                <!--         <object id="Weather_Temperature" gad="0/0/1" type="9.xxx" flags="cwu" init="persist" log="false">Weather_Temperature</object> -->
                    <object id="database_sonneneinstrahlung" gad="0/3/6" type="9.xxx" flags="cwu" init="persist" log="false">database_sonneneinstrahlung</object>
                    </objects>
                    <rules>
                 <!--        <rule id="Aussen_TEMP_LOG">
                           <condition type="object" id="Weather_Temperature" trigger="true" />
                               <actionlist type="if-true">
                             <action type="shell-cmd" cmd="/home/rrdtool/update_database.sh"/>
                            </actionlist> -->
                       <!-- </rule> -->
                 
                
                    </rules>    <!-- muss das so sein ? -->
                    <logging output="/var/log/linknx.log" format="%d{%Y-%m-%d %H:%M:%S,%l} %5p > %c %x - %m%n" level="INFO" maxfilesize="100" maxfileindex="2" />
                </config>
                Kann es sein, dass da auch noch irgendwie die Verzeichnisse geändert und die "<!--...-->" entfernt werden müssen?

                Ich habe es mal so angepasst und es schein zu funktionieren !?!
                <?xml version="1.0" ?>
                <config>
                <services>
                <knxconnection url="ip:127.0.0.1" />
                <xmlserver type="inet" port="1028"/>
                <exceptiondays>
                <date day="1" month="1" />
                <date day="1" month="5" />
                <date day="15" month="8" />
                <date day="25" month="12" />
                <date day="25" month="4" year="2011" />
                <date day="2" month="6" year="2011" />
                <date day="13" month="6" year="2011" />
                <date day="9" month="4" year="2012" />
                <date day="17" month="5" year="2012" />
                <date day="28" month="5" year="2012" />
                <date day="1" month="4" year="2013" />
                <date day="9" month="5" year="2013" />
                <date day="20" month="5" year="2013" />
                <date day="21" month="4" year="2014" />
                <date day="29" month="5" year="2014" />
                <date day="9" month="6" year="2014" />
                </exceptiondays>
                <persistence type="file" path="/var/lib/linknx" />
                </services>
                <objects>
                <!-- <object id="Weather_Temperature" gad="0/0/1" type="9.xxx" flags="cwu" init="persist" log="false">Weather_Temperature</object> -->
                <object id="database_sonneneinstrahlung" gad="0/3/6" type="9.xxx" flags="cwu" init="persist" log="false">database_sonneneinstrahlung</object>
                </objects>
                <rules>
                <rule id="Sonneneinstrahlung">
                <condition type="object" id="database_sonneneinstrahlung" trigger="true" />
                <actionlist type="if-true">
                <action type="shell-cmd" cmd="/var/www/rrd/update_database_sonneneinstrahlung.sh"/>
                </actionlist>
                </rule>


                </rules> <!-- muss das so sein ? -->
                <logging output="/var/log/linknx.log" format="%d{%Y-%m-%d %H:%M:%S,%l} %5p > %c %x - %m%n" level="INFO" maxfilesize="100" maxfileindex="2" />
                </config>
                Nur was muß ich jetzt für weitere Diagramme machen?

                Kommentar


                  Deine linknx.xml sieht nicht ungewöhnlich aus.

                  Wenn du das alles so gemacht hast wie Thomas es beschrieben hat und ein Update der Datenbank über einen Cronjob läuft,
                  dann kannst du aus der linknx.xml einige Zeilen auskommentieren oder löschen.

                  Zitat von MarkusW Beitrag anzeigen
                  Kann es sein, dass da auch noch irgendwie die Verzeichnisse geändert und die "<!--...-->" entfernt werden müssen?
                  Mit diesen "<!--...-->" Zeichen kann man Code auskommentieren, bzw. Code kommentieren.

                  Wenn das nun alles über den Cronjob läuft, dann reicht es wenn die linknx.xlm so aussieht:

                  Code:
                  <?xml version="1.0" ?>
                  <config>
                      <services>
                          <knxconnection url="ip:127.0.0.1" />
                          <xmlserver type="inet" port="1028"/>
                          <exceptiondays>
                              <date day="1" month="1" />
                              <date day="1" month="5" />
                              <date day="15" month="8" />
                              <date day="25" month="12" />
                              <date day="25" month="4" year="2011" />
                              <date day="2" month="6" year="2011" />
                              <date day="13" month="6" year="2011" />
                              <date day="9" month="4" year="2012" />
                              <date day="17" month="5" year="2012" />
                              <date day="28" month="5" year="2012" />
                              <date day="1" month="4" year="2013" />
                              <date day="9" month="5" year="2013" />
                              <date day="20" month="5" year="2013" />
                              <date day="21" month="4" year="2014" />
                              <date day="29" month="5" year="2014" />
                              <date day="9" month="6" year="2014" />
                          </exceptiondays>
                          <persistence type="file" path="/var/lib/linknx" />
                      </services>
                      <objects>
                      <object id="database_sonneneinstrahlung" gad="0/3/6" type="9.xxx" flags="cwu" init="persist" log="false">database_sonneneinstrahlung</object>
                      </objects>
                      <rules>
                   
                      </rules>
                      <logging output="/var/log/linknx.log" format="%d{%Y-%m-%d %H:%M:%S,%l} %5p > %c %x - %m%n" level="INFO" maxfilesize="100" maxfileindex="2" />
                  </config>
                  Gruß
                  Michi

                  Kommentar


                    Ok, sieht ja schonmal etwas übersichtlicher aus.

                    Dann brauche ich also für alle weiteren Diagramme nur noch die Datenbanken wie vorher beschrieben anlegen und das Objekt dafür in der linknx.xml anlegen?

                    Besten Dank für Eure Mühen !!!

                    Kommentar


                      Das sollte so gehen, aber es muß die Akualisierung der Datenbanken über den Cronjob laufen.
                      Dann kannst Du das so in der linknx.xlm so eintragen, wie von dir vorgeschlagen

                      Kommentar


                        Super.
                        Es funktioniert.

                        Vielen vielen Dank !!!

                        Kommentar


                          Jemand noch ne Idee zu dem Problem aus meinem Post?

                          Kommentar


                            Damit anderen geholfen wird die ein ähnliches Problem haben (grobe Übersicht der Schritte):

                            1) Beide Richtungen des neuen Netzwerks (Rpi -> Pc; Pc -> Rpi) testen (pingen). Firewall blockierte noch eingehende Verbindungen. Rpi konnte meinen Rechner nicht finden

                            2) Öffentliches Netzwerk als privates einrichten bzw. die Regeln für dieses neue öffentliche Netzwerk auf privat einstellen. Internetverbindung kann man dafür zusätzlich freigeben

                            3) Statische IP beim Rpi verwenden

                            4) Bestehen weiterhin Probleme bei der Verbindung über die ETS, diesen Artikel beachten:
                            ETS4 Tipps und Tricks, Probleme beim Programmieren über Schnittstelle - Sonstiges - Lexikon - KNX-User-Forum

                            Kommentar


                              1-Wire to KNX Unterstützung hinzufügen

                              Hallo Michi,

                              erstmal vielen vielen Dank für diese großartige Leistung und auch die ganzen ausführlichen Antworten und informativen Beiträge der anderen User!
                              Mir fehlt an Deinem Image (das vom 24.5.) noch die 1-Wire Unterstützung.
                              Leider bin ich noch totaler Linux Anfänger...
                              Ich habe die ROT-Erweiterung für den Pi.
                              Den KNX-Teil habe ich auf der ROT soweit tatsächlich zum Laufen gebracht.
                              Kann ich auf deiner Wezzy Installation diese Anleitung hier benutzen, um smarthome.py, owhttpd und owserver nachzuinstallieren?
                              https://github.com/mknx/smarthome/wi...ibd-und-1-Wire

                              Wird das so "out of the Box" funktionieren?

                              Also über ssh als root:
                              apt-get update
                              apt-get -y install openssh-server apache2 php5 php5-json openntpd python3 python3-dev python3-setuptools git unzip wget
                              easy_install3
                              pip pip install ephem
                              adduser smarthome
                              usermod -G www-data,sudo -a smarthome
                              cd /usr/local git clone git://github.com/mknx/smarthome.git
                              chown -R smarthome:smarthome /usr/local/smarthome
                              usw.

                              Den Teil in der Anleitung für smartVISU und EIBD würde ich dann einfach weglassen...

                              Wird das mit den Rechten z.B. so funktionieren, oder sollte ich alles als root ausführen und den smarthome User weglassen? Nicht dass die 1-Wire Pakete nur nicht im EIBD ankommen, weil die Rechte nicht stimmen. Das würde ich niemals finden....

                              Viele Grüße
                              Hanno

                              Kommentar


                                Hallo Hanno,

                                Wenn es nur darum geht owfs zu installieren, dann geht das ganz einfach.
                                Dafür gibt es fertige Pakete:
                                Code:
                                apt-get update
                                apt-get install owfs
                                Da ich die Rot-Erweiterung nicht benutze sondern 1-Wire über einen USB -Busmaster betreibe, kann ich dir auch nicht zu 100% sagen wie die Rot - Erweiterung eingebunden wir.

                                Aber hier steht wohl wie das geht, sonst ist diese Seite noch interessant.

                                Da ist dann auch beschrieben wie Kerneltreiber entladen, Mountpoint für 1-Wire Bus eingerichtet und OWFS konfiguriert wird.
                                Oder wie OWFS Dienste automatisch gestartet werden. Die Start-Scripte bekommt man auch von da.
                                Die Installationanleitung für OWFS auf der Seite, ist mehr für eine händische Installation.
                                Installiere es lieber so wie ich es oben geschrieben habe.

                                Wenn Du aber smarthome.py nutzen möchtes, dann lade dir das Image von smarthome.py runter.

                                Poste mal bitte die Einstellungen, die du unter /etc/default/eibd da eingetragen hast.
                                Dann könnte ich die Einleitung auf der ersten Seite etwas ergänzen


                                Gruß
                                Michi

                                Kommentar

                                Lädt...
                                X