Ankündigung

Einklappen
Keine Ankündigung bisher.

Beta: Logikbaustein 12253_LibLoader

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

    HS/FS Beta: Logikbaustein 12253_LibLoader

    Der Baustein läd fehlende Python Libraries über den Projektordner\hsupload\libs Ordner.

    Einfach zu installierende Python Libraries dort speichern (Haken unter Projekt->Oberfläche für den Ordner nicht vergessen).

    Da die Dateien die dort abgelegt werden ja im HS alle als uppercase gespeichert werden, ist für Dateinamen die nicht all_lowercase sind eine mapping.txt Datei möglich.

    Code:
    for file in [os.path.join(dp, f) for dp, dn, fn in os.walk(".") for f in fn]: print ( file[2:]+"\r\n" if file.lower() <> file else ""),
    Diese Ausgabe in die Datein libs\mapping.txt

    Auf unwichtige Dateien sollte verzichtet werden (z.B. unittest etc)

    Der Baustein wird zum Systemstart ausgeführt.
    Andere Bausteine die die geladenen Libraries benötigen müssen daher entweder nach dem LibLoader Baustein zum Experten hinzugefügt worden sein (höhere ID) oder aber einen Verzögerten Start mittels OC Timer benutzen oder Ausgang 1 des Libloader Bausteins.

    Danach kann in einen anderen Baustein (am Beispiel json) einfach
    Code:
    ## json Werten von Eingang 1 auf Speicher 1
    5012|0|"EC[1]"|"__import__('json').loads(EN[1])|""|0|0|1|0
    ## Wenn Wert vorhanden dann auf Ausgang 1
    5012|0|"SC[1] and SN[1].has_key('something')"|"SN[1].get('something')"|""|1|0|0|0
    Getestet hab ich jetzt nur mit reinen py Modulen, aber eigentlich sollte auch C Libs von einem Debian Squeeze möglich sein.

    Wie auch immer .. AUF EIGENE GEFAHR :-)

    Feedback erwünscht

    PS: Eingang 1 einfach default übernehmen oder eigenen Pfad für die libs einstellen.
    Angehängte Dateien
    Nils

    aktuelle Bausteine:
    BusAufsicht - ServiceCheck - Pushover - HS-Insight

    #2
    Voll krass
    Gruß Matthias
    EIB übersetzt meine Frau mit "Ehepaar Ist Beschäftigt"
    - PN nur für PERSÖNLICHES!

    Kommentar


      #3
      Hi

      Sorry, habe leider nicht verstanden, was ich mit dem Baustein nun anstellen könnte. Nun kann man natürlich sagen, "Hey Olli, wenn Du dass nicht schnallst, dann wird der Baustein für dich auch nicht interessant sein" ....aber wer weiß...

      Könntet ihr evt. ein Anwendungsbeispiel geben ?

      Danke und Gruß

      Olli

      Kommentar


        #4
        Der Baustein ist eher für Bausteinentwickler als Zusatzbaustein zu sehen.

        Das heißt, wenn du z.B. wie im Post nebenan https://knx-user-forum.de/430954-post79.html einen Baustein brauchst, der in Python eigentlich sehr einfach zu implementieren wäre, aber die passenden Libraries auf dem HS einfach fehlen.

        Dann kannst du einfach fertige python Libraries (in diesem Falle halt python simplejson) nehmen und das ganze dann ohne komplizierte Bytecode-Bausteine mit der bekannten 5012 Bausteinprogrammierung bauen.

        Was dann im Falle des oben genannten Roomba Bausteins den eigentlich einfachen json string aus dem Roomba Webinterface mit vielleicht 10 5012er Zeilen Bausteincode fertig auf die Ausgänge bringt.

        Ein anderes Beispiel wäre Kalendar via ical aber eigentlich alles was z.B smarthome.py auch an plugins hat wäre nutzbar.
        Nils

        aktuelle Bausteine:
        BusAufsicht - ServiceCheck - Pushover - HS-Insight

        Kommentar


          #5
          Merlin hat wieder gezaubert

          Vielen Dank. Nils.

          Mal schauen, wann ich das anwende. Ideen hast Du ja schon genannt

          Vielleicht kann man dann auch so manche Sache etwas mehr in HS und Schnittstellen spezifisches trennen.

          Dann wären die Schnittstellen auch einfacher in anderen Visus einsetzbar.

          Also auch andersrum könnte das Sinn machen.

          Viele Grüsse

          Tbi

          Kommentar


            #6
            @NilsS
            Meinen größten Respekt!!
            Gruß

            Gunter

            "Die Fehler des Tuns sind meist weitbringender als die des Lassens"

            Kommentar


              #7
              @Tobias

              Falls du das auf die Buderus Bausteine beziehst, da hast du Recht. Hätte .... ja hätten wir vorher gewußt und so, dann wären die Bausteine warscheinlich Python libs geworden die auch auf den anderen Systemen gelaufen wären. .... toolate
              Nils

              aktuelle Bausteine:
              BusAufsicht - ServiceCheck - Pushover - HS-Insight

              Kommentar


                #8
                Hi Nils,

                Hätte, hätte, Fahrradkette... ist doch wurscht. Die Vergangenheit können wir nie drehen. ... finde ich jedenfalls. Manche versuchen das ja.

                Nein, mir ging es einfach darum, was das für die Zukunft bedeuten kann.



                Viele Güsse

                Tbi

                Kommentar


                  #9
                  Hmm ich hätte vielleicht schon vorher mal auf die 4.2er Updaten sollen.

                  json ist da bei den Modulen sogar schon bei Oo

                  Jetzt nur noch ein _ssl.so das gegen ein aktuelles openssl 1.0.1 kompiliert wurde und der Baustein ist überflüssig.

                  @Gira/Dacom: SSL ist tot. Es gibt nur noch TLS. Das wird sich nicht mehr lange hinziehen und auch die Mailserver werden !SSLv2 !SSLv3 in den Configs haben und die Mailzustellung wird nicht mehr funktionieren (ein weiteres mal).
                  Nils

                  aktuelle Bausteine:
                  BusAufsicht - ServiceCheck - Pushover - HS-Insight

                  Kommentar


                    #10
                    Hallo Nils,
                    verstehe ich Dich richtig.
                    1. Dein Baustein "12253_LibLoader" kommt auch in HS_Upload\LIBS?
                    2. Wenn ich eigene Python-Module bauen will , muß ich aus denen zunächst eine Lib bauen, d.h. einen Installing / Distributing - Prozess durchlaufen?
                    3. Im Logikeditor rufe ich Deinen Baustein auf und füge im Ausgang (wenn == 1) gleich meinen Aufruf an?

                    Danke im Voraus für Deine Antwort. Grüße. Lucien
                    P.S. Übrigens, große Arbeit!

                    Kommentar


                      #11
                      nein der Baustein wird ganz normal zum logic Ordner hinzugefügt.

                      in den hsupload Ordner kannst du Python Libs speichern, die du aus Bausteinen heraus dann benutzen kannst.

                      Es gelten für Bausteine jedoch weiterhin die gleichen Bedingungen wie zuvor.

                      Das heißt die Aufrufe dürfen weiterhin nicht blokierend sein.
                      Nils

                      aktuelle Bausteine:
                      BusAufsicht - ServiceCheck - Pushover - HS-Insight

                      Kommentar


                        #12
                        Hallo Nils, Vielen Dank für die schnelle Antwort. Ich habe mich wohl nur sehr mißverständlich ausgedrückt. Ich versuch's nochmal.
                        Bei komplexeren Logiken werden die .hsl - Logikbausteien sehr unübersichtlich. deshalb möchte ich gerne Teile der Logik in ein selbst zu schreibendes Python-Skript auslagern und dieses dann mit " _import_ " aus einer 5012er - Zeile aufrufen. Das Skript (im vorliegenden Beispiel "SST") habe ich jetzt unter "...\hsupload\LIBS" abgelegt und hoffte ggf. mit Hilfe Deiner Softwareteile es laden und ausführen zu können, bekomme aber Fehlermeldungen (siehe Debug-Auszug und Beispielskript - bin Anfänger in Python ;-) ).
                        Die Frage ist jetzt. Geht das was ich vorhabe überhaupt und wenn ja, wie? Vielen Dank für Deine Mühe und Grüße. Lucien
                        Angehängte Dateien

                        Kommentar


                          #13
                          Hallo Nils,

                          das klingt sehr interessant! Ich versuche mich gerade an einem eigenen Logikbaustein, der per Modbus Daten aus der PV Anlage abruft. Dafür setze ich die Python Bibliothek PyModbusTCP ein. Das Python Programm für sich funktioniert auch bereits und frägt die Daten ab. Für die Erstellung des Logikmoduls bin ich die Doku und die Beispiele vom Experten (verwende 4.10) durchgegangen. Ich konnte ein Logikmodul bauen und im Logikeditor auch entsprechend verdrahten. Jedoch funktioniert es nicht - PyModbusTCP kennt er nicht. Ich habe Deinen LibLoader Baustein nun entdeckt und im Experten importiert.

                          Was muss ich nun machen, damit PyModbusTCP geladen wird?

                          Danke!
                          Tom

                          Kommentar

                          Lädt...
                          X