Ankündigung
Einklappen
Keine Ankündigung bisher.
ByteCode Logikbaustein (opt. Lizenzprüfung)
Einklappen
X
-
Werd ich machen...
Wenn es wirklich so ist, dass man so alle Python-Funktionen einbinden kann, dann müsste es ja auch möglich sein den HS Modbusfähig zu machen!?
Einen Kommentar schreiben:
-
Solche gibt es ja bereits. Da kannst du ja mal Anschauungsunterricht nehmen
Einen Kommentar schreiben:
-
Danke für die Ausführliche Antwort!
Ich hatte die ganze zeit die Version 2.2.
Nach der Installation von 2.4.4 hats einwandfrei funktioniert.
Ich bin mal gespannt ob mein Plan, einen Baustein zur Auswertung von IP-Telegrammen und zum Senden von IP-Telegrammen zu generieren.
Müsste ja eigentlich mit "Socket" machbar sein. :-)
MFG Andi
Einen Kommentar schreiben:
-
Hallo,
bitte sorgfältig die bereits vorhandenen Beiträge lesen. Im Prinzip ist alles wichtige bereits niedergeschrieben worden. Evtl. ist es ein wenig schwierig, den roten Faden zu finden.
Ich versuche mal, dir einen kleinen Überblick zu verschaffen:
Voraussetzung für den Einsatz des LGs ist eine Python Laufzeitumgebung in der Version 2.4.4 auf dem Entwicklungsrechner. Der LG ist, wie der Name schon sagt, ein Generator, der, wenn er denn vorher entsprechend mit Leben gefüllt wurde, eine hsl-Datei und die dazu passende html-Datei generiert. Darüber hinaus bietet er den großen Vorteil, nicht nur einzeilige Logikzeilen (5012-Zeilen), sondern auch komplexere Logikstrukturen abbilden zu können. Dazu dienen die sogenannten Codeblöcke.
Aktuelle Version des LGs ist meinens Wissens die V1.9. Für den Einstieg empfehle ich die Übernahme eines vorhanden, kleinen Bausteins in den LG.
Schritt 1:
Erzeugen einer leeren Vorlage (z.B. BS-ID:10050, BS-Name:Testbaustein):
Aufruf: python.exe logikgenerator.py --new=10050:Testbaustein
Schritt 2:
Öffnen der neuen Datei 10050_Testbaustein.py. Jetzt, wie gewohnt, die Bausteinkonfiguraton vornehmen (Bereich 5000 -5004). Fürs erste würde ich die beiden Test-Codeblöcke (die beginnen jeweils mit code.append) auskommentieren. In den POSTLOGIK-Block müssen die 5012er Formelzeilen eingetragen werden. Die 5012er Musterzeilen bitte auch auskommentieren.
Das war's schon.
Schritt 3:
Generieren der Logik-Dateien.
Aufruf: python.exe 10050_Testbaustein.py
FERTIG.
Dafür bräuchte man den LG allerdings nicht. Das ging auch schon vorher. Aber jetzt weisst du schon mal, wie das Ding tickt.
Wenn du dich ein wenig mit dem LG vertraut gemacht hast, kannst du jetzt nach und nach versuchen, die 5012er-Zeilen innerhalb der Codeblöcke abzubilden. Dort kann man die Logikzeilen komfortabel in Python schreiben. Mit if, elif, else-, mit while- und mit for-Strukturen. Und es stehen alle Bibliotheken zur Verfügung, die auf dem HomeServer verfügbar sind. Nicht nur 4 oder 5. Und jetzt wird schnell klar, wo die Vorteile des LGs liegen.
Achtung! Keine sleeps verwenden und keine loops programmieren. Denn sonst steht die gesamte HS-Logik still!!!
Viel Erfolg.
Gruß
Peter
Einen Kommentar schreiben:
-
Helft mir bitte mal auf die Sprünge.....
Ich hab mir das jetzt schon sich mal durchgelesen und steig nicht dahinter was es mit dem LogigGenerator Template auf sich hat. Ist es richtig dass man dieses nur anpassen muss und diese Datei dann zusammen mit der hsl ins Logikverzeichniss kopiert?
Wie funktioniert das überhaupt mit dem Import?
Dacom hat doch in der Doku nur 4 Phyton Bibliotheken die freigegeben sind hinterlegt.
Wie funktioniert das dann genau? Ich seh die Zusammenhänge nicht richtig. :-(
Einen Kommentar schreiben:
-
Hallo Nils,
keine Entschuldigung nötig. Schließlich ist das hier doch alles freiwilliges Engagement und nicht selbstverständlich. Also erst einmal besten Dank für die ausführliche Beschreibung. Ich hatte schon alles mögliche ausprobiert, aber bis dato leider ohne Erfolg. Am kommenden Wochenende werd' ich das mal in Ruhe testen.
Ich hab' da noch ein kleines, bisher ungelöstes Problem. Hast Du da evtl. noch eine Idee? Ist auch nicht sehr eilig. Und zwar geht es um die Objekte OC[x] und ON[x]. Der lesende Zugriff auf diese Listen innerhalb eines Codeblocks ist kein Problem. Ich habe aber noch keine Möglichkeit gefunden, aus einem Codeblock heraus einen Timer zu starten. Wie gesagt, ist nicht eilig, aber grundsätzlich würde mich schon interessieren, wie und ob das überhaupt möglich ist.
Grüße aus Hattingen
Peter
Einen Kommentar schreiben:
-
Hi Peter,
sorry für die späte Antwort.
zu 1.
zu 2.Code:class KNXUF_demoClass: def __init__(self,logik): ## hier die aktuelle Logik übergeben self.logik = logik self.writesomething() def writesomething(self): self.sendout(1,"Das ist der Demobaustein") ## Senden auf die Ausgänge aus dem Thread heraus def sendout(self,out,wert): ## Der Index der Ausgänge fängt bei 0 und nicht bei 1 an daher -1 um die gewohnte Ausgangsnummer zu verwenden out=out-1 ## Auf iKO's schreiben try: for iko in self.logik.Ausgang[out][1]: try: iko.setWert(out,wert) iko.checkLogik(out) except: pass ## Logiken ausführen ## FixME hier kann es manchmal zu Fehlern kommen ## im Zweifelsfall einfach ein iKO dazwischen hängen for logik in self.logik.Ausgang[out][3]: try: logik[0].LogikItem.calc(logik[0],logik[1],wert,0,__import__('time').time()) except: pass except AttributeError: pass ## pItem ist die jetzige Logik 5012|1|"OC[1]"|"KNXUF_demoClass(pItem)"|""|0|0|1|0
Da du innerhalb der Logik NICHT global definierst verschwinden die Klassendefinitionen innerhalb der Logik wieder. Du musst also die zu erzeugende Klasse entweder innerhalb der Klasse definieren, oder die Klasse mit übergeben.
Code:class A: def __init__(self,wert): self.wert=wert def getWert(): return self.wert class B: def __init__(self,A_Class) self.myClassA = A_Class("Das ist der Wert") print self.myClassA.getWert() 5012|1|"OC[1]"|"B(A)"|""|0|0|1|0
ps: ich verwende immer OC[1] statt EI, da man so den HS "retten" kann wenn die Logik den HS sonst grillen würde
Code:## 20Sek Verzögerung zum starten der Logik falls sich der HS aufhängt beim Entwickeln 5012|1|"EI"|"1"|"20"|0|1|0|0
Einen Kommentar schreiben:
-
Logikgenerator / Zugriff auf Listen und Klassen
Hallo, am vergangenen Wochenende habe ich den Logikgenerator ausprobiert und wollte gar nicht mehr aufhören. Einfach nur klasse. Ich habe zwar alle Beiträge zum LG studiert, aber zwei Fragen sind dabei noch offen geblieben.
1. Aus den Codeblöcken ist ja problemlos der direkte Zugriff auf die Listen AN, AA, AC etc. möglich. Wie aber kann ich aus der eigenen Klasse (ohne Verwendung von 5012-Formelzeilen) auf diese Listen zugreifen?
2. Lassen sich zwei Klassen (z. A und B) so implementieren, dass Klasse A zur Laufzeit eine Instanz von Klasse B ezeugen kann.
Bin für jeden Tipp dankbar.
Gruß
Peter
Einen Kommentar schreiben:
-
Uwäää, der war aber nu doch schon sehr sehr alt
die Umfrage hat den nur nach oben geholt 
hier die Lösung
https://knx-user-forum.de/120970-post37.html
Ist bei manchen 2.4er/2.5er Versionen so., liegt aber wohl am Experten.
Einen Kommentar schreiben:
-
Der Baustein läuft unter 2.40. Aktuell ist zwar V.09, hat aber mit der FW nichts zu tun.Zitat von SebastianFey Beitrag anzeigendu schreibst experte 2.32. geht das mit 2.40 nicht mehr?
danke für deinen beistand!
Einen Kommentar schreiben:
-
Hmm, also der Baustein funzt bei mir ohne Probleme, ich hab jedoch auch keine 2.4er.
Ich nutze den Baustein selber auch nicht, daher hilft es vielleicht die Frage nochmal hier https://knx-user-forum.de/hsfusion/8...rbauswahl.html zu stellen. Bei fast 60 Downloads gibts doch bestimmt auch aktive Nutzer.
Einen Kommentar schreiben:
-
Ein Gast antwortetehier bitte.
habe auch ein testprojekt und die fehlermeldung beigepackt.Angehängte Dateien
Einen Kommentar schreiben:
-
Ein Gast antwortetediese datei:
C:\Dokumente und Einstellungen\All Users\Dokumente\HS+FS Experte\logic\12234_ColorConvert_V0.8.hsl
mit diesem header:
Code:# -*- coding: iso8859-1 -*- ## ----------------------------------------------------- ## ColorConvert ### V0.8 ## ## erstellt am: 2010-03-11 22:15 ## -----------------------------------------------------
du schreibst experte 2.32. geht das mit 2.40 nicht mehr?
danke für deinen beistand!
Einen Kommentar schreiben:


Einen Kommentar schreiben: