Ankündigung

Einklappen
Keine Ankündigung bisher.

smarthomeNG über ETS konfigurieren

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

    #31
    thesing Direkt fehlen tut (wenn die plugin.yaml sinnvoll gepflegt ist) erstmal nichts. Eventuell sinnvoll könnte noch eine Seite für die Anwender Doku sein. Die grundlegende Konfigurationsdoku wird zwar aus der plugin.yaml generiert, Wenn darüber hinausgehender Doku Bedarf besteht, kann der in einer user_doc.rst abgelegt werden. (die README.md Dateien werden langsam ausgephast).

    Beispiele für eine user_doc.rst (reStructured Text) findest Du unter anderem bei folgenden Plugins:

    Viele Grüße
    Martin

    Stay away from negative people. They have a problem for every solution.

    Kommentar


      #32
      So ich habe nun das knx_go-Attribut entfernt. Nun kann man ohne Änderung an den Items zwischen beiden knx-Plugins wechseln. Es wird beim Start des Plugins schon die knxproj-Datei erzeugt. Wenn es die schon gibt wird sie nicht neu erzeugt. Wenn man das möchte, kann man die mit einem Reset-Button auf dem webinterface löschen. (Zusammen mit der Konfiguration durch ETS). Es werden nun bis zu zwei KO pro Item erzeugt. Eines wenn es ein knx_dpt-Attribut gibt, und noch eins, wenn es ein knx_status-Attribut gibt. Das Plugin kommt auch mit beliebig vielen KOs pro Item klar, aber ich hatte nicht die Muße in parse_item alle knx*-Attribute zu parsen, und die Anzahl der unterschiedlichen GAs zu zählen. Sollte für einen erfahrenen Python-Programmierer aber leicht sein .
      Aktuell ist meine lib auf 255 KOs beschränkt. Bei mir reicht es noch. Wenn jemand mehr braucht kann ich das auch relativ einfach auf 65K aufbohren. Wenn neue Items hinzkommen, muss man derzeit das alte Gerät aus ETS entfernen, das neue hinzufügen und dann wieder die ganzen KOs zu den GAs verbinden. Das dauert leider etwas. Die generierten knxprods sieht ETS als unregistriert an. Daher kann man nicht einfach das Applikationsprogramm updaten. Ich muss mal sehen ob man das noch besser machen kann.

      Nach der ganzen Arbeit hab ich dann festgestellt, dass knxd (zumindest bei mir) nicht von IP zu TP routet. Andersrum funktioniert es super. Das schein an der Absende-Adresse zu liegen. Ich hab dann einen alten RPI-1 genommen, mein MDT-USB-Interface drangehangen und Calimero drauf installiert ( Nach https://michlstechblog.info/blog/eib...-orange-pi-pc/ aber Skript von github nehmen) und nun geht es.

      Ich werde am WE den calimero-PI in den Schaltschrank bringen und dann das knx_ets-Plugin produktiv nehmen.
      Beabsichtigt noch jemand das Plugin einzusetzen?

      knx-poll vom knx-Plugin brauche ich selber nicht. Wenn mein Plugin eh niemand anderes nutzt brauch ich das auch nicht nachzubauen.
      Für das send(date,time)-Zeug habe ich mir nun Items mit cycle und eval erstellt. Das finde ich auch sauberer also es direkt im knx-Plugin zu konfigurieren.

      Kommentar


        #33
        Hallo,

        ich bin beeindruckt...

        Beabsichtige ich, das Plugin einzusetzen?
        Es reizt mich sehr. Was mich allerdings abschreckt:
        1) die Migration
        2) dass ich bei jedem Hinzufügen von Items alle Verknüpfungen mit der ETS neu machen muss.

        Ich bin nicht ganz sicher, welche Vorteile das Plugin hingegen bringt. Natürlich ist es gut, dass ich alle GAs nun in der ETS ändern kann, und Sh.py nur neu parametrieren muss. Aber ich weiß garnicht, wann ich zuletzt eine GA geändert habe (sprich: von 1/2/3 auf 1/2/4), oder einem Item in sh.py eine zusätzliche GA gegeben habe -denn wenn ich es richtig verstehe, habe ich ja nur in diesen beiden Fällen einen Vorteil.

        Oder übersehe ich etwas?
        Ich frage mich, wie der Timberwolf das macht.

        Gruß,
        Hendrik

        Kommentar


          #34
          Mein Ziel ist auch, dass man nicht immer alle GAs neu verknüpfen muss.
          Mit meiner Version des knx-Plugins und geeigneten struct-Templates kann man einfacher ein normales Haus konfigurieren.
          Etwa:

          Code:
          Wohnzimmer:
              Licht:
                  struct: Licht_dimmbar
              Rtr:
                  struct Rtr_mdt
          In den structs kann man auch gleich die Attribute für die Generierung der Seiten für SmartVisu einfügen. Die GAs könnte man ja durch ETS konfigurieren.
          Außerem kann man so auch in ETS die freie Gruppenstruktur nehmen. Dann kann smarthomeNG nicht mehr von "x/y/z" zur richtigen Bytedarstellung umrechnen.


          Kommentar


            #35
            Hallo,

            das wäre natürlich genial. So könnte man sogar einen Wizard erstellen, in dem man sich das Haus zusammenklickt und eine Grund-Konfiguration von SH und SV bekommt.
            Außerem kann man so auch in ETS die freie Gruppenstruktur nehmen. Dann kann smarthomeNG nicht mehr von "x/y/z" zur richtigen Bytedarstellung umrechnen.
            Was meinst du damit?

            Gruß,
            Hendrik

            Kommentar


              #36
              Eine GA hat 16 Bit. Bei dreistufigen GAs sind das 5 Bit Hauptgruppe, 3 Bit Mittelgruppe und 8 Bit Untergruppe. Man kann also 32 Hauptgruppen mit je 8 Mittelgruppen mit je 256 Gruppenaddressen haben. Wobei 0/0/0 nicht verwendet werden kann.
              Bei freier GA-Struktur ist man an diese Zahlen nicht mehr gebunden. Da kann man problemlos Gruppenadressen haben wie z.B. 34/15/1. Es weiß aber nur noch ETS wie die 34/15/1 binär dargestellt wird.
              Das könnte man beim knx-Plugin unterstützen, indem man auch die Hex-Werte der GAs angeben kann. Bei freier GA-Vergabe kann man sich die auch in ETS anzeigen lassen.

              Kommentar


                #37
                Bei mir läuft das Plugin seit zwei Wochen ohne Probleme. CreateKnxProd habe ich so angepasst, das man das Applikationsprogramm des Geräts in ETS updaten kann. Dafür ist wichtig, dass keine KOs verschwinden oder sich in der Größe ändern. Neue KOs muss man einfach hinten anfügen.
                Ich muss also bei Gelegenheit programmieren, dass die knxprod-Datei um weitere KOs erweitert wird, wenn neue Items hinzukommen und dass Items die zwar in der knxprod-Datei sind, aber nicht mehr existieren auch nicht zu einem Fehler führen.
                Ich habe auch schon mit dem Gedanken gespielt eine Konsolenanwendung zu schreiben, die Erstellen der Datei übernimmt. Auf x86-Hardware würde das auch problemlos funktionieren. Für meinen Raspberry-Pi müsste ich allerdings erst eine Cross-Compile-Umgebung aufbauen um das .Net-Core-Framework zu Übersetzen. (da fehlt noch eine Funktion)
                Wenn mein SHNG aufs NAS umzieht, oder die Funktions ins .Net-Core-Framework 3.0 einzieht baue ich das vielleicht mal.

                Kommentar


                  #38
                  Hallo Thomas,

                  Zitat von thesing Beitrag anzeigen
                  CreateKnxProd habe ich so angepasst, das man das Applikationsprogramm des Geräts in ETS updaten kann
                  Wie funktioniert das in der ETS? Ich dachte bisher immer, dass man bei einer Aktualisierung des Gerätes in der ETS alle Verknüpfungen neu machen muss?

                  Zitat von thesing Beitrag anzeigen
                  Ich muss also bei Gelegenheit programmieren, dass die knxprod-Datei um weitere KOs erweitert wird,
                  Genau das hatte ich unter "updaten kann" verstanden.

                  Zitat von thesing Beitrag anzeigen
                  Ich habe auch schon mit dem Gedanken gespielt eine Konsolenanwendung zu schreiben, die Erstellen der Datei übernimmt
                  Welche Datei? Die XML, die der Input für CreateKnxProd ist?

                  Zitat von thesing Beitrag anzeigen
                  Auf x86-Hardware würde das auch problemlos funktionieren. Für meinen Raspberry-Pi müsste ich allerdings erst eine Cross-Compile-Umgebung aufbauen
                  Die ETS braucht doch eh x86. Warum wäre also x86 ein Hindernis?

                  Gruß,
                  Hendrik

                  Kommentar


                    #39
                    Wenn man in ETS eine neue Version einer Applikation in sein Projekt holt (üblicherweise indem man eine Gerät mit der aktuellen Version dem Projekt hinzufügt), und in der neuen Version eingestellt wurde, dass sie ein Update der alten Version ist (was wohl nicht viele Hersteller machen), kann man die Version bei bereits bestehenden Geräten im Projekt ändern. (Unter Eigenschaften, Applikation o.ä.) Die GA und Parameter werden dabei übernommen (soweit möglich).
                    Dazu muss die neue Version natürlich in gewisser Weise kompatibel mit der alten bleiben. (keine Änderung der KO-Größen u.a.)
                    Aktuell wird in meinem Plugin die xml-Datei nicht mehr geändert, wenn sie einmal erzeugt wurde. Neue Items bleiben also außen vor. Man kann die Datei löschen (mit einem Button im Webinterface). Dann wird Sie neu generiert. Da sich die Reihenfolger der KOs dadurch ändern kann, ist die neue Applikation nicht kompatibel zur alten. Daher kann man die dann auch in ETS nicht updaten.

                    Mein Plan ist, dass man direkt vom Web-IF des Plugins die fertige knxprod-Datei herunterladen kann. Dazu müsste man vorher ein paar dll-Dateien von ETS zu SHNG kopieren, damit aus der xml-Datei eine signierte knxprod-Datei erstellt werden kann. Bei mir läuft SHNG auf einem RPI3 also arm. Da geht das nicht so ohne weiteres, da sich das .net-Core Framework dort nicht übersetzen lässt. (Sagt zumindest die Doku)

                    Kommentar


                      #40
                      Hallo,

                      ich wusste gar nicht, dass es die Möglichkeit gibt, eine Applikation als Update zu deklarieren. Das ist mir bisher noch bei keiner Applikation untergekommen.

                      Dann wird Sie neu generiert. Da sich die Reihenfolger der KOs dadurch ändern kann, ist die neue Applikation nicht kompatibel zur alten.
                      Naja, wäre es nicht möglich, KOs nur anzuhängen, nicht aber einzufügen?

                      Mein Plan ist, dass man direkt vom Web-IF des Plugins die fertige knxprod-Datei herunterladen kann. Dazu müsste man vorher ein paar dll-Dateien von ETS zu SHNG kopieren, damit aus der xml-Datei eine signierte knxprod-Datei erstellt werden kann.
                      Das wäre natürlich echt elegant. Dafür wäre aber aus meiner Sicht erst das Update-Problem zu lösen. Denn ein neu-Verknüpfen wäre für mich ein Killer - und keine zusätzlichen Items hinzufügen zu können auch.

                      Wenn die Kompatibilität mit dem Raspi ein Problem ist, könnte man auch eine Zip erzeugen, die alles Nötige (außer die dlls, dafür aber ein Verzeichnis in dem die DLLs platziert werden müssen) enthält und diese zum Download im Web-IF anbieten. Dann lädt man halt nicht die knxprod herunter, aber muss nur noch die DLLs kopieren und eine executable ausführen.

                      Gruß,
                      ​​​​​​​Hendrik

                      Kommentar


                        #41
                        Zitat von henfri Beitrag anzeigen
                        Naja, wäre es nicht möglich, KOs nur anzuhängen, nicht aber einzufügen?
                        Genau das ist der Plan.

                        Zitat von henfri Beitrag anzeigen
                        Wenn die Kompatibilität mit dem Raspi ein Problem ist, könnte man auch eine Zip erzeugen, die alles Nötige (außer die dlls, dafür aber ein Verzeichnis in dem die DLLs platziert werden müssen) enthält und diese zum Download im Web-IF anbieten. Dann lädt man halt nicht die knxprod herunter, aber muss nur noch die DLLs kopieren und eine executable ausführen.
                        Dafür lohnt sich der Aufwand aber nicht. Da kann man auch einfach vom WebIF die xml-Datei herunterladen, im CreateKnxProd öffnen und auf Exportieren drücken. Ggf. könnte man auch exe erstellen die auf Doppelklick alle xmls im gleichen Verzeichnis in knxprod umwandelt.

                        Grüße,
                        Thomas

                        Kommentar


                          #42
                          Kurzes Update: Ich habe nun programmiert, dass neue Items hinten an die smarthomeNG.xml herangehängt werden und die Version dort erhöht wird. Ich werde das die nächsten Tage testen um einen BME680 auf einem Breadboard im Bad anzubinden.

                          Kommentar


                            #43
                            Ich habe da ganz nun soweit getestet (und dabei noch ein paar Fehler gefunden). Wenn man nun Items löscht, bleiben die normal in der knxprod enthalten. Neu hinzugefügte Items werden hinten angefügt. Dabei wir allerdings die lokale Konfiguration gelöscht, d.h. man muss das Gerät "smarthomeNG" über die ETS neu programmieren. (mit PA, Applikation).

                            Vor allem sollte man wie immer sein Projekt in ETS exportieren (falls was kaputt geht).
                            Die neue knxprod-XML kann man dann von WebIf laden und mit CreateKnxProd öffnen. Dann einmal Speichern (da wird fehlendes Zeug ergänzt.) und dann Exportieren. Die neue knxprod dann in ETS importieren und ein neues Gerät der neuen Version zum Projekt hinzufügen. Beim neuen Geräte kontrollieren ob die KOs wie erwartet aussehen. (Sind die alten KOs noch da, sind die neuen da?). Dann kann das neue Gerät wieder gelöscht werden. Die Applikation davon bleibt im Projekt.
                            Nun kann man das bestehende "SmarthomeNG"-Gerät auswählen. Unter Eigenschaften->Information->Applikationsprogramm sieht man die aktuell benutzte Version.
                            ACHTUNG: NICHT einfach das Applikationsprogramm über die DropdownBox ändern. Dann sind alle Verknüpfungen zwischen GA und KO des Geräts weg. Es erscheint auch keine Sicherheitsabfrage. (Falls ihr das doch macht, könnt ihr das Backup von oben wieder einspielen oder einen Wiederherstellungspunkt des Projekts nutzen)
                            Man muss einfach unten auf den Button "Aktualisieren" drücken. Dann behalten alle KOs ihre GAs und die neuen KO tauchen mit auf.

                            Für mich hat das ganze nun den "Works for me"-Status. Wenn das noch jemand erfolgreich bei sich testet, schreibe ich noch eine plugin.yaml und stellen einen Pull-Request. (AFAIK sollen neuen Plugins immer nochmal von jemanden getestet werden)

                            Kommentar

                            Lädt...
                            X