Ankündigung

Einklappen
Keine Ankündigung bisher.

Starthilfe nötig

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

    Starthilfe nötig

    Hallo,

    nach langer Abstinenz schaue ich mal wieder hier rein und versuche, die Geschichte zum Laufen zu bringen.

    Das habe ich gemacht:

    Hardware
    • Raspberry PI B (erste Version)
    • ROT a RTC-OneWire-TPUART (EIB/KNX) extension for Raspberry Pi


    Image-File

    Download von https://sourceforge.net/projects/sma...4.zip/download

    Expand Filesystem

    df -h 15:19:42
    Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
    /dev/root 2,0G 1,7G 166M 92% /
    devtmpfs 182M 0 182M 0% /dev
    tmpfs 186M 0 186M 0% /dev/shm
    tmpfs 186M 4,6M 182M 3% /run
    tmpfs 5,0M 4,0K 5,0M 1% /run/lock
    tmpfs 186M 0 186M 0% /sys/fs/cgroup
    /dev/mmcblk0p1 63M 22M 42M 34% /boot

    sudo raspi-config

    Filesytem erweitert.

    Reboot

    df -h 15:22:30
    Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
    /dev/root 3,5G 1,7G 1,7G 51% /
    devtmpfs 182M 0 182M 0% /dev
    tmpfs 186M 0 186M 0% /dev/shm
    tmpfs 186M 4,5M 182M 3% /run
    tmpfs 5,0M 8,0K 5,0M 1% /run/lock
    tmpfs 186M 0 186M 0% /sys/fs/cgroup
    /dev/mmcblk0p1 63M 22M 42M 34% /boot

    Aktualisieren der Pakete

    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get autoremove

    sudo apt-get autoclean

    Device für knxd

    Damit der knxd über ein Device auf den Bus lesen und schreiben kann, wird ein Link unter /dev/ttyKNX1 eingerichtet. In diesem Abschnitt hat nach dem Boot mit aufgesteckter ROT-Schnittstelle alles gepasst.

    Zur Kontrolle habe ich die Parameter der ROT-Schnittstelle festgestellt:

    sudo udevadm info -a /dev/ttyAMA0
    Code:
    Udevadm info starts with the device specified by the devpath and then
    walks up the chain of parent devices. It prints for every device
    found, all possible attributes in the udev rules key format.
    A rule to match, can be composed by the attributes of the device
    and the attributes from one single parent device.
    
    looking at device '/devices/platform/soc/20201000.uart/tty/ttyAMA0':
    KERNEL=="ttyAMA0"
    SUBSYSTEM=="tty"
    DRIVER==""
    ATTR{irq}=="81"
    ATTR{line}=="0"
    ATTR{port}=="0x0"
    ATTR{type}=="32"
    ATTR{flags}=="0x10000000"
    ATTR{iomem_base}=="0x20201000"
    ATTR{custom_divisor}=="0"
    ATTR{iomem_reg_shift}=="0"
    ATTR{uartclk}=="0"
    ATTR{xmit_fifo_size}=="16"
    ATTR{close_delay}=="50"
    ATTR{closing_wait}=="3000"
    ATTR{io_type}=="2"
    
    looking at parent device '/devices/platform/soc/20201000.uart':
    KERNELS=="20201000.uart"
    SUBSYSTEMS=="amba"
    DRIVERS=="uart-pl011"
    ATTRS{id}=="00241011"
    ATTRS{irq0}=="81"
    ATTRS{driver_override}==""
    
    looking at parent device '/devices/platform/soc':
    KERNELS=="soc"
    SUBSYSTEMS=="platform"
    DRIVERS==""
    ATTRS{driver_override}=="(null)"
    
    looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""
    In /etc/udev/rules.d/70-knxd.rules waren folgende Einstellungen zu finden, die passen:

    cat /etc/udev/rules.d/70-knxd.rules
    Code:
    # The following rule does nothing unless you replace the 'something' with the actual USB path of your TPUART interface.
    # Run "udevadm info --attribute-walk /sys/bus/usb/drivers/cdc_acm/*/tty/ttyACM0", look at the third block (the one with 'ATTRS{manufacturer}=="busware.de"').
    #
    ACTION=="add", SUBSYSTEM=="tty", ATTRS{id}=="00241011", KERNELS=="20201000.uart", SYMLINK+="ttyKNX1", OWNER="knxd"
    Es gibt folgenden Link unter /dev:

    lrwxrwxrwx 1 root root 7 Apr 12 15:54 ttyKNX1 -> ttyAMA0

    Ich hatte erwartet, dass der Link dem User knxd gehört. Immerhin gehört /dev/ttyAMA0 dem User knxd und der Gruppe dialout:

    crw-rw---- 1 knxd dialout 204, 64 Apr 12 15:54 ttyAMA0

    knxd konfigurieren

    sudo vi /etc/knxd.conf
    Code:
    # You could also use the new ini file for configuration. Comment out everything except the following line
    #
    # configuration for knxd.service
    START_KNXD=YES
    KNXD_OPTS="-e 1.1.254 -E 1.1.255:2 -DTRS -t 0xffc -f 9 -b tpuarts:/dev/ttyKNX1"
    Nachdem die knx.conf aktualisiert wurde, habe ich den Dämon neu gestartet:

    sudo /etc/init.d/knxd restart

    knxd testen

    Nun habe ich ein paar Tests durchgeführt:

    knxtool groupswrite local: 1/0/6 1 # Deckenlampe Buero an
    knxtool groupswrite local: 1/0/6 0 # Deckenlampe Buero aus
    knxtool groupswrite local: 1/1/2 1 # Rollladen Buero runter
    knxtool groupswrite local: 1/1/2 0 # Rollladen Buero rauf
    knxtool on local: 1/0/6 # Deckenlampe Buero an
    knxtool off local: 1/0/6 # Deckenlampe Buero aus

    Funktioniert!


    Startbild kommt unter http://raspberrypi/smartvisu/index.php?page=config

    Smarthome Teil

    Unter /usr/local/smarthome/items habe ich eine Konfiguration abgelegt:

    cat Erdgeschoss.conf
    Code:
    [Erdgeschoss]
            [[Wohnzimmer]]
                    name = Wohnzimmer
                    sv_page = room
                    sv_img = scene_livingroom.png
            [[Kueche]]
                    name = Kueche
                    sv_page = room
                    sv_img = scene_cooking.png
            [[Diele]]
                    name = Diele
                    sv_page = room
                    sv_img = scene_dinner.png
            [[Toilette]]
                    name = Toilette
                    sv_page = room
                    sv_img = scene_toilet_alternat.png
            [[Bad]]
                    name = Bad
                    sv_page = room
                    sv_img = scene_bath.png
            [[Schlafzimmer]]
                    name = Schlafzimmer
                    sv_page = room
                    sv_img = scene_sleeping.png
            [[Hauswirtschaftsraum]]
                    name = Hauswirtschaftsraum
                    sv_page = room
                    sv_img = scene_laundry_room.png
            [[Windfang]]
                    name = Windfang
                    sv_page = room
                    sv_img = scene_corridor.png
       [[Arbeit]]
                    name = Arbeitszimmer
                    sv_page = room
                    sv_img = scene_office.png
                    [[[light]]]
                            [[[ceiling]]]
                                    name = Deckenlicht
                                    type = bool
                                    visu = yes
                                    knx_dpt = 1
                                    knx_send = 1/0/6
                                    knx_listen = 1/6/6
                                    knx_init = 1/6/6
    
                                    sv_widget = {{ basic.switch('item', 'item', icon1~'light_ceiling_light.png', icon0~'light_ceiling_light.png') }} Deckenlicht
                                    #sv_widget = {{ basic.switch('S1', 'Arbeit.Deckenlicht', icon1~'light_ceiling_light.png', icon0~'light_ceiling_light.png') }} Deckenlicht
    Smarthome Konfiuration

    sudo su - smarthome
    cd /usr/local/smarthome/etc

    vi plugin.conf
    Code:
    # plugin.conf
    
    # Der BackendServer stellt eine Übersicht zur Laufzeit dar und liefert Informationen ähnlich wie das CLI Plugin
    # Der Zugriff erfolgt über http://<IP oder Name des SmartHomeNG Servers bzw. ip>:<port>
    # port wird als Attribut weiter unten definiert
    # das Passwort ist zunächst im Klartext anzugeben. In neueren Versionen wird es eine Funktion im Backend geben,
    # die aus einem gegebenen Passwort einen Hash erzeugt. Wenn user oder password fehlen gibt es keine Abfrage
    [BackendServer]
        class_name = BackendServer
        class_path = plugins.backend
        #ip = xxx.xxx.xxx.xxx
        port = 8383
        updates_allowed = True
        threads = 8
        user = admin
        password = XXXX
        language = de
    
    [knx]
       class_name = KNX
       class_path = plugins.knx
       host = 127.0.0.1
       port = 6720
    #   send_time = 600 # update date/time every 600 seconds, default none
    #   time_ga = 1/1/1 # default none
    #   date_ga = 1/1/2 # default none
    
    # Bereitstellung eines Websockets zur Kommunikation zwischen SmartVISU und SmartHomeNG
    [visu]
        class_name = WebSocket
        class_path = plugins.visu_websocket
    #    ip = 0.0.0.0
    #    port = 2424
    #    tls = no
        wsproto = 4
        acl = rw
    
    # Autogenerierung von Webseiten für SmartVISU
    [smartvisu]
        class_name = SmartVisu
        class_path = plugins.visu_smartvisu
        # "neue" Linux Versionen (z.B. Debian Jessie 8.x, Ubuntu > 14.x)
        smartvisu_dir = /var/www/html/smartVISU
        # nur "alte" Linux-Variationen
        #smartvisu_dir = /var/www/smartVISU
    #    generate_pages = True
    #    handle_widgets = True
    #    overwrite_templates = Yes
    #    visu_style = blk
    
    # Command Line Interface
    # wichtig für Funktionsprüfungen solange keine Visu zur Verfügung steht
    [cli]
        class_name = CLI
        class_path = plugins.cli
        ip = 127.0.0.1
        port = 2323
        update = True
    
    # alter SQL-Treiber
    #[sql]
    #    class_name = SQL
    #    class_path = plugins.sqlite
    
    #SQL-Treiber, unterstützt auch die SmartVISU 2.8/2.9
    # dazu muß im websocket plugin zwingend die Protokollversion 4 eingetragen sein
    [sql]
        class_name = SQL
        class_path = plugins.sqlite_visu2_8
    
    # Onewire Plugin
    #[ow]
    #    class_name = OneWire
    #    class_path = plugins.onewire
    chmod 644 plugin.conf
    touch logic.conf
    cd /var/www/html
    sudo ln -s ../smartvisu . # Fuer neuen und alten HTML-Pfad

    Smarthome testen

    telnet localhost 2323

    Trying ::1...
    Trying 127.0.0.1...
    telnet: Unable to connect to remote host: Connection refused

    Geht anscheinend nicht mehr. Im Vorgängerimage hat es noch funktioniert:

    > update Erdgeschoss.Arbeit.ceiling = 0
    > ls Erdgeschoss.Arbeit.ceiling
    Items:
    ======
    Erdgeschoss.Arbeit.ceiling = False
    > update Erdgeschoss.Arbeit.ceiling = 1
    > ls Erdgeschoss.Arbeit.ceiling
    Items:
    ======
    Erdgeschoss.Arbeit.ceiling = True
    > update Erdgeschoss.Arbeit.ceiling = 0

    Unter dem Port 2323 läuft nix:

    netstat -nlt
    Code:
    Aktive Internetverbindungen (Nur Server)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:2424            0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:44921           0.0.0.0:*               LISTEN
    tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:48794           0.0.0.0:*               LISTEN
    tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:58173           0.0.0.0:*               LISTEN
    tcp        0      0 192.168.178.51:8383     0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:55885           0.0.0.0:*               LISTEN
    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN
    tcp6       0      0 :::80                   :::*                    LISTEN
    tcp6       0      0 :::22                   :::*                    LISTEN
    tcp6       0      0 :::50167                :::*                    LISTEN
    tcp6       0      0 :::47259                :::*                    LISTEN
    tcp6       0      0 :::445                  :::*                    LISTEN
    tcp6       0      0 :::51069                :::*                    LISTEN
    tcp6       0      0 :::6720                 :::*                    LISTEN
    tcp6       0      0 :::2049                 :::*                    LISTEN
    tcp6       0      0 :::43877                :::*                    LISTEN
    tcp6       0      0 :::139                  :::*                    LISTEN
    tcp6       0      0 :::111                  :::*                    LISTEN
    Nun meine Fragen:

    - Warum läuft der CLI nicht? Wie teste ich den Smarthome-Teil?
    - Wie ist SmartVisu mit Smarthome verbunden? Also, wie hängt z.B. /var/www/smartvisu/pages/<irgendwas> mit /usr/local/smarthome/items/<irgendwas> zusammen? Gibt es ein schlaues Script, das die HTML-Seiten anhand der items erst Mal zusammenbaut?

    Ich sehe hier schöne Diskussionen, die für mich mittendrin anfangen, so als wenn ich einen Film nicht von Anfang an mitbekommen habe und ich verstehe deshalb die Handlung nicht.

    Gruß Holgi
    Zuletzt geändert von HolgiM; 13.04.2017, 16:45.

    #2
    Wegen CLI: Ich habe bei mir sowohl im plugin.conf als auch beim telnet Aufruf die interne IP Adresse angegeben statt 127.0.0.1 - probier das mal!
    Smartvisu hängt durch zwei Plugins mit SmarthomeNG zusammen:

    https://github.com/smarthomeNG/plugi...visu/README.md
    Das ist das von dir geforderte "Skript" -> hier werden sv_page, sv_widget, etc. aus deinen Items ausgelesen

    https://github.com/smarthomeNG/plugi...cket/README.md
    Ist für die Kommunikation zw smartvisu und smarthome zuständig. Wichtig ist, in der Config, Smarthome.py auszuwählen. Als IP empfehle ich auch hier die interne LAN Adresse und nicht 127.0.0.1

    Das smartvisu Verzeichnis müsste eigtl. /var/www/smartvisu sein und nicht /var/www/html/smartVISU (Achte auch auf Groß- und Kleinschreibung)

    Achtung: im etc Ordner finden sich bereits yaml Dateien. Das wäre die neue Methode der Konfiguration. Wenn du bei conf bleiben willst, verschieb mal die yaml Dateien in einen anderen Ordner. Besser wäre aber, die bereits bestehende yaml Datei anzupassen und die conf-Variante sein zu lassen.

    Ich würde empfehlen, im Ordner /var/www/smartvisu/pages ein Beispiel, also z.B. fleischer in einen eigenen Ordner zu kopieren. Diesen wählst du dann auch im Browser unter "Seiten" aus. Im kopierten Ordner passt du zB mal DG.Schlafen.html an und änderst den "Deckenspot"-Eintrag um:

    Code:
     
     {{ basic.stateswitch('Erdgeschoss.Arbeit.light.ceiling', 'Erdgeschoss.Arbeit.light.ceiling', 'icon', [0,1], ['light_downlight.svg','light_downlight.svg'], '', color, indicator) }}
    Das sollte dann prinzipiell klappen. Nach dem Schema müsstest du nun den Rest anlegen. Oder eben auf das visu_smartvisu Plugin zurückgreifen.
    Du solltest in deinem sv_widget = ... die zwei Einträge 'item' durch das tatsächliche Item ersetzen, also Erdgeschoss.Arbeit.light.ceiling. Alternativ müsste auch '.' funktionieren, das weiß aber wer anderer sicher besser, da ich das visu_smartvisu Plugin nicht nutze.

    Kommentar


      #3
      Zitat von Onkelandy Beitrag anzeigen
      Wegen CLI: Ich habe bei mir sowohl im plugin.conf als auch beim telnet Aufruf die interne IP Adresse angegeben statt 127.0.0.1 - probier das mal!
      Smartvisu hängt durch zwei Plugins mit SmarthomeNG zusammen:
      Danke,das werde ich mal probieren.

      Zitat von Onkelandy Beitrag anzeigen
      https://github.com/smarthomeNG/plugi...visu/README.md
      Das ist das von dir geforderte "Skript" -> hier werden sv_page, sv_widget, etc. aus deinen Items ausgelesen

      https://github.com/smarthomeNG/plugi...cket/README.md
      Ist für die Kommunikation zw smartvisu und smarthome zuständig. Wichtig ist, in der Config, Smarthome.py auszuwählen. Als IP empfehle ich auch hier die interne LAN Adresse und nicht 127.0.0.1
      Genau hier stehe ich auf dem Schlauch. In den Einstellungen, die man in der SmartVisu über den Browser einstellen kann, habe ich Smarthome.py, meine IP-Adresse (nicht localhost) und den Port 2424 ausgewählt. Das scheint ja auch zu funktionieren. Ich kann im Browser auch alle Beispielkonfigurationen unter dem pages-Ordner auswählen.

      Ein Script,welches aus den items eine oder mehrere rudimentäre HTML-Seite(n) zusammenbaut, scheint es also nicht zu geben. Vielleicht bekomme ich so etwas mal hin, wenn ich das besser verstanden habe.

      Zitat von Onkelandy Beitrag anzeigen
      Das smartvisu Verzeichnis müsste eigtl. /var/www/smartvisu sein und nicht /var/www/html/smartVISU (Achte auch auf Groß- und Kleinschreibung)
      Neuere Debian-Ableger, zu denen Jessie gehört, sollten die Webseiten unter /var/www/html erwarten. Egal, durch den Link, der von /var/www/html/smartvisu auf ../smartvisu zeigt, geht nun beides.

      Zitat von Onkelandy Beitrag anzeigen
      Achtung: im etc Ordner finden sich bereits yaml Dateien. Das wäre die neue Methode der Konfiguration. Wenn du bei conf bleiben willst, verschieb mal die yaml Dateien in einen anderen Ordner. Besser wäre aber, die bereits bestehende yaml Datei anzupassen und die conf-Variante sein zu lassen.
      Ist diese Benutzung von yaml konsequent an allen Stellen, wo bisher .conf benutzt wurde? Also in allen Unterordnern etc, items usw.? Ist das z.B. der Unterschied von SmarthomeNG zu Smarthome?

      Ich werde mich mal in die Thematik yaml-css einlesen.

      Danke und frohe Festtage noch.

      Holgi


      Kommentar


        #4
        Doch, das "Skript" zum automatischen Seitenerstellen gibt es.. Das Plugin https://github.com/smarthomeNG/plugi...visu/README.md macht genau das. Wichtig ist aber, in den Items das sv_page, sv_widget, etc. richtig anzugeben. Ich würde dennoch mal versuchen, meine angegebenen manuellen Schritte durchzuführen

        yaml ist inzwischen konsequent bei config und items genutzt. Aber erst seit dem neuesten smarthomeNG Release, die früheren Versionen konnten nur conf Files lesen.
        https://github.com/smarthomeNG/smart...martHomeNG-1.3
        Es ist auch nach wie vor möglich, conf zu nutzen, es gibt aber auch einen Converter im Tools-Ordner, der gut funktioniert.

        Kommentar


          #5
          Ich empfehle auch sehr das Backend Plugin zu aktivieren, m.E. zugänglicher als CLI.. von einem Windows Client aus ist das CLI Plugin wie Telnet nur sehr schwer nutzbar...

          Kommentar


            #6
            Hallo,

            das hat mir schon mal sehr weiter geholfen. Der Grund, warum "cli" nicht funtioniert hat, war, dass .yaml und .conf-Dateien zusammen im etc-Verzeichnis nicht funktionieren. Das Script zur Umwandlung der conf in die yaml-Dateien liefert diesen Hinweis.

            Ganz so einfach war es jedoch nicht.

            Dateien in YAML-Format umwandeln
            Siehe auch https://github.com/smarthomeNG/smart...guration-Files

            sudo su – smarthome

            # Originaldaten sichern
            mkdir Backup
            cd Backup
            tar -cvf originaldaten.tar /usr/local/smarthome
            gzip -9 originaldaten.tar

            # Nun vorhandene YAML-Dateien loeschen
            cd /usr/local/smarthome/etc
            rm plugin.yaml plugin.yaml.default smarthome.yaml smarthome.yaml.default

            cd ../tools
            ./conf_to_yaml_converter.py
            : Datei oder Verzeichnis nicht gefunden

            python3 conf_to_yaml_converter.py 17:46:55

            conf_to_yaml_converter.py - tool to convert shng .conf files to yaml

            ERROR: module ruamel.yaml not found

            Please install ruamel.yaml using the command:
            sudo pip3 install ruamel.yaml

            sudo pip3 install ruamel.yaml 17:47:02
            [sudo] password for pi:
            Collecting ruamel.yaml
            Downloading ruamel.yaml-0.14.6.tar.gz (239kB)
            100% |████████████████████████████████| 245kB 178kB/s
            Installing collected packages: ruamel.yaml
            Running setup.py install for ruamel.yaml ... done
            Successfully installed ruamel.yaml-0.14.6

            python3 conf_to_yaml_converter.py

            conf_to_yaml_converter.py - tool to convert shng .conf files to yaml

            using python module ruamel.yaml version: 0.14.6

            converting .conf-files from the following directories:
            - item-directory : /usr/local/smarthome/items
            - config-directory: /usr/local/smarthome/etc

            Convert item files (y/n)?: y
            Convert config files (y/n)?: y

            Converting item files:
            - parsing 'Erdgeschoss.conf', saving to 'Erdgeschoss.yaml'

            Convering configuration files:
            - parsing 'logic.conf', saving to 'logic.yaml'
            - parsing 'plugin.conf', saving to 'plugin.yaml'
            - parsing 'smarthome.conf', saving to 'smarthome.yaml'

            Conversion finished!

            You MUST move the old item.conf files out of the directory,
            since SmartHomeNG tries to read all .yaml AND all .conf files
            stored in the item directory.

            You should move the old .conf files out of the etc directory to avoid
            confusion. If both files (.conf and .yaml) exist, SmartHomeNG only reads
            the .yaml file.

            Konvertierte Files

            /usr/local/smarthome/etc/ plugin.yaml:

            Code:
            %YAML 1.1
            ---
            # plugin.conf
            # Der BackendServer stellt eine Übersicht zur Laufzeit dar und liefert Informationen ähnlich wie das CLI Plugin
            # Der Zugriff erfolgt über http://<IP oder Name des SmartHomeNG Servers bzw. ip>:<port>
            # port wird als Attribut weiter unten definiert
            # das Passwort ist zunächst im Klartext anzugeben. In neueren Versionen wird es eine Funktion im Backend geben,
            # die aus einem gegebenen Passwort einen Hash erzeugt. Wenn user oder password fehlen gibt es keine Abfrage
            BackendServer:
                class_name: BackendServer
                class_path: plugins.backend
                # ip = xxx.xxx.xxx.xxx
                port: 8383
                updates_allowed: 'True'
                threads: 8
                user: admin
                password: XXX
                language: de
            
            WebSocket:
                class_name: WebSocket
                class_path: plugins.visu_websocket
                wsproto: 4
            
            knx:
                class_name: KNX
                class_path: plugins.knx
                host: 127.0.0.1
                port: 6720
            
            # send_time = 600 # update date/time every 600 seconds, default none
            # time_ga = 1/1/1 # default none
            # date_ga = 1/1/2 # default none
            # Bereitstellung eines Websockets zur Kommunikation zwischen SmartVISU und SmartHomeNG
            visu:
                class_name: WebSocket
                class_path: plugins.visu_websocket
                # ip = 0.0.0.0
                # port = 2424
                # tls = no
                wsproto: 4
                acl: rw
            
            # Autogenerierung von Webseiten für SmartVISU
            smartvisu:
                class_name: SmartVisu
                class_path: plugins.visu_smartvisu
                # '"neue" Linux Versionen (z.B. Debian Jessie 8.x, Ubuntu > 14.x)'
                smartvisu_dir: /var/www/html/smartVISU
            
            # nur \"alte\" Linux-Variationen
            # smartvisu_dir = /var/www/smartVISU
            # generate_pages = True
            # handle_widgets = True
            # overwrite_templates = Yes
            # visu_style = blk
            # Command Line Interface
            # wichtig für Funktionsprüfungen solange keine Visu zur Verfügung steht
            cli:
                class_name: CLI
                class_path: plugins.cli
                ip: 127.0.0.1
                port: 2323
                update: 'True'
            
            # alter SQL-Treiber
            # [sql]
            # class_name = SQL
            # class_path = plugins.sqlite
            # SQL-Treiber, unterstützt auch die SmartVISU 2.8/2.9
            # dazu muß im websocket plugin zwingend die Protokollversion 4 eingetragen sein
            sql:
                class_name: SQL
                class_path: plugins.sqlite_visu2_8
                # Onewire Plugin
                # [ow]
                # class_name = OneWire
                # class_path = plugins.onewire
            /usr/local/smarthome/items/Erdgeschoss.yaml:
            Code:
            %YAML 1.1
            ---
            Erdgeschoss:
            
                Wohnzimmer:
                    name: Wohnzimmer
                    sv_page: room
                    sv_img: scene_livingroom.png
            
                Kueche:
                    name: Kueche
                    sv_page: room
                    sv_img: scene_cooking.png
            
                Diele:
                    name: Diele
                    sv_page: room
                    sv_img: scene_dinner.png
            
                Toilette:
                    name: Toilette
                    sv_page: room
                    sv_img: scene_toilet_alternat.png
            
                Bad:
                    name: Bad
                    sv_page: room
                    sv_img: scene_bath.png
            
                Schlafzimmer:
                    name: Schlafzimmer
                    sv_page: room
                    sv_img: scene_sleeping.png
            
                Hauswirtschaftsraum:
                    name: Hauswirtschaftsraum
                    sv_page: room
                    sv_img: scene_laundry_room.png
            
                Windfang:
                    name: Windfang
                    sv_page: room
                    sv_img: scene_corridor.png
            
                Arbeit:
                    name: Arbeitszimmer
                    sv_page: room
                    sv_img: scene_office.png
                    light: {}
            
                    ceiling:
                        name: Deckenlicht
                        type: bool
                        visu: 'yes'
                        knx_dpt: 1
                        knx_send: 1/0/6
                        knx_listen: 1/6/6
                        knx_init: 1/6/6
                        sv_widget: "{{ basic.switch('item', 'item', icon1~'light_ceiling_light.png', icon0~'light_ceiling_light.png') }} Deckenlicht"
            sudo /usr/local/smarthome/bin/smarthome.py --stop
            sudo /usr/local/smarthome/bin/smarthome.py --start

            Nun läuft auch der CLI unter dem Port 2323:
            netstat -nlt
            Code:
            Aktive Internetverbindungen (Nur Server)
            Proto Recv-Q Send-Q Local Address           Foreign Address         State
            tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
            tcp        0      0 127.0.0.1:2323          0.0.0.0:*               LISTEN
            tcp        0      0 0.0.0.0:34421           0.0.0.0:*               LISTEN
            tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
            tcp        0      0 0.0.0.0:2424            0.0.0.0:*               LISTEN
            tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN
            tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN
            tcp        0      0 192.168.178.51:8383     0.0.0.0:*               LISTEN
            tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN
            tcp        0      0 0.0.0.0:37476           0.0.0.0:*               LISTEN
            tcp        0      0 0.0.0.0:43432           0.0.0.0:*               LISTEN
            tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN
            tcp        0      0 0.0.0.0:38638           0.0.0.0:*               LISTEN
            tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN
            tcp6       0      0 :::80                   :::*                    LISTEN
            tcp6       0      0 :::45936                :::*                    LISTEN
            tcp6       0      0 :::22                   :::*                    LISTEN
            tcp6       0      0 :::445                  :::*                    LISTEN
            tcp6       0      0 :::54400                :::*                    LISTEN
            tcp6       0      0 :::6720                 :::*                    LISTEN
            tcp6       0      0 :::39681                :::*                    LISTEN
            tcp6       0      0 :::2049                 :::*                    LISTEN
            tcp6       0      0 :::47847                :::*                    LISTEN
            tcp6       0      0 :::139                  :::*                    LISTEN
            tcp6       0      0 :::111                  :::*                    LISTEN
            und cli läuft auch:

            cli
            Trying ::1...
            Trying 127.0.0.1...
            Connected to localhost.
            Escape character is '^]'.
            SmartHomeNG v1.4.d9859ca.dev
            Enter 'help' for a list of available commands.

            > update Erdgeschoss.Arbeit.ceiling = 1
            > ls Erdgeschoss.Arbeit.ceiling
            Items:
            ======
            Erdgeschoss.Arbeit.ceiling = True
            > update Erdgeschoss.Arbeit.ceiling = 0
            > ls Erdgeschoss.Arbeit.ceiling
            Items:
            ======
            Erdgeschoss.Arbeit.ceiling = False


            Gruß
            Holgi

            Kommentar


              #7
              Und nun habe ich auch meinen Fehler gesehen. Manchmal sieht man den Wald vor lauter Bäumen nicht:

              In /usr/local/smarthome/etc/plugin.yaml den Wert für smartvisu_dir korriegiert:

              Code:
              # Autogenerierung von Webseiten für SmartVISU
              smartvisu:
                  class_name: SmartVisu
                  class_path: plugins.visu_smartvisu
                  # '"neue" Linux Versionen (z.B. Debian Jessie 8.x, Ubuntu > 14.x)'
                  smartvisu_dir: /var/www/smartvisu
              und den Service neu gestartet:

              sudo /usr/local/smarthome/bin/smarthome.py --stop
              sudo /usr/local/smarthome/bin/smarthome.py --start

              Und ich habe die ersten Webseiten!

              ls -la /var/www/smartvisu/pages/smarthome/
              Code:
              insgesamt 40K
              drwxrwxrwx  2 www-data www-data 4,0K Apr 15 18:33 ./
              drwxrwxrwx 13 www-data www-data 4,0K Apr 15 18:33 ../
              -rw-r--r--  1 www-data www-data 1,5K Apr 15 18:33 category.html
              -rw-rw-rw-  1 www-data www-data   58 Apr 15 18:33 category_nav.html
              -rw-rw-rw-  1 www-data www-data  827 Apr 15 18:33 Erdgeschoss.Arbeit.html
              -rw-rw-rw-  1 www-data www-data    0 Apr 15 18:33 Erdgeschoss.Bad.html
              -rw-rw-rw-  1 www-data www-data    0 Apr 15 18:33 Erdgeschoss.Diele.html
              -rw-rw-rw-  1 www-data www-data    0 Apr 15 18:33 Erdgeschoss.Gast.html
              -rw-rw-rw-  1 www-data www-data    0 Apr 15 18:33 Erdgeschoss.Hauswirtschaftsraum.html
              -rw-rw-rw-  1 www-data www-data    0 Apr 15 18:33 Erdgeschoss.Kueche.html
              -rw-rw-rw-  1 www-data www-data    0 Apr 15 18:33 Erdgeschoss.Schlafzimmer.html
              -rw-rw-rw-  1 www-data www-data    0 Apr 15 18:33 Erdgeschoss.Toilette.html
              -rw-rw-rw-  1 www-data www-data    0 Apr 15 18:33 Erdgeschoss.Windfang.html
              -rw-rw-rw-  1 www-data www-data    0 Apr 15 18:33 Erdgeschoss.Wohnzimmer.html
              -rwxrwxrwx  1 www-data www-data  807 Apr 15 18:33 index.html*
              -rw-rw-rw-  1 www-data www-data   58 Apr 15 18:33 roomlite_nav.html
              -rw-rw-rw-  1 www-data www-data 2,2K Apr 15 18:33 room_nav.html
              -rwxrwxrwx  1 www-data www-data  441 Apr 15 18:33 rooms.html*
              -rwxrwxrwx  1 www-data www-data  445 Apr 15 18:33 roomslite.html*
              Im Browser kann ich nun auch SmartHome auswählen.

              Aber mein Deckenlicht kann ich leider noch nicht über den Browser schalten.

              Das steht in /var/www/smartvisu/pages/smarthome/Erdgeschoss.Arbeit.html:
              Code:
              /**
              * -----------------------------------------------------------------------------
              * @package     smartVISU
              * @author      Martin Gleiß
              * @copyright   2012
              * @license     GPL [http://www.gnu.de]
              * -----------------------------------------------------------------------------
              */
              
              
              {% extends "rooms.html" %}
              
              {% block content %}
              
                      <h1><img class="icon" src='{{ icon0 }}scene_office.png' />Arbeitszimmer</h1>
              
              
                      <div class="block">
                      <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
              
                              <div data-role="collapsible" data-collapsed="false">
                                      <h3>Deckenlicht</h3>
                                      {{ basic.switch('Erdgeschoss.Arbeit.ceiling', 'Erdgeschoss.Arbeit.ceiling', icon1~'light_ceiling_light.png', icon0~'light_ceiling_light.png') }} Deckenlicht
                              </div>
              
                      </div>
              </div>
              
              
              {% endblock %}
              Wa ist das Problem? Das Schalten von Erdgeschoss.Arbeit.ceiling in der CLI hat doch funktioniert.

              Zur Erinnerung: das war in dem Arbeitszimmer-Abschnitt in Erdgeschoss.yaml:
              Code:
                  Arbeit:
                      name: Arbeitszimmer
                      sv_page: room
                      sv_img: scene_office.png
                      light: {}
              
                      ceiling:
                          name: Deckenlicht
                          type: bool
                          visu: 'yes'
                          knx_dpt: 1
                          knx_send: 1/0/6
                          knx_listen: 1/6/6
                          knx_init: 1/6/6
                          sv_widget: "{{ basic.switch('item', 'item', icon1~'light_ceiling_light.png', icon0~'light_ceiling_light.png') }} Deckenlicht"
              Über das Backend im items-Abschnitt lässt sich die Deckenlampe per "true" und "false" schalten.

              Gruß
              Holger
              Zuletzt geändert von HolgiM; 15.04.2017, 18:07.

              Kommentar


                #8
                Hallo noch mal,

                nachdem ich die Erdgeschoss.yaml an einer Stelle korrigiert habe, kann ich auch über das Icon mein Deckenlicht schalten.

                Es fehlte:

                visu_acl: rw

                Die ganzen Parameter muss ich nun noch verstehen lernen.

                Noch frohe Ostern

                Holgi

                Kommentar

                Lädt...
                X