Ankündigung

Einklappen
Keine Ankündigung bisher.

OpenKNX-Logikmodul release

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

  • zenvy
    antwortet
    Zitat von mumpf Beitrag anzeigen
    So wie ich das verstanden habe, hältst Du im Union DPT-Abhängig einen Float oder einen Int vor. Jetzt ärgere ich mich, dass ich nicht selber drauf kam...
    Ich muss das nochmal checken bei Konvertierungen (z.B. DPT9 auf DPT5), aber das war vorher potentiell auch fehlerbehaftet.
    Genau, das ist die Idee. Man könnte das union auch so bauen, das die anderen DPTs ihren Datentyp behalten statt nach int32_t gecastet zu werden. Oder halt noch andere weirde DPTs einbauen.

    Zitat von mumpf Beitrag anzeigen
    Danke erstmal für die Idee. Ich komme allerdings erst kommende Woche dazu, hier was zu machen. Brauchst Du noch Hilfe beim Bauen, damit Du bei Dir die Sachen schon mal einbauen kannst? Sorry dass es derzeit Chaotisch ist, aber ich baue derzeit mehrere Projekte um, deswegen dauert das...
    Bauen läuft alles mit bisschen gefrickel.

    Ich hab allerdings evlt noch einen Bug gefunden

    Ich möchte min(A, B, C, D) machen, d.h. ich nehme mir drei Kanäle und mache im ersten min(A, B), im zweiten min(C, D) und im dritten min(Kanal 1, Kanal 2).
    Dazu hatte ich die "Kanalausgang X/Y" Funktion benutzt. Leider liefert der Kanal dann immer 0 zurück obwohl die beiden Einzelkanäle ordentlich ihr Minimum berechnen. Ich dachte erst, mein Patch hat das kaputt gemacht aber auch mit der 1.4 Release FW aus der zip ist das Kaputt.

    Mit viel Code lesen scheint mir das auch gar nicht so zu gehen und ich vermute mal hier wird nicht der End-Wert des Ausgangs sondern der End-Wert der Logikengine (die nur bool macht) verknüpft. Ich schätze hier muss ich zwei GAs nutzen um den berechneten Wert ordentlich zu transportieren oder?

    Edit: ich, ähm, hab das mal gebaut ist wahrscheinlich nicht schön und müsste angepasst werden bevor man das merged.

    Edit: Und nen Tag später merke ich, dass das gar nicht notwendig gewesen wäre wenn ich "normale" Eingänge mit "benutze vorhandene KO" gemacht hätte, oh well.
    Zuletzt geändert von zenvy; 02.12.2022, 10:23.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Zitat von exxtreme Beitrag anzeigen
    Aber würde das dann nicht dazu führen das der FlipFlop immer direkt zurückgesetzt wird, weil die Tür ist ja initial geschlossen (also FALS
    Naja, wenn Du das Logikmodul neu startest und die Tür zu ist, würdest Du die Info am Ausgang bekommen, dass die Tür zu ist, also ist der Briefkasten "geleert" (wenn Du den Eingang bei Neustart liest). Aber das ist ja auch nicht falsch, oder? Wobei ich hier gar nicht den letzten Zustand lesen würde, das ist nicht erforderlich.

    Und sonst ist es doch prima, wenn erst mit dem Schließen erst das "geleert" kommt, oder? Bei der derzeitigen Einstellung könnte sonst folgendes passieren:
    • Durch die Klappe wurde "Post" gemeldet.
    • Du machst die Tür auf -> "geleert" kommt
    • Während die Tür auf ist, kommst Du gegen die Klappe -> "Post" wird gemeldet
    • Jetzt machst Du die Klappe zu -> nix passiert, die Meldung "Post" ist immer noch da.
    • Du meldest hier im Forum, dass das RS-FlipFlop nicht funktioniert .
    Gruß, Waldemar

    Einen Kommentar schreiben:


  • willisurf
    antwortet
    Wie gesagt, versuche mal mit Test GAs und Beoachten der Reaktion im Gruppenmonitor der Sache auf die Spur zu kommen. Das kann auch Freude machen, wenn es am Ende funktioniert.

    Einen Kommentar schreiben:


  • exxtreme
    antwortet
    Zitat von mumpf Beitrag anzeigen
    Ehrlich gesagt, ich bin ratlos.
    Genau so geht es mir auch.

    Zitat von mumpf Beitrag anzeigen
    Kann ein anderes Gerät mit dem Logikmodul "reden"?
    Das werde ich nochmal probieren.

    Zitat von mumpf Beitrag anzeigen
    P.S.: Ich würde übrigens den Reset vom RS-Flipflop erst beim schließen der Tür triggern (also Eingang 2 negieren).
    Aber würde das dann nicht dazu führen das der FlipFlop immer direkt zurückgesetzt wird, weil die Tür ist ja initial geschlossen (also FALSE)?

    Zitat von mumpf Beitrag anzeigen
    P.P.S.: Ansonsten ist das RS-FlipFlop für genau diese Art von Anwendung gedacht, also genau richtig eingesetzt.
    Danke, ich hab mich auch echt über diese Funktion gefreut, da alle anderen Logikbausteine die ich habe, diese Funktion nicht anbieten.
    Zuletzt geändert von exxtreme; 01.12.2022, 13:55.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Ehrlich gesagt, ich bin ratlos.

    Denn sobald das gilt:
    Zitat von exxtreme Beitrag anzeigen
    Wenn ich die Werte über die ETS setze reagiert das Logikmodul wie erwartet.
    kann ich nichts mehr machen... Die Kommunikation auf dem Bus ist genormt. Und es ist Broadcasting. Wenn also Werte von einem empfangen werden können (ETS), können sie von allen empfangen werden.
    Das einzige, was dazwischen liegen kann ist ein Filter, üblicherweise sind das LK. Deswegen nochmal die Frage: Kein LK zwischen Tastsensor und Logikmodul?
    Wobei die Tatsache, dass Du die Telegramme vom Tasterinterface in der ETS siehst und von der ETS aus erfolgreich Telegramme senden kannst gegen einen LK spricht.

    Kann ein anderes Gerät mit dem Logikmodul "reden"?

    Gruß, Waldemar

    P.S.: Ich würde übrigens den Reset vom RS-Flipflop erst beim schließen der Tür triggern (also Eingang 2 negieren).

    P.P.S.: Ansonsten ist das RS-FlipFlop für genau diese Art von Anwendung gedacht, also genau richtig eingesetzt.

    Einen Kommentar schreiben:


  • willisurf
    antwortet
    Zitat von exxtreme Beitrag anzeigen
    Soweit ich das beurteilen kann, kommen die Werte an.
    Dann müsstest Du eigentlich mit dem Gruppenmonitor und ein paar Tests des Logikkanals herausfinden können, wo es hakt.

    Ich nehme für so etwas immer gern ein paar Test GAs und EasyKNX, das ist handlicher als der Gruppenmonitor (der aber auch funktioniert). Wenn die Test GA aus einem sonst unbenutztem Bereich stammen (z.B. Hauptgruppe 31) kannst Du gut filtern.

    Einen Kommentar schreiben:


  • exxtreme
    antwortet
    Zitat von mumpf Beitrag anzeigen
    Kommen denn wirklich Werte vom Tasterinterface? Briefkasten hört sich so an, als ob da ein LK (wegen Außenlinie) dazwischen ist.
    Soweit ich das beurteilen kann, kommen die Werte an. Ich kann sie auch im Gruppenmonitor sehen. Es handelt sich um zwei Reed-Kontakte im Briefkasten, das Tasterinterface dazu sitzt allerdings im Gebäude, daher ist das keine getrennte Außenline.

    Zitat von mumpf Beitrag anzeigen
    Und noch was: Du lässt Die Logik "Bei jedem Eingangstelegramm" reagieren, oder? Und "auch wenn noch nicht alle Werte bekannt sind"?
    Stimmt, dazu habe ich kein Screenshot gesendet, es ist aber genau so konfiguriert wie du es gesagt hast:

    image.png

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Zitat von exxtreme Beitrag anzeigen
    Kann mir jemand auf die Sprünge helfen?​​
    Kommen denn wirklich Werte vom Tasterinterface? Briefkasten hört sich so an, als ob da ein LK (wegen Außenlinie) dazwischen ist.

    Und noch was: Du lässt Die Logik "Bei jedem Eingangstelegramm" reagieren, oder? Und "auch wenn noch nicht alle Werte bekannt sind"?
    Das sehe ich in Deinem obigen Screenshot nicht...

    Gruß, Waldemar
    Zuletzt geändert von mumpf; 01.12.2022, 11:11.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    OK, danke.

    So wie ich das verstanden habe, hältst Du im Union DPT-Abhängig einen Float oder einen Int vor. Jetzt ärgere ich mich, dass ich nicht selber drauf kam...
    Ich muss das nochmal checken bei Konvertierungen (z.B. DPT9 auf DPT5), aber das war vorher potentiell auch fehlerbehaftet.

    Danke erstmal für die Idee. Ich komme allerdings erst kommende Woche dazu, hier was zu machen. Brauchst Du noch Hilfe beim Bauen, damit Du bei Dir die Sachen schon mal einbauen kannst? Sorry dass es derzeit Chaotisch ist, aber ich baue derzeit mehrere Projekte um, deswegen dauert das...

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • zenvy
    antwortet
    Ich hab dir hier mal einen proof of concept hingelegt.

    Wenn ich das Big VPM+LOG damit baue dann rechnet er korrekt. Ich habe allerdings noch nicht getestet ob die anderen DPTs alle noch gehen. Und ob DPT Mischungen korrekt sind.

    In processConvertInput ist ein TODO drin welches du schneller lösen kannst als ich. Es ist auch etwas unflexibel wenn jetzt noch mehr DPTs dazu kommen sollen aber das wars vorher ja auch.

    Am besten wäre natürlich ein struct statt einer union (dann weiß der uValue selber welcher DPT er ist) aber dann müsste man dynamisch Speicher allozieren oder weit genug oben im Stack 3-4 uValues vorhalten und mit runtergeben damit die gefüllt werden was auch hässlich ist.

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    zenvy: Da ich immer noch am Buildsystem arbeite und vieles ändere, würde ich Dir derzeit nicht empfehlen, selber zu bauen.

    Was wäre denn Deine Idee. Ich will sowieso das Logikmodul jetzt releasen, aber wenn Du eine Idee hast, kann ich das vielleicht noch vor dem Release aufnehmen. Und dann hätten es gleich alle...

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • zenvy
    antwortet
    Zitat von mumpf Beitrag anzeigen
    Was ich mich frage: Wenn Du sowieso das MDT-Modul hast, warum ziehst Du die Formel um? Die können Formeln komfortabler rechnen...
    Basteltrieb und ich möchte das MDT-Modul woanders einsetzen.

    Welchen Branch sollte man nehmen wenn ich das fixen möchte? main oder openknx-setup? Habe da eine Idee...

    Einen Kommentar schreiben:


  • exxtreme
    antwortet
    Ich hab auch ein Problem und vermutlich liegts an meiner eigenen Dummheit oder Unfähigkeit.

    Ich habe den Logikeingang als RS-Flip-Flop konfiguriert:

    image.png

    image.png

    Wenn ich die Werte über die ETS setze reagiert das Logikmodul wie erwartet. Wenn die Werte vom MDT Tasterinterface kommen, passiert einfach nichts.

    Kann mir jemand auf die Sprünge helfen?​​

    Einen Kommentar schreiben:


  • mumpf
    antwortet
    Hi,

    ist eigentlich ein Bug, nur weiß ich nicht, wie ich den lösen soll. Eigentlich sind Formeln ja nicht die Hauptkompetenz meines Logikmoduls, ich hab das eingebaut, um Kleinigkeiten korrigieren zu können. Ist auch im nachhinein eingeflossen. Ich war gezwungen, DPT9 intern als Integer zu transportieren (also *100) und bei der Ausgabe wieder durch 100 zu teilen. Wenn Du aber ein Produkt machst, müsste man durch 10000 Teilen. Ich muss da nochmal draufschauen. Bis dahin musst Du mehrstufig rechnen und nochmal selber durch 100 teilen. Oder Du nimmst nur mit 36 als integer (z.B. DPT5) mal und teilst dann nochmal durch 10 (wird etwas genauer). Sorry.

    Was ich mich frage: Wenn Du sowieso das MDT-Modul hast, warum ziehst Du die Formel um? Die können Formeln komfortabler rechnen...

    Gruß, Waldemar

    Einen Kommentar schreiben:


  • zenvy
    antwortet
    Hi,

    ich habe mir eben das VPM+LOG Big release auf meinem REG1 installiert.

    Habe nun angefangen meine Logiken vom MDT Logikmodul zu übertragen und bin entweder auf einen Bedienungsfehler oder Bug gestoßen.

    Ich will ganz klassisch Windgeschwindigkeit von m/s nach km/h umrechnen. Dazu habe ich das hier gemacht:

    log1.png log2.png log3.png log4.png

    Leider scheint das Logikmodul die 3,6 intern in 360 umzuwandeln und dann damit zu rechnen:
    log5.png

    Eine 3 (ohne Komma irgendwas) wird auch zu einer 300, es leigt also nicht am Komma.
    Ich kann 0,036 eintragen und dann rechnet er fast richtig, wahrscheinlich wird das auf 0,03 gerundet denn aus 5m/s werden 15km/h und nicht 18km/h.

    Habe ich noch irgendwas vergessen/nicht bedacht oder ists ein Bug im Logikmodul?

    Einen Kommentar schreiben:

Lädt...
X