Ankündigung

Einklappen
Keine Ankündigung bisher.

Wichtige Änderung bei dem Start von smarthome.py

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

    Wichtige Änderung bei dem Start von smarthome.py

    Hallo,

    ich habe gerade eine wichtige Änderung in den devlop Branch geschoben, diese wird bei 1.0 in den master branch wandern.

    Angeregt von https://knx-user-forum.de/smarthome-...-sh-items.html habe ich einen interaktiven Modus implementiert. Dieser erlaubt das interagieren mit dem 'sh'-Objekt bekannt aus Logiken und Plugins.

    Code:
    >>> sh.now()
    datetime.datetime(2013, 8, 21, 17, 18, 24, 328278, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Berlin'))
    Im Zuge dessen habe ich auch die Startargumente bereinigt. Siehe sehen jetzt so aus:
    Code:
    $ smarthome.py -h
    usage: smarthome.py [-h] [-v | -d | -i | -s | -q | --start]
    
    optional arguments:
      -h, --help         show this help message and exit
      -v, --verbose      verbose logging to the logfile
      -d, --debug        stay in the foreground with verbose output
      -i, --interactive  open an interactive shell with tab completion and with
                         verbose logging to the logfile
      -s, --stop         stop SmartHome.py
      -q, --quiet        reduce logging to the logfile
      --start            start SmartHome.py and detach from console (default)
    Da ich grundlegend in dem File aufgeräumt habe, kann es Anfangs noch zu kleinen Problemen kommen.

    Bis bald

    Marcus

    #2
    Wichtige Änderung bei dem Start von smarthome.py

    Wow, interaktiver Modus... ist ja extrem geil! Das erleichtert die Entwicklung enorm. Danke dafür!!!!
    Mit freundlichen Grüßen
    Niko Will

    Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
    - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

    Kommentar


      #3
      Klasse, sogar mit Auto-Vervollständigung!

      Ich würde mir noch ein
      reload(configfilename)
      reload(ALL)

      wünschen.
      So könnte man Änderungen schnell testen.
      Ich frage mich aber im nächsten Schritt, ob das besser wäre als ein Neustart von sh.py. Ich denke nur, dass man dadurch die Shell behält, inkl. der History und dass auch alle Werte initialisiert/vorhanden bleiben.

      Was meint ihr?

      Gruß,
      HEndrik

      Kommentar


        #4
        Hallo,

        Zitat von henfri Beitrag anzeigen
        Was meint ihr?
        das wird nix. Beim einlesen/initialisieren der Konfig passiert sehr viel. Das ist nicht darauf ausgelegt in laufenden Betrieb neu eingelesen zu werden.

        Was man bereits machen kann, sind Logiken neu einlesen. Also, im aktuellen devlop.
        reload_logics()

        Bis bald

        Marcus

        Kommentar


          #5
          Hallo,

          Zitat von henfri Beitrag anzeigen
          inkl. der History
          gerade in develop eingecheckt.

          Bis bald

          Marcus

          Kommentar


            #6
            ??
            Gab es doch vorher schon
            Oder was meinst Du?

            von Unterwegs getippert

            Kommentar


              #7
              Hi,

              es gab eine History der Befehle die eingeben hat. Diese wird nun gespeichert und steht beim nächsten Starten wieder zur Verfügung.

              Das wolltest Du doch. Ich auf jeden Fall will es ;-)

              Bis bald

              Marcus

              Kommentar


                #8
                Hi, ich würde das gerne zur Plugin Optimierung benutzen. Aber wie greift man auf das Plugin Objekt zu, um variablen dort zu ändern?

                Kommentar


                  #9
                  Ich würde das Backendplugin dafür nehmen. Kann eigentlich genau das.

                  Gruss,

                  Stefan
                  Sonos

                  Kommentar


                    #10
                    Naja, schön und gut.. aber es ist doch sicher auch so möglich.
                    Ich entwickle mein Plugin zur Zeit noch auf dem alten smarthome.py, da ich das noch im einsatz habe in meinem live system.
                    Vielleicht ändere ich das mal bald, aber auch dann wäre es schön zu wissen wie man auf die plugin parameter von der interaktiven shell zugreifen kann.

                    Kommentar


                      #11
                      ok, ich habe es mittlerweile selbst herausbekommen.
                      Wenn das Plugin über die plugin.conf wie folgt iniziert wurde:

                      Code:
                      [meinplugin]
                          class_name = MeinPlugin
                          class_path = plugins.meinplugin
                      dann kann man die Instanz auf der Shell mit sh.meinplugin erreichen.
                      z.B. kann man sich die variablen so anzeigen lassen
                      Code:
                      from inspect import getmembers
                      from pprint import pprint
                      pprint(getmembers(sh.meinplugin))
                      Zuletzt geändert von TCr82; 09.03.2017, 19:10.

                      Kommentar


                        #12
                        TCr82 das mit den Variablen klingt noch nach ner netten Idee für das Backend Plugin, danke!

                        Kommentar


                          #13
                          hab es so verstanden als wenn es schon drinnen wäre?

                          Aber naja... so is das schonmal prima.. ich kann meine Regler Parameter im Live Betrieb verändern um die Formel zu optimieren. Klar könnte man auch weitere Items dafür anlegen die man dann zuordnet.. aber so ist es einfach viel flexibler.

                          Kommentar

                          Lädt...
                          X