Ankündigung

Einklappen
Keine Ankündigung bisher.

Inhalt einer Textdatei auf den Bus senden

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

    Inhalt einer Textdatei auf den Bus senden

    Gutes Neues euch allen!

    ich möchte die Daten meiner Paradigma SystaComfort auf den KNX Bus senden, und hoffe dass ihr mir weiterhelfen könnt.

    TL;DR - wie kann ich Werte aus einer Textdatei per groupwrite / groupswrite aufbereiten und auf den Bus senden?

    Ausgangslage:
    Um die Funktion einer Paradigma Solaranlage samt angeschlossenem Pufferspeicher auf den Bus zu bekommen, kommen mehrere Wege in Frage, hier im Forum wurden auch schon einige diskutiert (Servicemodul, LON auseinandernehmen etc).
    Da ich meine Werte über einen SystaWeb Zugang abfragen kann, lag es für mich am nächsten die Werte direkt aus dem Webinterface zu übernehmen. Dort werden die Werte in Tabellenform ausgegeben und per Ajax aktualisiert. Das war ein wenig fummelig, aber ich hole nun per Cron Job alle zwei Minuten die Werte dort ab und schreibe sie in eine Textdatei. (Auf Wunsch erläutere ich die Vorgehensweise, bitte kurze Nachricht)

    Die Textdatei besteht nun im Wesentlichen aus Datenpaaren (ID:Wert) mit folgenden Inhalt:
    Code:
    {"showInfo":0,"changeExists":0,"changeMsg":[],"values":{"245614":"0","245615":"1","245616":"1","245617":"0","245618":"0","245619":"0","245620":"0","245621":"0","245622":"0","245623":"0","245624":"0","245625":"1","245626":"0","275049":"0","265973":"1","245628":"0","245630":"1","266835":"0","266836":"0","266837":"0","245631":"0","245633":"0","245632":"0","286758":"0","286759":"0","286760":"0","286761":"0","245634":"550","245635":"Auto","245636":"Vorrang W\u00e4rmesenke 1","245637":"800","245638":"800","245639":"Keine","275422":"0","254999":"0","255000":"0","255001":"0","245641":"0","245642":"3","245643":"15","245644":"50","245646":"950","245647":"0","265974":"850","245648":"50","245650":"400","265975":"100","265976":"OPTIMA\/EXPRESSO","245652":"195","245653":"210","245654":"155","245655":"Automatik 1","245656":"450","245657":"500","245658":"50","245659":"350","245660":"13","245661":"650","245662":"200","245663":"100","245664":"20","245665":"120","245666":"0","245667":"0","245668":"200","245669":"100","245670":"2","245671":"50","245672":"30","245673":"0","245674":"Au\u00dfentemperatur","245675":"200","245676":"220","245677":"150","245678":"Automatik 1","245679":"100","245680":"100","245681":"350","245682":"13","245683":"700","245684":"200","245685":"100","245686":"20","245687":"120","245688":"0","245689":"0","245690":"200","245691":"100","245692":"2","245693":"50","245694":"30","245695":"0","245696":"Au\u00dfentemperatur","245697":"200","245698":"220","245699":"150","245700":"Automatik 1","245701":"350","245702":"13","245703":"700","245704":"200","245705":"100","245706":"20","245707":"120","245708":"0","245709":"200","245710":"100","245711":"2","275423":"Au\u00dfentemperatur","245712":"250","245713":"280","245714":"Automatik 1",
    -gekürzt-

    Die sechsstelligen Ziffern repräsentieren den übertragenen Wert, ich habe eine Zuordnungstabelle begonnen:

    • 245534 Kollektor -TSA-
    • 245542 Kollektor Maximum
    • 245543 Solare Leistung
    • 245544 Tagesgewinn
    • 245545 Solargewinn
    • 245538 Aussentemperatur -TAM-
    • 245535 Solarruecklauf -TSE-
    • 245536 Solarvorlauf -TSV-
    • 245537 Speicher Oben -TW-
    • 245540 Volumenstrom
    • 245541 Speicher Oben -TW2-
    • 245546 Kollektor 1 -TSA 1-
    • 245548 Laufzeit Pumpe
    • 245549 Zeit TSA MAX
    • ... etc

    Die ist nur eine Zwischenlösung, denn die Werte sollen ja auf den Bus.

    Ich habe ein wenig mit sed, grep etc herumprobiert, komme jedoch nicht weiter.

    Soweit ich das erkennen kann, sind die folgenden Schritte notwendig:
    - Zuordnen der ID zur GA (items.conf? - die Daten sollen auch in den Logger)
    - Umrechnen des Wertes entsprechend Datentyp (Temperaturwerte müssen noch durch 10 dividiert werden)
    - senden per groupwrite

    Meine Frage:
    Kann ich auf Funktionen innerhalb von smarthome zurückgreifen um das zu realisieren? Oder kann/muss man das mit einem Skript erledigen? Habe leider keine Programmierkenntnisse, weshalb ich für konkrete Beispiele sehr dankbar bin.

    Ich hoffe dass ich mich nachvollziehbar ausgedrückt habe, und danke euch schonmal fürs mitdenken

    #2
    Hallo,
    nachdem was Du darüber schreibst, was du schon geschafft hast, sollte es nur noch ein kleiner Schritt sein, ein Plugin für SH daraus zu machen. Besser: ein vorhandenes um zu stricken. (ZB das ecmd Plugin könnte eine Ausgangsbasis sein.)
    So ein Plugin holt zyklisch die Daten von einem externen System und füttert damit die items in den SH Struktur. Wenn die Items wiederum mit knx Gruppenadressen verknüpft sind, hast du die Werte automatisch auf dem Bus. - und auch fast nebenbei mit Plots in einer Visu.
    DW

    Kommentar


      #3
      Hi walldi,

      das kling ja schon erfreulich, dass man ein Plugin dafür nutzen könnte.

      Ich bin nun kein Programmierer, wenn ich das ECMD Plugin richtig verstanden habe würde ich zuerst meine generierte Datei über http abrufbar machen, notfalls auf dem localhost.

      Ab hier weiß ich nicht weiter, mein ungeübtes Auge kann im Quellcode nicht erkennen, wo ich ansetzen muss. Ist das folgende korrekt?

      Zeile 40 der __init.py__ im plugins Verzeichnis
      Code:
          def __init__(self, host='127.0.0.1', port=2701):
              self.host = host
              self.port = int(port)
              self._lock = threading.Lock()
              self.connected = False
              self._connection_attempts = 0
              self._connection_errorlog = 60
      Hier definiere ich, von wo die Datei geholt wird.

      Zeile 67:
      Code:
          def request(self):
              #  name: request
              #  get a table of all DS1820 sensors and their names and values,
              #  separated by '\t' and terminated by 'OK\n':
              #     10f01929020800dc  sensor1 26.4
              #     100834290208001b  sensor2 25.4
              #     OK
              #  @return dict {'addr' : value}
              #
      Dies sagt mir, wie die Datei aufgebaut sein muss. Also muss ich die vorher in das entsprechende Format bringen. Sollte ich mit sed hinbekommen:

      Statt "10f01929020800dc" würde ich meine 6stellige ID verwenden
      "sensor1" entferne ich
      "26.4" ist der Wert

      Ist das grundsätzlich richtig? Nehme ich die Änderrungen in der __init.py__ vor oder an anderer Stelle? Sorry fürs blöde Fragen, für mich ist das wirklich eine Black Box.

      Kommentar


        #4
        Vielleicht so:
        Das was du mit cron in die Textdatei machst, machst du im Plugin mit der refresh Funktion in ein Dict. Direkt vom Server. Der SH Scheduler führt das dann regelmäßig aus.
        Hast du die Routine evtl in Python geschrieben? Sonst zeig mal das Skript. Über die Textdatei brauchst du dann nicht zu gehen.

        Kommentar


          #5
          per cron lasse ich den folgenden Befehl laufen:

          Code:
          curl 'http://paradigma.remoteportal.de/ajax.php' -H 'Host: paradigma.remoteportal.de' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:34.0) Gecko/20100101 Firefox/34.0' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Accept-Language: de,en-US;q=0.7,en;q=0.3' -H 'Accept-Encoding: gzip, deflate' -H 'DNT: 1' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'X-Requested-With: XMLHttpRequest' -H 'Referer: http://paradigma.remoteportal.de/index.php?pto[area]=-controller' -H 'Cookie: ibb=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' -H 'Connection: keep-alive' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' --data 'call=controller.status&param%5BcontrollerId%5D=XXXXX&param%5Bmode%5D=text' > /root/systawerte.csv
          Der Aufruf funktioniert, weil die Authentifizierung über das in einer vorherigen Session bereits abgerufenen Cookie ("ibb=") realisiert wird.
          Wie unschwer erkennbar ist, habe ich den Aufruf nicht selbst formuliert, sondern mittels firebug "abgefangen".

          Kommentar


            #6
            jetzt kannst Du wahrscheinlich diese Zeile in Python mit
            Code:
            [COLOR=Black]import [/COLOR][COLOR=#dc143c][COLOR=Black]subprocess
            import json
            [/COLOR]
            [/COLOR]json_text = subprocess.check_output([curl  'http://....])
            # oder vielleicht besser mit json_text = tools.fetch_url(....)  ???
            
            # analog zB zum ecmd Plugin
            table["245534"] = json_text["values"]["245534"]   #   Kollektor -TSA-
            table["245542"] ....                               #   Kollektor Maximum
            
            # oder komplett:
            
            table = json_text["values"]
            ausführen und dann den JSON-Code direkt parsen.

            In den Items legst Du dann die IDs als Attribute an, zB:

            HTML-Code:
            [solar]
                 [[Kollektor-TSA]]
                     paradigmaSystaComfort_ID = 245534
            .... ungetestet / ungefähr so könnte es gehen.

            Kommentar


              #7
              Hi walldi

              ich habe das nun wie folgt umgesetzt:

              __init.py__:
              Code:
              import subprocess
              import json
              
              json_text = subprocess.check_output([curl 'http://paradigma.remoteportal.de/ajax.php' -H 'Host: paradigma.remoteportal.de' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:34.0) Gecko/20100101 Firefox/34.0' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Accept-Language: de,en-US;q=0.7,en;q=0.3' -H 'Accept-Encoding: gzip, deflate' -H 'DNT: 1' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'X-Requested-With: XMLHttpRequest' -H 'Referer: http://paradigma.remoteportal.de/index.php?pto[area]=-controller' -H 'Cookie: ibb=---' -H 'Connection: keep-alive' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' --data 'call=controller.status&param%5BcontrollerId%5D=---&param%5Bmode%5D=text'])
              
              table["245534"] = json_text["values"]["245534"]   #Kollektor -TSA-
              table["245542"] = json_text["values"]["245542"]   #Kollektor Maximum
              table["245543"] = json_text["values"]["245543"]   #Solare Leistung
              table["245544"] = json_text["values"]["245544"]   #Tagesgewinn
              table["245545"] = json_text["values"]["245545"]   #Solargewinn
              table["245538"] = json_text["values"]["245538"]   #Aussentemperatur -TAM-
              table["245535"] = json_text["values"]["245535"]   #Solarruecklauf -TSE-
              table["245536"] = json_text["values"]["245536"]   #Solarvorlauf -TSV-
              table["245537"] = json_text["values"]["245537"]   #Speicher Oben -TW-
              table["245540"] = json_text["values"]["245540"]   #Volumenstrom
              table["245541"] = json_text["values"]["245541"]   #Speicher Oben -TW2-
              table["245546"] = json_text["values"]["245546"]   #Kollektor 1 -TSA 1-
              table["245548"] = json_text["values"]["245548"]   #Laufzeit Pumpe
              table["245549"] = json_text["values"]["245549"]   #Zeit TSA MAX
              table["245564"] = json_text["values"]["245564"]   #Puffer Sollwert
              table["245565"] = json_text["values"]["245565"]   #Puffer oben -TPO-
              table["245566"] = json_text["values"]["245566"]   #Betriebsstunden
              table["245567"] = json_text["values"]["245567"]   #Kesselvorlauf -TV-


              In der plugin.conf den folgenden Abschnitt hinzugefügt:

              Code:
              [paradigma]
                  class_name = PARADIGMA
                  class_path = plugins.paradigma
                  update = True
              Ist das korrekt?
              die bearbeitete Kopie Deines Plugins habe ich im Ordner .smarthome/plugins/paradigma/ abgelegt.

              Wie definiere ich das update-Intervall? Ich denke dass 5 Minuten ausreichen, das ist seltener als die Aktualisierungen im Browser und sollte bei Paradigma niemanden ärgern.

              in der items.conf habe ich eingefügt:

              Code:
              [Haustechnik]
              	[[Paradigma]]
              		[[[Kollektor-TSA]]]
              				paradigmaSystaComfort_ID = 245534
              				name = Kollektor (TSA)
              				type = num
              				visu = no
              				knx_dpt = 9
              				knx_listen = 7/0/1
              				knx_send = 7/0/1

              Wie verknüpfe ich nun "paradigmaSystaComfort_ID" mit den Werten aus der __init.py__ ?

              Schonmal ein großes Dankeschön für Deine Hilfe bisher.

              Kommentar


                #8
                Wissend, dass dem Plugin noch etwas fehlt, habe ich es mal eingebunden, hier der zugehörige Auszug aus dem smarthome.log:
                Code:
                invalid syntax (__init__.py, line 28) -- plugin.py:__init__:57
                Traceback (most recent call last):
                  File "/usr/local/smarthome/lib/plugin.py", line 53, in __init__
                    plugin_thread = Plugin(smarthome, plugin, classname, classpath, args)
                  File "/usr/local/smarthome/lib/plugin.py", line 79, in __init__
                    exec("import {0}".format(classpath))
                  File "<string>", line 1, in <module>
                  File "/usr/local/smarthome/plugins/paradigma/__init__.py", line 28
                    json_text = subprocess.check_output([curl 'http://paradigma.remoteportal.de/ajax.php' -H 'Host: paradigma.remoteportal.de' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:34.0) Gecko/20100101 Firefox/34.0' -H 'Accept: application/json, text/javascript, */*; q=0.01' -H 'Accept-Language: de,en-US;q=0.7,en;q=0.3' -H 'Accept-Encoding: gzip, deflate' -H 'DNT: 1' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H 'X-Requested-With: XMLHttpRequest' -H 'Referer: http://paradigma.remoteportal.de/index.php?pto[area]=-controller' -H 'Cookie: ibb=xxxxx' -H 'Connection: keep-alive' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' --data 'call=controller.status&param%5BcontrollerId%5D=XXXXX&param%5Bmode%5D=text'])
                                                                                                        ^
                Ich habe versucht anhand von https://docs.python.org/3/library/json.html nachzuvollziehen was da passiert, aber da fehlt mir grundlegendes Verständnis.

                Kommentar


                  #9
                  Hallo,
                  die Syntax von subprozess sollte eher so funktionieren:
                  PHP-Code:
                  subprocess.check_output(['/usr/bin/curl''http://paradigma.remoteportal.de/ajax.php', \
                                                              
                  '-H Host: paradigma.remoteportal.de', \
                                                              
                  '-H User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:34.0) Gecko/20100101 Firefox/34.0', \
                                                              
                  '-H Accept: application/json, text/javascript, */*; q=0.01', \
                                                              
                  '-H Accept-Language: de,en-US;q=0.7,en;q=0.3', \
                                                              
                  '-H Accept-Encoding: gzip, deflate', \
                                                              
                  '-H DNT: 1 -H Content-Type: application/x-www-form-urlencoded; charset=UTF-8', \
                                                              
                  '-H X-Requested-With: XMLHttpRequest', \
                                                              
                  '-H Referer: http://paradigma.remoteportal.de/index.php?pto[area]=-controller', \
                                                              
                  '-H Cookie: ibb=---', \
                                                              
                  '-H Connection: keep-alive', \
                                                              
                  '-H Pragma: no-cache', \
                                                              
                  '-H Cache-Control: no-cache', \
                                                              
                  '--data call=controller.status&param%5BcontrollerId%5D=---&param%5Bmode%5D=text']) 
                  probier mal in der Python-Shell, ob du die erwartete Antwort bekommst.
                  Angehängte Dateien

                  Kommentar


                    #10
                    Wahrscheinlich würde das Plugin dann ungefähr so aussehen:
                    • das Update-Intervall wird in run() gesetzt als Parameter cycle für den internen scheduler.
                    • die Verknüpfung der Items mit "paradigmaSystaComfort_ID" mit den Werten aus der __init.py__ passiert, wenn einmalig parse_item() ausgeführt wird.
                    • in der plugin.conf musst du dann die Parameter cycle=300 (300s sind 5min), cookie und id setzen.


                    ... mal testen!

                    PHP-Code:
                    class ParadigmaSystaComfort:
                        
                    _sensors = {}
                        
                    alive True


                        def __init__
                    (selfsmarthomecycle=120cookie='XXX'id='YYY'):
                            
                    self._sh smarthome
                            self
                    ._cycle int(cycle)
                            
                    self._cookie cookie
                            self
                    ._id id
                            self
                    ._lock threading.Lock()

                            
                    smarthome.connections.monitor(self)


                        
                    def _refresh(self):
                            
                    self._lock.acquire()
                            
                    jsontext subprocess.check_output(['/usr/bin/curl''http://paradigma.remoteportal.de/ajax.php', \
                                                                
                    '-H Host: paradigma.remoteportal.de', \
                                                                
                    '-H User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:34.0) Gecko/20100101 Firefox/34.0', \
                                                                
                    '-H Accept: application/json, text/javascript, */*; q=0.01', \
                                                                
                    '-H Accept-Language: de,en-US;q=0.7,en;q=0.3', \
                                                                
                    '-H Accept-Encoding: gzip, deflate', \
                                                                
                    '-H DNT: 1 -H Content-Type: application/x-www-form-urlencoded; charset=UTF-8', \
                                                                
                    '-H X-Requested-With: XMLHttpRequest', \
                                                                
                    '-H Referer: http://paradigma.remoteportal.de/index.php?pto[area]=-controller', \
                                                                
                    '-H Cookie: ibb=%s' self._cookie, \
                                                                
                    '-H Connection: keep-alive', \
                                                                
                    '-H Pragma: no-cache', \
                                                                
                    '-H Cache-Control: no-cache', \
                                                                
                    '--data call=controller.status&param%5BcontrollerId%5D=%s&param%5Bmode%5D=text' self._id])
                            
                            
                    table = {}
                            
                    table["245534"] = json_text["values"]["245534"]   #Kollektor -TSA-
                            
                    table["245542"] = json_text["values"]["245542"]   #Kollektor Maximum
                            
                    table["245543"] = json_text["values"]["245543"]   #Solare Leistung
                            
                    table["245544"] = json_text["values"]["245544"]   #Tagesgewinn
                            
                    table["245545"] = json_text["values"]["245545"]   #Solargewinn
                            
                    table["245538"] = json_text["values"]["245538"]   #Aussentemperatur -TAM-
                            
                    table["245535"] = json_text["values"]["245535"]   #Solarruecklauf -TSE-
                            
                    table["245536"] = json_text["values"]["245536"]   #Solarvorlauf -TSV-
                            
                    table["245537"] = json_text["values"]["245537"]   #Speicher Oben -TW-
                            
                    table["245540"] = json_text["values"]["245540"]   #Volumenstrom
                            
                    table["245541"] = json_text["values"]["245541"]   #Speicher Oben -TW2-
                            
                    table["245546"] = json_text["values"]["245546"]   #Kollektor 1 -TSA 1-
                            
                    table["245548"] = json_text["values"]["245548"]   #Laufzeit Pumpe
                            
                    table["245549"] = json_text["values"]["245549"]   #Zeit TSA MAX
                            
                    table["245564"] = json_text["values"]["245564"]   #Puffer Sollwert
                            
                    table["245565"] = json_text["values"]["245565"]   #Puffer oben -TPO-
                            
                    table["245566"] = json_text["values"]["245566"]   #Betriebsstunden
                            
                    table["245567"] = json_text["values"]["245567"]   #Kesselvorlauf -TV-
                            
                            
                    for addr in self._sensors:
                                if 
                    addr not in table:
                                    
                    logger.debug("paradigmaSystaComfort: {0} not in sensors".format(addr))
                                else:
                                    
                    value table[addr]
                                    
                    item self._sensors[addr]
                                    
                    item(value'paradigmaSystaComfort')
                            
                            
                    self._lock.release()
                            
                            
                            
                            

                        
                    def run(self):
                            
                    self.alive True
                            self
                    ._sh.scheduler.add('ParadigmaSystaComfort'self._refreshcycle=self._cycleprio=5offset=0)

                        
                    def stop(self):
                            
                    self.alive False




                        def parse_item
                    (selfitem):
                            if 
                    'paradigmaSystaComfort_ID' not in item.conf:
                                return
                            
                    addr item.conf['paradigmaSystaComfort_ID']
                            
                    self._sensors[addr] = item
                            logger
                    .info("paradigmaSystaComfort: Sensor {0} added.".format(addr)) 

                    Kommentar


                      #11
                      EDIT: Sorry, hatte deine letzte Antwort nicht gesehen, ich teste das jetzt mal.

                      ---------

                      Den Syntax Fehler in Zeile habe ich mit Deiner Hilfe weg bekommen, leider folgt direkt der nächste:

                      Code:
                      2015-01-06 18:07:48,953 ERROR    Main         Plugin paradigma exception: byte indices must be integers, not str -- plugin.py:__init__:57
                      Traceback (most recent call last):
                        File "/usr/local/smarthome/lib/plugin.py", line 53, in __init__
                          plugin_thread = Plugin(smarthome, plugin, classname, classpath, args)
                        File "/usr/local/smarthome/lib/plugin.py", line 79, in __init__
                          exec("import {0}".format(classpath))
                        File "<string>", line 1, in <module>
                        File "/usr/local/smarthome/plugins/paradigma/__init__.py", line 30, in <module>
                          table["245534"] = json_text["values"]["245534"]   #Kollektor -TSA-
                      TypeError: byte indices must be integers, not str
                      2015-01-06 18:07:48,960 INFO     Main         Init Items -- smarthome.py:start:280
                      2015-01-06 18:07:49,121 INFO     Main         Item env.core.memory = 21921792.0 via SQLite None None -- item.py:set:457
                      Ist es zu erwarten, dass die Abfrage (mit korrekt gesetztem Cookie) auch bei mir 0 Byte zurückgeliefert hat? Bei der Abfrage per Cron sind es immer ca 3800 Bytes

                      Code:
                      -alive -H Pragma: no-cache -H Cache-Control: no-cache --data call=controller.status&param%5BcontrollerId%5D=12720&param%5Bmode%5D=text'])
                        % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                                       Dload  Upload   Total   Spent    Left  Speed
                        0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
                      >>> exit()

                      Kommentar


                        #12
                        Zitat von tobo Beitrag anzeigen
                        Code:
                        [COLOR=black]table[[COLOR=red]"[/COLOR]245534[COLOR=red]"[/COLOR]][/COLOR] = json_text["values"]["245534"]   #Kollektor -TSA-
                        TypeError: byte indices must be integers, not str
                        Nur mal so schnell aus der Hüfte geschossen - da ist ein Typfehler drin. Eine Zahl wird als Index erwartet, ein Text wird geliefert. Versuchs mal ohne die Anführungszeichen, also table[245534] ...

                        /tom

                        Kommentar


                          #13
                          Der letztgenannte Fehler war weg, nachdem ich den gesamten Code von walldi übernommen und eingefügt habe.

                          Jetzt bekam ich noch einen Fehler:

                          Plugin paradigma exception: global name 'threading' is not defined -- plugin.py:__init__:57

                          Eliminiert durch auskommentieren der Zeile in der __init.py__ - sicherlich nicht im Sinne des Erfinders

                          Als nächstes folgt

                          Code:
                          2015-01-06 18:43:15,016 ERROR    Connections  Method Connections exception: 'ParadigmaSystaComfort' object has no attribute 'connected' -- scheduler.py:_task:348
                          Traceback (most recent call last):
                            File "/usr/local/smarthome/lib/scheduler.py", line 344, in _task
                              obj()
                            File "/usr/local/smarthome/lib/connection.py", line 83, in check
                              if not obj.connected:
                          AttributeError: 'ParadigmaSystaComfort' object has no attribute 'connected'

                          Kommentar


                            #14
                            richtig: das die Zeile mit connections.monitor.... ist hier überflüssig und kann weg.

                            Außerdem: ich hatte erwartet dass
                            >>>json_text = subprocess.check_output(.....
                            >>>print(json_text)

                            tatsächlich den Datensatz im JSON-Format ausgibt, genau so wie mit curl von der Eingabezeile.

                            Kommentar


                              #15
                              ich arbeite mich gerade durch "inconsistent use of tabs and spaces in indentation" Fehler, melde mich dann nochmal

                              Kommentar

                              Lädt...
                              X