Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - 1Wire im Plugin mit GA abfragen klappt nicht immer

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] - √ - 1Wire im Plugin mit GA abfragen klappt nicht immer

    Hallo,

    ich hab mal wieder ein Problem/Bug.
    Wenn ich in einem Plugin aktuelle Temperaturwerte abfragen will, dann bekomme ich keine korrekte Antwort zurück.
    Das Plugin sollte eigentich 1s auf die Antwort warten, dachte ich gelesen zu haben.
    Das ist bei mir so bei Patchlevel 28 (und auch 29 seit heute).


    Im Anhang seht ihr Webmin mit den zwei GA's um die es geht. (Globaler Sendezyklus steht auf 300 Sekunden.)
    Eigentlich sollte der Wert alle 10 Sekunden gesendet werden. Tut er aber nicht, aber das ist eingentlich nicht das Problem hier [gibt es einen anderen Thread für hab ich gesehen].
    Er soll ein Lesetelegramm senden, wenn der Wert zu alt ist.

    Und hier ein paar Zeilen auf dem Plugin:

    PHP-Code:
    my $t_warmwasser_ga "3/6/2";    #GA Temperatur Warmwasser
    my $t_zirkulation_ga "3/6/3";   #GA Temperatur Zirkulation

    ...

    my $temp_warmwasser knx_read($t_warmwasser_ga,15,"9.001"); #max 15 sekunden alt
    my $temp_zirkulation knx_read($t_zirkulation_ga,15,"9.001"); #max 15 sekunden alt

    ...

    my $error 0;
    if (
    $temp_warmwasser == 0){$error=1plugin_log($plugname,"Lesefehler Warmwasser!");}
    if (
    $temp_zirkulation == 0){$error=1plugin_log($plugname,"Lesefehler Zirkulation!");}
    if (
    $error == 1){return;} 
    Ich hoffe das ist soweit klar und vorallem richtig ;-)

    /var/log/wiregate_plugin.log:

    2011-11-13 19:41:26.658,_TEST - Zirkulationspumpe NEU,Lesefehler Warmwasser!
    2011-11-13 19:41:26.658,_TEST - Zirkulationspumpe NEU,Lesefehler Zirkulation!
    2011-11-13 19:41:34.952,_TEST - Zirkulationspumpe NEU, Timer: Immer2 [STATE: 0->1] Timer [W:38.5 Z:32 d:6.5],0s,
    2011-11-13 19:41:36.038,_TEST - Zirkulationspumpe NEU, Timer: Immer2 [STATE: 1->0] Wasser noch warm genug. [W:38.5 Z:32 d:6.5],0s,
    2011-11-13 19:42:36.287,_TEST - Zirkulationspumpe NEU, Timer: Immer2 [STATE: 0->1] Timer [W:38 Z:31.74 d:6.26],0s,
    2011-11-13 19:42:37.466,_TEST - Zirkulationspumpe NEU, Timer: Immer2 [STATE: 1->0] Wasser noch warm genug. [W:38 Z:31.74 d:6.26],0s,
    2011-11-13 19:43:39.593,_TEST - Zirkulationspumpe NEU,Lesefehler Warmwasser! Letzter Wert zu alt (>15s) - Lesen nötig und erfolgreich (siehe unten im eib.log)
    2011-11-13 19:43:39.593,_TEST - Zirkulationspumpe NEU,Lesefehler Zirkulation!
    2011-11-13 19:43:48.031,_TEST - Zirkulationspumpe NEU, Timer: Immer2 [STATE: 0->1] Timer [W:37.5 Z:31.24 d:6.26],0s,
    2011-11-13 19:43:49.117,_TEST - Zirkulationspumpe NEU, Timer: Immer2 [STATE: 1->0] Wasser noch warm genug. [W:37.5 Z:31.24 d:6.26],0s,


    /var/log/eib.log:

    2011-11-13 19:41:02.753,A_GroupValue_Write,0.0.0,3/6/3,0E 4C,32.24,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_R EQ,0
    2011-11-13 19:41:05.233,A_GroupValue_Write,0.0.0,3/6/2,0F 91,38.74,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_R EQ,0 Zyklisch
    2011-11-13 19:41:28.381,A_GroupValue_Read,0.0.0,3/6/2,00,0,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_REQ ,0
    2011-11-13 19:41:28.765,A_GroupValue_Read,0.0.0,3/6/3,00,0,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_REQ ,0
    2011-11-13 19:41:28.780,A_GroupValue_Response,0.0.0,3/6/2,0F 85,38.5,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_RE Q,0
    2011-11-13 19:41:28.785,A_GroupValue_Response,0.0.0,3/6/3,0E 40,32,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_REQ, 0
    2011-11-13 19:42:33.163,A_GroupValue_Write,0.0.0,3/6/3,0E 33,31.74,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_R EQ,0
    2011-11-13 19:42:33.168,A_GroupValue_Write,0.0.0,3/6/2,0F 6C,38,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_REQ, 0 Zyklisch (zu spät)
    2011-11-13 19:43:39.957,A_GroupValue_Read,0.0.0,3/6/2,00,0,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_REQ ,0 Lesetelegramm -> ok
    2011-11-13 19:43:40.308,A_GroupValue_Read,0.0.0,3/6/3,00,0,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_REQ ,0
    2011-11-13 19:43:40.316,A_GroupValue_Response,0.0.0,3/6/2,0F 53,37.5,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_RE Q,0 Response -> ok
    2011-11-13 19:43:40.324,A_GroupValue_Response,0.0.0,3/6/3,0E 1A,31.24,DPT_Value_Temp,9.001,0,low,7,T_DATA_XXX_R EQ,0



    Vergessen wir mal das Zyklische (BLAU) - anderer Thread wie gesagt.

    Farblkich ROT hervorgehoben hab ich mal die Aktionen bei Warmwasser = 3/6/2. (Bei der anderen ists ja gleich).

    Nun die Preisfrage:

    Wieso wird zwar ein Sendetelegramm gesendet, es kommt auch ein Response, aber das Plugin bekommt das nicht mit, sondern nur 0 und wirft dann die Fehlermeldung aus?
    Oder hab ich was falsch gemacht?


    Gruß
    Tobi
    Angehängte Dateien
    Wiregate #288

    #2
    Das geht nicht, by Design.

    Man kann aus einem Plugin keinen "lokalen" Wert via KNX lesen (bzw. nur aus dem Cache) weil es im selben Thread abläuft -> Das max alter sollte also immer deutlich grösser als der Sendezyklus sein..

    Makki
    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
    -> Bitte KEINE PNs!

    Kommentar


      #3
      Okay, dann erstmal danke für die fixe Antwort.
      Könnte man das vielleicht in der "Hilfe.."-Popum mit aufnehmen?

      Dort steht bei mir nur der Hinweis auf andere Plugins, aber nicht auf andere Wiregate-interne GAs.
      ...
      Wichtig:Niemals sollte man aus einem Plugin etwas aus einem anderen Plugin per knx_read lesen, denn dies führt zu einer Blockade.
      (ausser mit Alter 0 aus dem Cache oder - besser - den Wert über die Globale Variable $plugin_info)
      ...

      Wie bekomme ich denn die Werte relativ aktuell ins Plugin?
      Geht das dann nur über die Art im "Highspeed"-Plugin oder gibts noch nen anderen Ansatz?
      Wiregate #288

      Kommentar


        #4
        Doku: hab ich aufgenommen.

        Die eine Variante ist indeed "Highspeed" - das ist recht bewusst undokumentiert aber ich sollte euch gut genug kennen das es jemand findet - wer das macht soll bitte wirklich verstehen was er da tut, denn es fährt die Kiste ans Limit!

        Die andere: wirklich darüber nachdenken, ob/wo man irgendwelche sekündlich aktualisierten Werte in traditionell eher trägen Systemen bracht

        Makki
        EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
        -> Bitte KEINE PNs!

        Kommentar

        Lädt...
        X