Vermute eher das zweite rote “ bei der Version
Ankündigung
Einklappen
Keine Ankündigung bisher.
Suche Hilfe beim Erstellen eines HSL2.0-Baustein
Einklappen
X
-
-
Zitat von Axel Beitrag anzeigenVermute eher das zweite rote “ bei der Version
Habe es geändert, nur leider nimmt mir der HS-experte, das trotzdem nicht an.
Weist du vl, wie ich den Code in eine HSL Datei umwandle ?
Kommentar
-
Endung ändern ? welche Endung hast du jetzt?
Kommentar
-
Zitat von Axel Beitrag anzeigenEndung ändern ? welche Endung hast du jetzt?
Kommentar
-
Könnten wir evtl. zum Topic zurück kommen und etwas über HSL2.0 und der Erstellung von Logiken kommen?
Vorsatz fürs Jahr 2022 und jetzt dürfen alle Programmierer, denen ich etwas böses in der E-Technik getan habe, fleißig auf mein einhaken und mir erklären wie blöd ich bin.
Ich bitte um die Korrektur/Bestätigung folgender Aussagen, wenn ich diese falsch verstanden habe, weil irgendwie komme ich damit nicht weiter:
1. Aussage: HSL2.0 ist auch nur Python!
ABER, wenn ich fleißig Python Tuts anschaue, durchlese und probiere. Inkl. Pycharm Installation. Dann klappt das Wissen aus den Tuts wunderbar in Pycharm, aber wenn ich das auf die HSL2.0 Beispiele von Gira/Dacom anwende, dann ist da überhaupt nichts aus Python?
Was ich meine?
Ich würde gerne kapiere, was hat es mit diesem self. auf sich? Das wird z.b. auf keiner Python Webseite erklärt. Was ist das? Wo kommt das her?
Dann habe ich mir vorgenommen, mit eigenen Mittel/Verstand, das Beispiel des Subtraktionsbeispieles in einen Additionsbaustein umzuwandeln. Also das, was es in HSL1.0 bereits gibt und was bestimmt 1000% ist, einfach nochmal im HSL2.0.
Im Beispiel wird über 2 Variablen gerechnet. Diese Variablen werden bei der Initialisierung auf 0 gesetzt und anschließend wird bei einem Eingang Event gerechnet. Ersetze ich diesen Code 1:1 über die direkten 2 Inpus auf das Output, passiert nichts. Ist das einfach nur schlechter Stil oder ist das überhaupt Blödsinn und wo kann man so etwas nach lesen?
Ähm, ich suche gleich mal heraus was ich meine und was ich zusammen gestümpert habe...Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!
Kommentar
-
Ich habe noch etwas herum probiert.
1:1 Versuch von Gira übernommen und nur das mathematische Zeichen ersetzten:
Code:# coding: utf-8 ##!!!!############################################ ################################################## #### #### Own written code can be placed above this commentblock . Do not change or delete commentblock! #### ################################################## ################################################## #### ##** Code created by generator - DO NOT CHANGE! **## class AdditionsUEbung19111(hsl20_4.BaseModule): def __init__(self, homeserver_context): hsl20_4.BaseModule.__init__(self, homeserver_context, "addition") self.FRAMEWORK = self._get_framework() self.LOGGER = self._get_logger(hsl20_4.LOGGING_NONE,()) self.PIN_I_INPUT_A=1 self.PIN_I_INPUT_B=2 self.PIN_O_ERGEBNIS=1 self.REM_VALUE_1=1 self.REM_VALUE_2=2 ################################################## ################################################## #### #### Own written code can be placed after this commentblock . Do not change or delete commentblock! #### ################################################## #################################################! !!## tmp_result = 0 def on_init(self): self.REM_VALUE_1 = 0.0 self.REM_VALUE_2 = 0.0 def on_input_value(self, index, value): if index == 1: self.REM_VALUE_1 = value else: self.REM_VALUE_2 = value self.calc_result() def calc_result(self): tmp_result = self.REM_VALUE_1 + self.REM_VALUE_2 self._set_output_value(self.PIN_O_ERGEBNIS, tmp_result)a
Code:# coding: utf-8 ##!!!!############################################ ################################################## #### #### Own written code can be placed above this commentblock . Do not change or delete commentblock! #### ################################################## ################################################## #### ##** Code created by generator - DO NOT CHANGE! **## class AdditionsUEbung19111(hsl20_4.BaseModule): def __init__(self, homeserver_context): hsl20_4.BaseModule.__init__(self, homeserver_context, "addition") self.FRAMEWORK = self._get_framework() self.LOGGER = self._get_logger(hsl20_4.LOGGING_NONE,()) self.PIN_I_INPUT_A=1 self.PIN_I_INPUT_B=2 self.PIN_O_ERGEBNIS=1 self.REM_VALUE_1=1 self.REM_VALUE_2=2 ################################################## ################################################## #### #### Own written code can be placed after this commentblock . Do not change or delete commentblock! #### ################################################## #################################################! !!## tmp_result = 0 def on_init(self): self.REM_VALUE_1 = 0.0 self.REM_VALUE_2 = 0.0 def on_input_value(self, index, value): if index == 1: self.REM_VALUE_1 = value else: self.REM_VALUE_2 = value self.calc_result() def calc_result(self): self.PIN_O_ERGEBNIS = self.PIN_I_INPUT_A + self.PIN_I_INPUT_B self._set_output_value(self.PIN_O_ERGEBNIS, tmp_result)
Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!
Kommentar
-
tmp_result initialisierst Du am Anfang mit 0, und genau das gibst Du in der letzten Zeile auf den Ausgang aus. Ich hab zwar keine Ahnung, aber ich befürchte es kommt immer 0 am Ausgang an.
self.PIN_O_ERGEBNIS sagt das es Ausgang 1 ist (wurde ja vorher so deklariert), der auf den Wert von tmp_result gesetzt wird.Zuletzt geändert von vento66; 05.01.2022, 22:16.
Kommentar
-
Ich habe noch etwas weiter gelesen.. ich habe jetzt kapiert warum ich überall self. davor schreiben muss (also denke ich, da die Funktion hsl20_4.BaseModul initialisiert wird. Der Aufruf ist dann immer self. index, value.
Daraus wurde jetzt:
Code:# coding: utf-8 ##!!!!############################################ ################################################## #### #### Own written code can be placed above this commentblock . Do not change or delete commentblock! #### ################################################## ################################################## #### ##** Code created by generator - DO NOT CHANGE! **## class AdditionsUEbung19111(hsl20_4.BaseModule): def __init__(self, homeserver_context): hsl20_4.BaseModule.__init__(self, homeserver_context, "addition") self.FRAMEWORK = self._get_framework() self.LOGGER = self._get_logger(hsl20_4.LOGGING_NONE,()) self.PIN_I_INPUT_A=1 self.PIN_I_INPUT_B=2 self.PIN_O_ERGEBNIS=1 self.REM_VALUE_1=1 self.REM_VALUE_2=2 ################################################## ################################################## #### #### Own written code can be placed after this commentblock . Do not change or delete commentblock! #### ################################################## #################################################! !!## def on_init(self): pass def on_input_value(self, index, value): sum = self.PIN_I_INPUT_A + self.PIN_I_INPUT_B self._set_output_value(self.PIN_O_ERGEBNIS, sum)
Kann mir Jemand, evtl. für Doofe (ich wurde heute schon als "Häuslebauer, der fragt wie die ETS funktioniert?" bezeichnet, was ein vollkommen zutreffender Vergleich ist!) erklären, warum im Beispiel Baustein (ja, ich weiß, das ist ein Teiler) folgende Funktion aufgerufen wird:
Code:def on_input_value(self, index, value): if index == 1: self.REM_VALUE_1 = value else: self.REM_VALUE_2 = value
Der Original Code ist:
Code:tmp_result = 0 def on_init(self): self.REM_VALUE_1 = 0.0 self.REM_VALUE_2 = 0.0 def on_input_value(self, index, value): if index == 1: self.REM_VALUE_1 = value else: self.REM_VALUE_2 = value self.calc_result() def calc_result(self): try: tmp_result = self.REM_VALUE_1 / self.REM_VALUE_2 self._set_output_value(self.PIN_O_RESULT, tmp_result) except ZeroDivisionError: self._set_output_value(self.PIN_O_ERROR, 1.0)
Zuletzt geändert von BadSmiley; 06.01.2022, 12:56.Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!
Kommentar
-
Hir mal eine Interpretation:
Code:// Wenn an einem Eingang ein Wert ankommt // Index = Nummer des Eingangs // value = Wert an dem Eingang def on_input_value(self, index, value): // Wenn der Index (Nummer) des Einganges 1 ist: if index == 1: // Speichere den empfangenen wert nach REM_VALUE_1 self.REM_VALUE_1 = value // sonst else: // Speichere den empfangenen wert nach REM_VALUE_2 self.REM_VALUE_2 = value
- Likes 1
Kommentar
-
hier noch der Rest nach deiner Änderung??
Code://function calc_result aufrufen: self.calc_result() // Funktionsdefinition calc_result def calc_result(self): //versuche try: //setze die Variable tmp_result auf das Ergebniss von REM_VALUE_1 / REM_VALUE_2 tmp_result = self.REM_VALUE_1 / self.REM_VALUE_2 //setze PIN_O_RESULT auf den Wet von tmp_result self._set_output_value(self.PIN_O_RESULT, tmp_result) // Falls division / 0 except ZeroDivisionError: // setzte den PIN_O_ERROR self._set_output_value(self.PIN_O_ERROR, 1.0)
Kommentar
-
Danke Micha, ich nehme übrigens alles zurück. Mein Baustein funktioniert, weil als Ergebnis immer 3 heraus kommt und ich 1+2 gerechnet habe. Rechne ich dagegen jede, beliebige andere Konstellation aus Zahlen zusammen, bleibt das Ergebnis 3. Ich gehe nochmal zurück auf die Schulbank.Oder ich betitelt den Baustein einfach als "immer drei". Mal sehen was zielführender ist.
Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!
Kommentar
-
Hm, ist jetzt nur geraten, aber an sich schreibt das der Logikbenerator ja genau so in den Baustein:
Code:def __init__(self, homeserver_context): hsl20_4.BaseModule.__init__(self, homeserver_context, "addition") self.FRAMEWORK = self._get_framework() self.LOGGER = self._get_logger(hsl20_4.LOGGING_NONE,()) self.PIN_I_INPUT_A=1 self.PIN_I_INPUT_B=2
Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!
Kommentar
-
Danke an vento66 und ets3-user die mir etwas in den Hintern treten.
Nachdem ich kapiert hatte, das ich mit self._set_output_value (self.ausgangpin, Wert) zuweise, kam ich nicht weiter mit dem 1+2=3 Problem.
Christian meinte, ich muss mit den Wert des Eingangs über self._geht_input_value(self.eingangpin, Wert) holen,so steht es auch in der Hilfe. ABER ich bin nicht darauf gekommen, wie die Herren von Gira/Dacom das in ihrem Beispiel machen.
Gehe ich richtig in der Annahme die machen das hier:
Zitat von vento66 Beitrag anzeigen// Wenn der Index (Nummer) des Einganges 1 ist:
if index == 1:
// Speichere den empfangenen wert nach REM_VALUE_1
self.REM_VALUE_1 = value
Hat Jemand evtl. passenden Python Hilfe Seiten mit irgendwie passenden Aufgabe und Beispielen? Sonst beömmel ich euch einfach hier weiter, irgendwer wird schon Mitleid zeigen.Es gibt so viele Hilfeseiten für Python, aber irgendwie passt nichts davon so richtig zu dem wie der HS funktioniert oder ich habe es noch nicht kapiert. Ich stümpere mal weiter..
Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!
Kommentar
Kommentar