Ankündigung

Einklappen
Keine Ankündigung bisher.

Logik anlegen.

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

    [callidomus] Logik anlegen.

    Hi,
    wo gibt man den jetzt den Filenamen an beim anlegen einer neuen Logik?

    Und was machen die eingaben für die Items in diesen Dialog? filename fehlt.JPG


    VG
    Jürgen

    #2
    Hi Jürgen,

    nach dem Block "Eigenschaften" kommt ein Block "Code" - da gibt es ein Feld für den Dateinamen.

    Gruß
    Thomas

    Kommentar


      #3
      Danke Thomas,

      okay das mit dem codblock finde ich gut. Nur das in eine eigen Gruppe code zu packen finde ich vom UI sehr unglücklich gemacht.


      Was machen das KNX und NW da als eingaben?

      Viele Grüsse
      Jürgen

      Kommentar


        #4
        Hi,
        das mit dem Codeblock scheint aber nicht zu Funktionieren. Jedenfall kann ich das nicht speichern. Wenn ich auf Save drücke geht der dialog nicht zu. Wenn ich File aus wähle geht es weiter....
        Viele Grüsse
        Jürgen
        Zuletzt geändert von heckmannju; 02.03.2017, 23:58.

        Kommentar


          #5
          Ich finde es eigentlich nachvollziehbar. Letztendlich ist eine Logik aber eben auch nur ein "Node". Liegt aber auch vielleicht daran, dass ich a) dabei war, als Markus diese Änderung vorgestellt/erläutert hat und b) ich schon eine Weile damit arbeite.

          Wobei ich eigentlich kaum noch Logiken habe, ich habe fast alle Logiken auf Zustandsautomaten umgestellt. Logiken sind bei mir nur noch längerer (komplexerer) Code, den ich bei Bedarf ausführe, entweder zeitgesteuert oder durch einen Zustandsautomaten getriggert.. Zum Beispiel Laden der Kalender oder der Wetterinfos oder das Speichern aller aktuellen Kamerabilder.

          Gruß
          Thomas

          Kommentar


            #6
            Zitat von heckmannju Beitrag anzeigen
            Wenn ich auf Save drücke geht der dialog nicht zu.
            Das habe ich ich auch hin und wieder. Ich meine, es liegt daran, dass der Code kein valides Python ist. Besonders die Leerzeichen/Tabs machen da scheinbar Probleme. Schreib den Code mal im Editor und kopiere ihn da rein. Außerdem dauert das Speichern u.U. an dieser Stelle ein paar Sekunden.

            Aber Markus kann da sicher eher was zu sagen.

            Thomas

            Kommentar


              #7
              Hi,

              für mich ist das ohne erklärung und doku leider nicht so klar. Der ganze umbau schon gar nicht. Eine Logick wiederzu finden ist nicht mehr Trivial in diesen Baum.

              Die Logick die ich angelegt habe kann man vom UI aus jedenfalls nicht starten. Da kommt immer die Fehlermeldung Fehlermeldung.JPG



              im log hab ich das gefunden..

              Code:
              2017-03-03 00:10:41 ERROR    Core         Visu Exception: 'Logic' object has no attribute 'bytecode'
              Traceback (most recent call last):
                File "/mfs/core/lib/websocket.py", line 569, in rfc6455_parse
                  self.json_parse(payload.decode())
                File "/mfs/core/lib/websocket.py", line 321, in json_parse
                  items.append([path, self.nodes[path]['item']()])
                File "/mfs/core/lib/logic.py", line 91, in __call__
                  self.name, self.bytecode, value=value, trigger=trigger, prio=self.prio, dt=dt)
              AttributeError: 'Logic' object has no attribute 'bytecode'
              2017-03-03 00:11:00 DEBUG    location.time Triggering location.time-co
              Nachtrag: Die Fehlermeldung kommt nicht wenn man auf Play drückt sondern wenn ich in die Logick em300 reingehe zu bearbeiten.

              VG
              Jürgen
              Zuletzt geändert von heckmannju; 03.03.2017, 00:15.

              Kommentar


                #8
                Hi Jürgen,

                starte mal den Core neu, dann kommst du eventuell auch wieder auf den Logik-Knoten.

                Ich habe mir übrigens ein Item "Logiken" in der Wurzel angelegt und alle Logiken darunter gezogen - dann hast du sie auch wieder alle beisammen. Die müssen nämlich nicht in der root stehen.

                Das gleiche übrigens auch für die Plugins ...

                Gruß
                Thomas

                Kommentar


                  #9
                  Hi,
                  core habe ich schon viele male durchgestartet.....

                  Wenn ich das mit der CLI starte bekomme ich folgende meldung.

                  Code:
                  2017-03-03 00:17:46 ERROR    Core         Exception reading /data/callidomus/local/logics/em300.py: 'em300 problem compiling code \'return\' outside function (em300.py, line 20):\nimport requests\n\nlogger = logging.getLogger(\'\')\nlogger.debug(trigger)\n\nip=\'192.168.102.84\'\n\nurlstart = \'http://{}/start.php\'.format(ip)\nurldata =  \'http://{}/mum-webservice/data.php\'.format(ip)\nheaders = {\'Content-Type\': \'application/x-www-form-urlencoded\'}\n\nr = requests.get(urlstart, headers=headers)\nresponse =  r.json()\n\nserial = response[\'serial\']\nauthentication = response[\'authentication\']\n\nif( authentication != True):\n    logger.error("password ist set")\n    return\n\nPHPSESSID = r.cookies[\'PHPSESSID\']\n\ncookies = dict(PHPSESSID=PHPSESSID)\n\nr = requests.get(urldata, cookies=cookies, headers=headers)\n\nresponse = r.json()\n\nlogger.debug( r.json() )'
                  Traceback (most recent call last):
                    File "/mfs/core/lib/config.py", line 238, in __init__
                      self.bytecode = compile(code, filename, 'exec')
                    File "/data/callidomus/local/logics/em300.py", line 20
                      return
                         ^
                  SyntaxError: 'return' outside function
                  
                  During handling of the above exception, another exception occurred:
                  
                  Traceback (most recent call last):
                    File "/mfs/core/lib/logic.py", line 115, in generate_bytecode
                      code, node=self, filename=filename, env=env, asynchronous=self.asynchronous)
                    File "/mfs/core/lib/config.py", line 240, in __init__
                      raise CodeException("{} problem compiling code {}:\n{}".format(node, e, code))
                  lib.config.CodeException: 'em300 problem compiling code \'return\' outside function (em300.py, line 20):\nimport requests\n\nlogger = logging.getLogger(\'\')\nlogger.debug(trigger)\n\nip=\'192.168.102.84\'\n\nurlstart = \'http://{}/start.php\'.format(ip)\nurldata =  \'http://{}/mum-webservice/data.php\'.format(ip)\nheaders = {\'Content-Type\': \'application/x-www-form-urlencoded\'}\n\nr = requests.get(urlstart, headers=headers)\nresponse =  r.json()\n\nserial = response[\'serial\']\nauthentication = response[\'authentication\']\n\nif( authentication != True):\n    logger.error("password ist set")\n    return\n\nPHPSESSID = r.cookies[\'PHPSESSID\']\n\ncookies = dict(PHPSESSID=PHPSESSID)\n\nr = requests.get(urldata, cookies=cookies, headers=headers)\n\nresponse = r.json()\n\nlogger.debug( r.json() )'
                  die ich nicht ganz verstehe. Sowas scheint nicht zu gehen.

                  return.JPG

                  Viele Grüsse & Danke
                  Jürgen



                  Kommentar


                    #10
                    Zitat von heckmannju Beitrag anzeigen
                    Code:
                     
                     Syntax Error 'return' outside function
                    ... ich würde die Zeile 20 ("return") mal löschen ...! Wäre aber nur geraten.

                    Gruß
                    Thomas

                    Kommentar


                      #11
                      Hi,

                      ja das werde ich heute abend mal probieren. Aber durch was kann ich es den ersetzen? Ich will an der Stelle die Logick einfach verlassen.

                      VG
                      Jürgen

                      Kommentar


                        #12
                        Hi,
                        also nach dem umbauen der Logick das ich ohne den return auskomme, war der Compile Fehler weg. Allerdings die Logick konnte man immer noch nicht über das UI oder das CLI kommando tr starten. Das Kommando rr hat allerdings funktioniert. Das Komando tr hat die gleiche meldung gebracht das em300 nicht gefunden werden konnte.
                        Viele Grüsse

                        Jürgen

                        Kommentar


                          #13
                          Zitat von Stereofeld Beitrag anzeigen
                          Ich habe mir übrigens ein Item "Logiken" in der Wurzel angelegt und alle Logiken darunter gezogen - dann hast du sie auch wieder alle beisammen. Die müssen nämlich nicht in der root stehen.
                          Das hat aber den nachteil das man in der CLI viel mehr tippen muss. Okay aber besser als so versteut im Itembaum.
                          VG & Danke
                          Jürgen

                          Kommentar


                            #14
                            Hallo Jürgen,

                            Zitat von heckmannju Beitrag anzeigen
                            Hi,
                            das mit dem Codeblock scheint aber nicht zu Funktionieren. Jedenfall kann ich das nicht speichern. Wenn ich auf Save drücke geht der dialog nicht zu. Wenn ich File aus wähle geht es weiter....
                            das kann ich nicht nachvollziehen. Bei mir klappt das immer.
                            Welcher Browser? Welcher Code?

                            Bis bald

                            Marcus

                            Kommentar


                              #15
                              Hallo,

                              eine Logik kann man mit exit() verlassen.

                              Bis bald

                              Marcus

                              Kommentar

                              Lädt...
                              X