Ankündigung

Einklappen
Keine Ankündigung bisher.

SmartHome.py 1.0 Beta - Bitte Testen

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

    SmartHome.py 1.0 Beta - Bitte Testen

    Hallo,

    bald ist es soweit. Am Donnerstag den 14.11.2013 möchte ich das nächste Release veröffentlichen. Deshalb bitte ich Euch noch einmal auf Herz und Nieren zu testen.

    Es gibt viele neue Plugins und unter Haube hat sich sehr viel getan.
    So basiert SmartHome.py auf Python 3.2, das viele Änderungen nach sich gezogen hat.

    Bitte macht als erstes ein Backup des SH.py Ordners.

    Es kann mit dem aktuellen Beta-Image oder auf einem normalen Linux System getestet werden.

    Die Image Benutzer bitte Konfig sicher, einfach Beta-Image runterladen/installieren und im smartControl noch einmal auf update drücken. Danach die Konfig einspielen und loslegen.

    Für die anderen ist es ein bisschen mehr Arbeit:

    Code:
    $ cd SMARTHOME_DIRECTORY
    $ git pull
    $ git checkout develop
    
    # python3 installieren
    $ sudo apt-get install python3 python3-dev python3-setuptools
    
    # für Sonnenaufgang & Co.
    $ sudo easy_install3 pip
    $ sudo pip-3.2 install ephem
    
    # Wenn man das rrd Plugin nutzen möchte
    apt-get install librrd-dev
    cd lib/3rd/rrdtool
    python3 setup.py install
    
    # Es müssen evtl. kleine Anpassungen an den Logiken vorgenommen werden
    # der folgende Befehl zeigt Änderungen an
    2to3-3.2 -f idioms -f all meinelogik.py
    # der folgende übernimmt die 'Änderungen
    2to3-3.2 -f idioms -f all -w meinelogik.py
    
    # Python3 nutzt die pyc Files nicht mehr, die können gelöscht werden
    find . -name *.pyc -type f -print0 | xargs -0 /bin/rm -f
    
    # Das Config-Format hat sich leicht geändert. Statt ',' werden '|' für das Aufteilen von Attributen verwendet.
    # 'visu = yes'  wird zu 'visu_acl = rw'
    # Es gibt ein kleines Script das die Konvertierung übernimmt
    # Unter items/NAME.conf.bak liegt die alte Config die nach erfolgreicher Migration gelöscht werden kann
    # Das eigentliche Skript bitte nur einmal ausführen!
    $ ./tools/conf2-1.0.sh
    Ich werde die kommenden Tage primär mit Testen und Dokumentation verbringen, deswegen kann ich nur eingeschränkten Support leisten. Ich werde mitlesen aber nur bei Bugs eingreifen/reagieren.

    Freue mich auf Feedback und reges testen.

    Bekannte Fehler:
    • Keine


    Bis bald

    Marcus

    #2
    bin gerade gleich mal über ein kleines Problem gestolpert:

    Code:
    $ /etc/init.d/smarthome.py start
    usage: smarthome.py [-h] [-v | -d | -i | -l | -s | -q | -V | --start]
    smarthome.py: error: argument --start: not allowed with argument -d/--debug
    wieso kann man kein Debug mehr mit dem Dienst verwenden?

    Kommentar


      #3
      Nächstes Problem:

      Code:
      2013-11-10 20:37:22 ERROR    Main         Problem reading eg.conf: string index out of range
      Traceback (most recent call last):
        File "/usr/local/smarthome/bin/smarthome.py", line 291, in start
          item_conf = lib.config.parse(self._items_dir + item_file, item_conf)
        File "/usr/local/smarthome/lib/config.py", line 98, in parse
          item[attr] = [strip_quotes(x) for x in value.split('|')]
        File "/usr/local/smarthome/lib/config.py", line 98, in <listcomp>
          item[attr] = [strip_quotes(x) for x in value.split('|')]
        File "/usr/local/smarthome/lib/config.py", line 30, in strip_quotes
          if string[0] in ['"', "'"]:  # check if string starts with ' or "
      IndexError: string index out of range
      eg.conf - Pastebin.com

      Kommentar


        #4
        Zitat von TCr82 Beitrag anzeigen
        Code:
        $ /etc/init.d/smarthome.py start
        usage: smarthome.py [-h] [-v | -d | -i | -l | -s | -q | -V | --start]
        smarthome.py: error: argument --start: not allowed with argument -d/--debug
        wieso kann man kein Debug mehr mit dem Dienst verwenden?
        -v sollte da passen

        Zitat von TCr82 Beitrag anzeigen
        Nächstes Problem: [...] eg.conf - Pastebin.com
        Probier mal 10% der conf zu starten. Tippe auf die '' in deinen Widgets. Dass kannst du aber nur rausfinden, wenn du die Datei mal zerlegst/stufenweise reinnimmst.

        Grüße
        Robert

        Kommentar


          #5
          ich hab den Fehler so behoben:

          Code:
          diff --git a/lib/config.py b/lib/config.py
          index e9c7633..efe2a32 100755
          --- a/lib/config.py
          +++ b/lib/config.py
          @@ -27,6 +27,10 @@ logger = logging.getLogger('')
           
           def strip_quotes(string):
               string = string.strip()
          +
          +    if len(string) == 0:
          +        return string
          +
               if string[0] in ['"', "'"]:  # check if string starts with ' or "
                   if string[0] == string[-1]:  # and end with it
                       if string.count(string[0]) == 2:  # if they are the only one
          Obwohl ich jetzt so beim durchschauen kein Item mit = (dann ohne folgenden Text) gefunden habe.

          Aber so gibt es keinen Fehler mehr, aber es werden leider keine Visu Seiten mehr erzeugt.

          Werde das mal mit dem -v ausprobieren.

          EDIT:
          ne funzt auch nicht:
          Code:
          usage: smarthome.py [-h] [-v | -d | -i | -l | -s | -q | -V | --start]
          smarthome.py: error: argument --start: not allowed with argument -v/--verbose
          ach und das die visu seiten nicht erzeugt werden liegt wohl an meinen änderungen... seltsamerweise zeigt er mir das erst mit starten mit --debug oder ich hab es tatsächlich vorher mit dem tail übersehen...

          Code:
          Exception in thread visu:
          Traceback (most recent call last):
            File "/usr/lib/python3.2/threading.py", line 740, in _bootstrap_inner
              self.run()
            File "/usr/local/smarthome.new/lib/plugin.py", line 84, in run
              self.plugin.run()
            File "/usr/local/smarthome.new/plugins/visu/__init__.py", line 132, in run
              self._smartvisu_pages(self.smartvisu_dir)
            File "/usr/local/smarthome.new/plugins/visu/__init__.py", line 70, in _smartvisu_pages
              smartvisu.pages(self._sh, directory)
            File "/usr/local/smarthome.new/plugins/visu/smartvisu.py", line 127, in pages
              r = room(smarthome, item, tpldir)
            File "/usr/local/smarthome.new/plugins/visu/smartvisu.py", line 61, in room
              heading = parse_tpl(tpldir + '/heading.html', [('{{ visu_heading_right }}', heading_right), ('{{ visu_heading_center }}', heading_center), ('{{ visu_heading_left }}', heading_left)])
            File "/usr/local/smarthome.new/plugins/visu/smartvisu.py", line 38, in parse_tpl
              tpl = tpl.replace(s, r)
          TypeError: Can't convert 'list' object to str implicitly
          Wieso funktioniert das nicht mehr? Eine Idee? Das war in der vorherigen Version kein Problem?!

          Vermute mal das hängt mit meinem vorherigen Fehler zusammen? Was wurde bzgl. des Phrasen der Zeilen geändert?

          Kommentar


            #6
            Hallo Thomas,

            wo kommen die ganzen '|' her?

            z.B.
            Code:
             sv_widget = {{ device.rtr('item' | '' | 'item' | 'item.set' | 'item.mode' | 'item.night' | 'item.frost' | 'item.state') }}
            Du hast nicht das conf2-1.0 script verwendet, oder?
            Die sind an der Stelle falsch.

            Ich schaue mir es morgen noch mal genauer an.

            Bis bald

            Marcus

            Kommentar


              #7
              Ach und die Start-Optionen sind exklusiv.
              Entweder -v oder -d oder --start...

              Bis bald

              Marcus

              Kommentar


                #8
                Zitat von mknx Beitrag anzeigen
                wo kommen die ganzen '|' her?

                z.B.
                Code:
                 sv_widget = {{ device.rtr('item' | '' | 'item' | 'item.set' | 'item.mode' | 'item.night' | 'item.frost' | 'item.state') }}
                Du hast nicht das conf2-1.0 script verwendet, oder?
                Die sind an der Stelle falsch.
                Ähm ja habe das Skript verwendet - so sah es vorher aus:

                Code:
                            sv_widget = "{{ device.rtr('item', '', 'item', 'item.set', 'item.mode', 'item.night', 'item.frost', 'item.state') }}"
                Ist mir gar nicht aufgefallen, dass das so falsch raus gekommen ist.

                Kommentar


                  #9
                  Hallo Thomas,

                  sorry, ich habe einen Bug im conf2 script gefunden.
                  Bitte Backup einspielen bzw. die bak Dateien reaktivieren und noch mal das script aufrufen.

                  Bis bald

                  Marcus

                  Kommentar


                    #10
                    Hallo Marcus,

                    ganz anderes Thema: Bin nach Deiner Anleitung das Beta Image installiert. Ich bekomme dann aber in der Visu 2.8 angezeigt ??? Ich habe definitiv nur einmal update im smartcontrol gemacht.

                    Irgendwie werden die per auto generierten HTML Seiten seit dem2.1b anders benannt. Ich hatte führende Zahlen, um die Ordnung der Dateien in der Visu zu bekommen. Dieser wurden in der 0.9 noch 1:1 umgesetzt. Jetzt erkenne ich keinen Umsetzungsalgorithmus mehr (oh ich glaube das ist jetzt das Root pro Seite). Zahlen werden einfach weggeworfen usw. War das gewollt ? Ich bekomme jetzt zusätzliche Ordnungskriterien rein, die ich in der Referenzierung der Items ja gar nicht brauche (nur den text länger machen)

                    Unter items:
                    Code:
                    -rw-rw-r--  1 admin admin 3259 Oct 10 12:41 200_dg.conf
                    -rw-rw-r--  1 admin admin  736 Oct 13 16:27 300_og.conf
                    -rw-rw-r--  1 admin admin 4022 Oct 14 06:28 400_eg.conf
                    -rw-rw-r--  1 admin admin  378 Nov  4 14:51 410_telefon.conf
                    -rw-rw-r--  1 admin admin  515 Oct 15 10:27 500_kg.conf
                    -rw-rw-r--  1 admin admin 1938 Nov  6 16:36 600_garage.conf
                    -rw-rw-r--  1 admin admin 1206 Nov  6 15:41 610_squeezebox.conf
                    -rw-rw-r--  1 admin admin  744 Oct 17 17:40 700_garten_sued.conf
                    -rw-rw-r--  1 admin admin  744 Oct  9 10:44 800_garten_nord.conf
                    -rw-rw-r--  1 admin admin 1478 Oct 17 17:40 900_temperaturen.conf
                    -rw-rw-r--  1 admin admin 2818 Oct 21 16:12 910_heizung.conf
                    -rw-rw-r--  1 admin admin 1871 Nov  6 16:12 920_zaehler.conf
                    Unter pages nach restart sh.py:

                    Code:
                    -rw-rw-r--  1 admin admin 2002 Nov 11 09:04 dg.html
                    -rw-rw-r--  1 admin admin 3230 Nov 11 09:04 eg.html
                    -rw-rw-r--  1 admin admin 1589 Nov 11 09:04 garage.html
                    -rw-rw-r--  1 admin admin 1078 Nov 11 09:04 gn.html
                    -rw-rw-r--  1 admin admin 1078 Nov 11 09:04 gs.html
                    -rw-rw-r--  1 admin admin 2455 Nov 11 09:04 heiz.html
                    -rw-r--r--  1 admin admin  809 Nov 11 09:04 index.html
                    -rw-rw-r--  1 admin admin 1016 Nov 11 09:04 kg.html
                    -rw-rw-r--  1 admin admin  756 Nov 11 09:04 multimedia.html
                    -rw-rw-r--  1 admin admin 1945 Nov 11 09:04 navigation.html
                    -rw-rw-r--  1 admin admin 1083 Nov 11 09:04 og.html
                    -rw-r--r--  1 admin admin  443 Nov 11 09:04 rooms.html
                    -rw-rw-r--  1 admin admin 1042 Nov 11 09:04 telefon.html
                    -rw-rw-r--  1 admin admin 2434 Nov 11 09:04 temperaturen.html
                    -rw-rw-r--  1 admin admin 1881 Nov 11 09:04 zaehler.html

                    Weiterer Punkt in Ergänzung, kann auch etwas für Apollo sein:

                    Ich hatte basic. image verwendet. Das wurde ja nach multimedia.image verschoben. Gesehen hatte ich gleicher Syntax, bekomme aber kein Bild mehr. Hatte nur im Widget basic.image durch multimedia.image ersetzt. Anscheinend geht bei der Autogenerierung etwas ab.

                    Letzter Punkt nach meinem ersten Test: Die Phone Widgets werden auch in 2.1b nicht korrekt gegenriert (hattest du ja für 0.9 angemerkt). Ich brauche nach wie vor

                    Code:
                    sv_widget = "{% import "phone.html" as phone %} {{ phone.list('item') }}"
                    um die Listen sichtbar zu machen. Habe aber im aktuellen Release jetzt in der Liste am Anfang und am Ende Anführungszeichen drin stehen, die hatte ich bei 0.9 noch nicht.

                    Grüsse

                    Michel

                    Kommentar


                      #11
                      Hallo Michel,

                      das Beta-Image läuft mit den beiden Entwicklungszweigen von SH.py und smartVISU. Die SV Entwicklung ist schon bei 2.8...

                      Ich glaube Du irrst Dich was den Filenamen der generierten Seiten angeht.
                      Die Name waren und sind irrelevant und werden nicht ausgewertet.
                      Entscheidend sind die Itemnamen.

                      Trag mal:

                      Code:
                      sv_widget = {% import "phone.html" as phone %} {{ phone.list('item') }}
                      ein. Das sollte klappen.

                      Bis bald

                      Marcus

                      Kommentar


                        #12
                        Hallo Marcus,

                        danke für den Hinweis, mit den Telefonlisten hat esgeklappt. Hätte ich auch probieren können.

                        Wegen den Filenamen: Schande über mein Haupt, hatte ich falsch in Erinnerung. Ich hatte das nur eingeführt (Standardvorgehen bei mir) um Dinge zu sortieren, weil ich die Einträge im Hauptmenü immer ungeordnet bekommen habe. Nach diesen Filenamen war es in 0.9 sortiert (warum auch immer, ich vermute bei der Generierung mach python3.2 etwas anders wie 2.7). Mit der sh 1.0 war es wieder unsortiert.

                        Gibt es eine Möglichkeit, die Reihenfolge irgendwie zu beeinflussen, ohne hinterher die HTML Datei anzufassen ?

                        Michel

                        Kommentar


                          #13
                          Hallo Michel,

                          Zitat von Orion Beitrag anzeigen
                          Gibt es eine Möglichkeit, die Reihenfolge irgendwie zu beeinflussen, ohne hinterher die HTML Datei anzufassen ?
                          dazu habe ich spontan keine Antwort. Das müsste ich mir nach dem Release noch mal ansehen. Mach dann bitte dazu einen neuen Thread auf.

                          Bis bald

                          Marcus

                          Kommentar


                            #14
                            Glaube einen Bug gefunden zu haben:

                            Sunset in crontab:

                            logic.conf
                            Code:
                            [Logi_Wecker]
                                filename = logi_wecker.py
                                watch_item = schlafzimmer.irgend.ein.item 
                                crontab = 0 9 * * = auf | 0 21 * * = ab | sunset-31 = sonneda
                            Console:
                            Code:
                            >>> sh.scheduler._scheduler['Logi_Wecker']
                            {'obj': <lib.logic.Logic object at 0x7fa0a404ded0>, 'prio': 3, 'value': 'sonneda', 'next': datetime.datetime(2013, 11, 11, 19, 6, 48, 583071, tzinfo=tzutc()), 'cron': {'sunset-31': 'sonneda', '0 9 * *': 'auf', '0 21 * *': 'ab'}, 'active': True, 'cycle': None}
                            >>> sh.sun.set(-31)
                            datetime.datetime(2013, 11, 11, 19, 6, 48, 583859, tzinfo=tzutc())
                            >>>
                            Aber um 19:06:48h wurde leider keine Logik getriggert...

                            LG

                            Mode

                            Kommentar


                              #15
                              Hallo Daniel,

                              geduld, ist ja auch erst um 20:06 so weit (UTC).

                              Bis bald

                              Marcus

                              Kommentar

                              Lädt...
                              X