Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Einsteigerfragen
  4. Einbindung von Geräten
  5. IoBroker.Jeelink + Davis geht teilweise - Hilfe beim Rest?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    265

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

IoBroker.Jeelink + Davis geht teilweise - Hilfe beim Rest?

Geplant Angeheftet Gesperrt Verschoben Einbindung von Geräten
jeelink-adapterdavis-vantage-pro-2hilfe
25 Beiträge 3 Kommentatoren 2.5k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • M Offline
    M Offline
    McCavity
    schrieb am zuletzt editiert von McCavity
    #21

    Einen habe ich doch noch, den ich nicht vorenthalten wollte - ich habe gerade gesehen, daß im Battery Status auf einmal "okOK" steht - da hat der Parser etwas mißverstanden. Den dafür verantwortlichen Empfang habe ich im Log finden können:

    2022-12-23 14:10:41.380  - debug: jeelink.0 (18237) data received: OK VALUES DAVIS 0 20=3,22=-66,21=okOK VALUES DAVIS 0 20=4,22=-6 DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=228,8=39,
    2022-12-23 14:10:41.385  - debug: jeelink.0 (18237) Sensor ID    : 0
    2022-12-23 14:10:41.386  - debug: jeelink.0 (18237) splice       : 20=3,22=-66,21=okOK,VALUES,DAVIS,0,20=4,22=-6,DAVIS,0,20=1,22=-67,21=ok,4=0.00,5=228,8=39,
    2022-12-23 14:10:41.387  - debug: jeelink.0 (18237) something is wrong in stream 20=3,22=-66,21=okOK strange part ->VALUES
    2022-12-23 14:10:41.389  - debug: jeelink.0 (18237) Channel   :   3
    2022-12-23 14:10:41.389  - debug: jeelink.0 (18237) RSSI     : -66
    2022-12-23 14:10:41.392  - debug: jeelink.0 (18237) Battery   : okOK
    2022-12-23 14:10:41.440  - debug: jeelink.0 (18237) state jeelink.0.DavisVantage_1.rssi changed: -66 (ack = true)
    2022-12-23 14:10:41.443  - debug: jeelink.0 (18237) state jeelink.0.DavisVantage_1.battery changed: okOK (ack = true)
    

    Man sieht, daß das mal wieder eine "vermackelte" Zeile war:

    2022-12-23 14:10:41.380  - debug: jeelink.0 (18237) data received: OK VALUES DAVIS 0 20=3,22=-66,21=okOK VALUES DAVIS 0 20=4,22=-6 DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=228,8=39,
    

    Es scheint, als würde der Adapter momentan nur dann anfangen zu arbeiten, wenn das Zeilenpräfix "OK VALUES DAVIS" nicht am Anfang der Zeile steht - zumindest läßt die Log-Zeile

    2022-12-23 14:10:41.386  - debug: jeelink.0 (18237) splice       : 20=3,22=-66,21=okOK,VALUES,DAVIS,0,20=4,22=-6,DAVIS,0,20=1,22=-67,21=ok,4=0.00,5=228,8=39,
    

    darauf schließen. Trotzdem scheint er, wenn er die Zeile verarbeitet, richtigerweise von vorne anzufangen. Er hat auch bemerkt, daß irgendetwas nicht stimmt, was die nächste Logzeile bestätigt:

    2022-12-23 14:10:41.387  - debug: jeelink.0 (18237) something is wrong in stream 20=3,22=-66,21=okOK strange part ->VALUES
    

    Im Prinzip müßte der Parser pro empfangener Zeile folgendes prüfen:

    • Das Präfix lautet fix "OK VALUES DAVIS"
    • Die ID besteht aus einer einzelnen Ziffer zwischen zwei Leerzeichen
    • Ein Meßwert besteht aus einem Schlüssel, dem Gleichheitszeichen, dem Wert und einem Komma
    • Schlüssel bestehen aus einer ein-oder zweistelligen Nummer, optional einem Punkt plus einer weiteren Ziffer
    • Werte können verschiedene Datentypen enthalten: unsigned int (z.B. WindDirection) signed int (z.B. RSSI), signed float (z.B. Temperature, Dezimaltrennzeichen ist der Punkt), String (z.B. Battery)
    • alle möglichen Schlüssel sind bekannt

    Datentypen (vermutlich):

     Schlüssel  | Name                   | Datentyp       |  Beispielwert | Werteliste / Anmerkungen
    ------------+------------------------+----------------+---------------+-------------------------------------------------------------------------------------
    * 1         | Temperature            | signed float   | -9.67         |
    * 2         | Pressure               | ?              | ?             | Sensor nur in Basisstation
    * 3         | Humidity               | unsigned float | 98.00         | (max. 100.00)
    * 4         | WindSpeed              | unsigned float | 1.61          |
    * 5         | WindDirection          | unsigned int   | 151           | (max. 360)
    * 6         | WindGust               | unsigned float | 1.61          |
    * 7         | WindGustRef            | int(?)         | 2             | (vermutlich int; ich weiß aber auch nicht, was dieser Wert genau bedeutet)
    * 8         | RainTipCount           | unsigned int   | 39            | (max. 127 (vermutlich)
    * 9         | RainSecs               | signed int     | -1            | Wert ist entweder -1 (es ist derzeit kein Niederschlag festgestellt) oder (vermutlich) >=0; max. unbekannt. Ist der Wert >=0, dann bedeutet das, daß derzeit Niederschlag vorliegt (wird in der Basisstation mit einem Schirmsymbol angezeigt). Ich weiß aber nicht, wie sich das genau manifestiert, das muß ich mal bei einer längeren Regenphase mitloggen
    * 10        | Solar                  | ?              | ?             | Sensor nicht vorhanden
    * 11        | VoltageSolar           | ?              | ?             | Sensor nicht vorhanden
    * 12        | VoltageCapacitor       | ?              | ?             | Sensor nicht vorhanden
    * 13        | SoilLeaf               | ?              | ?             | Sensor nicht vorhanden
    * 14        | UV                     | ?              | ?             | Sensor nicht vorhanden
    * 15.[1..4] | SoilTemperature.[1..4] | ?              | ?             | Sensor nicht vorhanden
    * 16.[1..4] | SoilMoisture.[1..4]    | ?              | ?             | Sensor nicht vorhanden
    * 17.[1..2] | LeafWetness.[1..2]     | ?              | ?             | Sensor nicht vorhanden
    * 20        | Channel                | unsigned int   | 3             | [0..4]
    * 21        | Battery                | string         | ok            | vermutlich {ok,nok}
    * 22        | RSSI                   | signed int     | -66           |
    * 255       | PacketDump             | ?              | ?             | vermutlich eh nur, wenn Debugging im Stick eingeschaltet wird, keine Ahnung, wie das dann aussieht :-)
    

    Annahmen / Beobachtungen:

    • Die Meßwerte beginnen mit einer fixen Folge (Schlüsselnummer in Klammern): <Channel (20)><RSSI (22)><Battery (21)><WindSpeed (4)><WindDirection (5)>
    • nach den fixen Meßwerten folgen i.d.R. 0 bis 2 weitere Meßwerte
    • Die Meßwerte <Temperature (1)>, <Humidity (3)>, <RainTipCount (8)> und <RainSecs (9)> werden einzelnen übertragen
    • Die Meßwerte <WindGust (6)> und <WindGustRef (7)> werden in der gleichen Zeile direkt nacheinander übertragen
    • Werte mit einem float Datentyp haben zwei Nachkommastellen
    • Eine optimale Zeile sieht wie folgt aus:
      <Präfix><ID><Channel (20)><RSSI (22)><Battery (21)><WindSpeed (4)><WindDirection (5)>[<Meßwert (x)>...]

    Weitere Meßwerte kann ich ohne weiteres auch leider nicht beurteilen, da mir dazu die Sensoren fehlen (der Drucksensor der Station ist in die Basisstation eingebaut und die funkt nicht, die empfängt nur... ;-)

    Fehlerfälle und Ausnahmen:

    • Das Präfix kann unvollständig sein, möglicherweise auch falsche Zeichen enthalten
    • Das Präfix kann auch weiter hinten in der Zeile erscheinen, das ist zwingend ein Zeichen dafür, daß die vorherige Zeile unvollständig war - möglicherweise fehlt nur der Zeilenumbrauch, möglicherweise aber auch ein oder mehrere vollständige Meßwerte oder ein Teil eines Meßwertes
    • Meßwerte ohne abschließendes Komma sind möglicherweise unvollständig und sollten ggf. verworfen werden und nur im Log erwähnt werden, zumindest als debug - eine höhere Stufe könnte man ggf. überdenken.

    Ich weiß nicht, ob es möglich ist, daß Zeilen auch ohne das Präfix beginnen können; so gut kenne ich den JeeLink-Sketch nicht, aber da sowohl das Funkprotokoll als auch das serielle Protokoll als unzuverlässig eingestuft werden müssen, würde ich damit rechnen, daß es überall zu fehlenden Bytes kommen kann und daher ein paar Sanity-Checks einbauen. Zusammen mit den Datentypen sollten sich zumindest ein paar Grundchecks durchführen lassen, genauso damit, daß es im Prinzip nur das Präfix aus Großbuchsteben und den (vermutlich) einzigen String Wert in Kleinbuchstaben gibt. Merkt sich der Adapter eigentlich die zuletzt gemessenen Werte? Falls ja, könnte man überlegen, ob man da ggf. noch Änderungen über die Zeit prüfen möchte - aber ich denke, das sollte dann schon extern in der Auswertung geschehen, je weniger der Adapter voraussetzt, umso besser. Wenn der Adapter gut erkennt, und wenn es die Feststellung "schlechter Empfang" ist, dann ist schon viel gewonnen :-)

    F 1 Antwort Letzte Antwort
    0
    • M Offline
      M Offline
      McCavity
      schrieb am zuletzt editiert von
      #22

      Ach ja, fast vergessen... wird der Channel (Schlüssel 20) eigentlich als Datenpunkt gespeichert? Ich sehe im Log, daß er erkannt wird, wenn er erkannt wird, aber ich finde den Datenpunkt irgendwie nicht in den Objekten des IoBroker...?

      F 1 Antwort Letzte Antwort
      0
      • M McCavity

        EDIT (4x) - siehe unten.

        Moin, ich habe jetzt die 1.2.2 mal in mein Produktivsystem installiert. Die gute Nachricht: grundsätzlich startet der Adapter:

        pi@iobapp01:~ $ iobroker logs jeelink
        2022-12-23 09:47:07.783  - debug: jeelink.0 (18237) Redis Objects: Use Redis connection: 127.0.0.1:9001
        2022-12-23 09:47:07.868  - debug: jeelink.0 (18237) Objects client ready ... initialize now
        2022-12-23 09:47:07.894  - debug: jeelink.0 (18237) Objects create System PubSub Client
        2022-12-23 09:47:07.896  - debug: jeelink.0 (18237) Objects create User PubSub Client
        2022-12-23 09:47:08.003  - debug: jeelink.0 (18237) Objects client initialize lua scripts
        2022-12-23 09:47:08.015  - debug: jeelink.0 (18237) Objects connected to redis: 127.0.0.1:9001
        2022-12-23 09:47:08.073  - debug: jeelink.0 (18237) Redis States: Use Redis connection: 127.0.0.1:9000
        2022-12-23 09:47:08.131  - debug: jeelink.0 (18237) States create System PubSub Client
        2022-12-23 09:47:08.134  - debug: jeelink.0 (18237) States create User PubSub Client
        2022-12-23 09:47:08.196  - debug: jeelink.0 (18237) States connected to redis: 127.0.0.1:9000
        2022-12-23 09:47:08.672  - info: jeelink.0 (18237) starting. Version 1.2.2 (non-npm: foxthefox/ioBroker.jeelink) in /opt/iobroker/node_modules/iobroker.jeelink, node: v16.18.1, js-controller: 4.0.23
        2022-12-23 09:47:08.719  - info: jeelink.0 (18237) start of main
        2022-12-23 09:47:08.789  - info: jeelink.0 (18237) RFM12B setting up object = DavisVantage 1
        2022-12-23 09:47:09.273  - info: jeelink.0 (18237) configured port : /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI05CBYZ-if00-port0
        2022-12-23 09:47:09.274  - info: jeelink.0 (18237) configured baudrate : 57600
        2022-12-23 09:47:09.275  - info: jeelink.0 (18237) instantiating SerialPort path: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI05CBYZ-if00-port0 baudrate : 57600
        2022-12-23 09:47:09.292  - info: jeelink.0 (18237) adapter opened the SerialPort
        2022-12-23 09:47:10.797  - debug: jeelink.0 (18237) message to USB-stick written : 0,0s r
        2022-12-23 09:47:11.889  - debug: jeelink.0 (18237) data received:
        2022-12-23 09:47:11.905  - debug: jeelink.0 (18237) data received: [DAVIS.0.8e compiled at Sep  5 2020 16:30:03 (RFM69 b:2)]
        2022-12-23 09:47:12.975  - debug: jeelink.0 (18237) data received: INIT DICTIONARY 1=Temperature,2=Pressure,3=Humidity,4=WindSpeed,5=WindDirection,6=WindGust,7=WindGustRef,8=RainTipCount,9=RainSecs,10=Solar,11=VoltageSolar,12=VoltageCapacitor,13=SoilLeaf,14=UV,15.1=SoilTemperature.1,16.1=SoilMoisture.1,17.1=LeafWetness.1,15.2=SoilTemperature.2,16.2=SoilMoisture.2,17.2=LeafWetness.2,15.3=SoilTemperature.3,16.3=SoilMoisture.3,15.4=SoilTemperature.4,16.4=SoilMoisture.4,20=Channel,21=Battery,22=RSSI,255=PacketDump,
        

        Die etwas-weniger-gute Nachricht: das war's dann aber leider auch schon bis jetzt. Ich habe den Eindruck daß - warum auch immer - das Startkommando nicht beim Stick landet: als ich Minicom angeworfen habe, (nachdem der Adapter schon rund eine Minute lief), konnte ich keine Daten auf dem seriellen Bus sehen. Ich habe dann wie testweise wieder "0,0s r<ENTER>" geschickt und der Stick fing dann auch gleich an, Daten zu liefern - aber in IoBroker landen die irgendwie trotzdem nicht :-/

        Von dem Adapter (er läuft, seit ich ihn gestartet habe) kamen in der ganzen Zeit jetzt (seit ich den Adapter gestartet und diesen Beitrag geschrieben habe) keine neuen Meldungen mehr im Logfile. Das gleiche hatte ich allerdings gestern auch schon auf dem Dev-Server beobachtet, möglicherweise hat sich da irgendwo ein Bug eingeschlichen?

        Die Einstellungen sind weitgehend identisch mit der Dev-Umgebung, nur das Device ist anders - das hatte ich schon immer über /dev/serial/by-id eingebunden und eigentlich[TM] sollte das ja keine größeren Auswirkungen haben:
        49d06c76-f11b-48b6-bd29-3f719777d4d0-image.png

        Wie gesagt: eilt nicht, ich lasse es erstmal so, wie es ist, und harre der Dinge, die da kommen - vielleicht schaffe ich es ja über die Feiertage auch, Visual Studio Code mit meinem Dev-Server zu verbinden, und mal selbst einen Blick auf den Code zu werfen ;-)

        Vielen Dank Dir nochmal für den großartigen Support, frohes Fest und viele Grüße,
        Henning

        EDIT:
        Oh! Noch eine interessante Ergänzung, die vielleicht beim Debugging helfen kann: es kamen jetzt (das habe ich zufällig aus dem Augenwinkel gesehen) plötzlich doch mal Daten im IoBroker an - wenn auch leider keine sinnvollen:

        2022-12-23 10:20:01.217  - debug: jeelink.0 (18237) data received: 0,22=-66,21=ok,4=0.00,5=196,1=9.28,
        

        Aber ich konnte die Zeile in Minicom (das parallel noch immer mit läuft) identifizieren:

        OK VALUES DAVIS 0 20=OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,8=39,
        

        Wie man sieht war die Zeile schon auf dem seriellen Bus vermackelt - ich habe zufällig gesehen, wie sie hereinkam: Zuerst kam nur ein halbes Datagramm: "OK VALUES DAVIS 0 20=OK" - ohne Zeilenumbruch. Dann kam das zweite Datagramm und plötzlich tauchten die Daten im IoBroker auf - aber sehr komisch geschnitten, jedenfalls weiß ich nicht, wo die "0," herkommt, die der Adapter erkannt hat, aber der Rest ist genau aus dem zweiten Teil der Zeile, die ich aus Minicom kopiert habe.

        Sieht für mich so aus, als würde irgendwie der Trigger nicht richtig funktionieren, kann das sein?

        Ich weiß nicht, ob es Dir was taugt, aber ich habe um die entsprechendeZeile mal einen ganzen Block Sampledaten kopiert, die Du möglicherweise zum Testen verwenden kannst:

        OK VALUES DAVIS 0 20=4,22=-67,21=ok,
        OK VALUES DAVIS 0 20=0,22=-68,21=ok,1=9.28,
        OK VALUES DAVIS 0 20=1,22=-68,21=ok,8=38,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,9=-1,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=0,22=-68,21=ok,4=0.00,5=196,8=38,
        OK VALUES DAVIS 0 20=1,22=-68,21=ok,4=0.00,5=196,9=-1,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,4=0.00,5=196,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=4,22=-69,21=ok,4=0.00,5=196,8=38,
        OK VALUES DAVIS 0 20=0,22=-68,21=ok,4=0.00,5=196,9=-1,
        OK VALUES DAVIS 0 20=1,22=-68,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,1=9.28,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,8=38,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,4=0.00,5=196,9=-1,
        OK VALUES DAVIS 0 20=0,22=-68,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-68,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,4=0.00,5=196,8=38,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,9=-1,
        OK VALUES DAVIS 0 20=4,22=-68,21=ok,4=0.00,5=195,
        OK VALUES DAVIS 0 20=0,22=-68,21=ok,1=9.28,
        OK VALUES DAVIS 0 20=1,22=-68,21=ok,4=0.00,5=196,8=38,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,4=0.00,5=196,9=-1,
        OK VALUES DAVIS 0 20=3,22=-68,21=ok,4=1.61,5=196,
        OK VALUES DAVIS 0 20=4,22=-68,21=ok,1=9.28,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,1=9.28,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-67,21=ok,9=63,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,9=63,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,1=9.28,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,9=63,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,9=63,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,8=39,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-68,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,8=39,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,9=63,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=0,22=-68,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,8=39,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,9=63,
        OK VALUES DAVIS 0 20=4,22=-68,21=ok,
        OK VALUES DAVIS 0 20=0,22=-68,21=ok,4=1.61,5=196,1=9.28,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,9=63,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,9=63,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-67,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,1=9.28,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,8=39,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,1=9.28,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,8=39,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,9=63,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,6=1.61,7=0,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,9=63,
        OK VALUES DAVIS 0 20=0,22=-68,21=ok,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,1=9.28,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,8=39,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=194,9=63,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,8=39,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,9=63,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,6=1.61,7=0,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,1=9.28,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,1=9.28,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=191,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,6=1.61,7=0,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,9=63,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,8=39,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=1.61,5=196,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=1.61,5=196,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=1.61,5=196,8=39,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,4=0.00,5=196,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,8=39,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,9=63,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,4=0.00,5=194,9=63,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,1=9.28,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,8=39,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,9=63,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=0,22=-67,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=3,22=-68,21=ok,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,9=63,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,4=0.00,5=196,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-68,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=4,22=-68,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-67,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-68,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-68,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=0,22=-67,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=3,22=-68,21=ok,4=0.00,5=195,9=63,
        OK VALUES DAVIS 0 20=4,22=-68,21=ok,
        OK VALUES DAVIS 0 20=0,22=-68,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,8=39,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-68,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,4=0.00,5=196,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-67,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-68,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,8=39,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,9=63,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,8=39,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,9=63,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,8=39,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,9=63,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,4=0.00,5=196,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,8=39,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,9=63,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,8=39,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,9=63,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,8=39,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,9=63,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=194,1=9.33,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,9=63,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,4=0.00,5=196,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,8=39,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,9=63,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,9=63,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=195,1=9.33,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,8=39,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,9=63,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-67,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,8=39,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,1=9.33,
        S DAVIS 0 20=2,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,6=1.61,7=9,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-65,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-65,21=ok,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,9=63,
        OK VALUES DAVIS 0 20=0,22=-67,21=ok,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,8=39,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=2,22=-65,21=ok,4=0.00,5=196,6=0.00,7=-1,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=4,22=-65,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,3=98.00,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=2,22=-67,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=3,22=-67,21=ok,4=0.00,5=196,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,9=63,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,4=0.00,5=196,6=0.00,7=-1,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,1=9.33,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=0,22=-66,21=ok,4=0.00,5=196,9=63,
        OK VALUES DAVIS 0 20=1,22=-66,21=ok,3=98.00,
        OK VALUES DAVIS 0 20=2,22=-66,21=ok,1=9.33,
        OK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,8=39,
        OK VALUES DAVIS 0 20=4,22=-66,21=ok,4=0.00,5=196,9=63,
        

        EDIT #2:
        Ich habe mal noch ein paar Blöcke hexadezimal direkt vom Bus mitgeschnitten, für den Fall, daß möglicherweise Newlines durch das Copypasten der Textdaten verändert werden - der Stick sendet scheinbar immer einen Windows-Zeilenumbruch (CR LF oder \r\n oder 0x0d 0x0a je nach Schreibweise):

        pi@iobapp01:~ $ xxd /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI05CBYZ-if00-port0
        00000000: 4f4b 2056 414c 5545 5320 4441 5649 5320  OK VALUES DAVIS
        00000010: 3020 3230 3d34 2c32 323d 2d36 362c 3231  0 20=4,22=-66,21
        00000020: 3d6f 6b2c 393d 2d31 2c0d 0a4f 4b20 5641  =ok,9=-1,..OK VA
        00000030: 4c55 4553 2044 4156 4953 2030 2032 303d  LUES DAVIS 0 20=
        00000040: 302c 3232 3d2d 3636 2c32 313d 6f6b 2c34  0,22=-66,21=ok,4
        00000050: 3d30 2e30 302c 353d 3139 362c 333d 3938  =0.00,5=196,3=98
        00000060: 2e30 302c 0d0a 4f4b 2056 414c 5545 5320  .00,..OK VALUES
        00000070: 4441 5649 5320 3020 3230 3d31 2c32 323d  DAVIS 0 20=1,22=
        00000080: 2d36 362c 3231 3d6f 6b2c 343d 302e 3030  -66,21=ok,4=0.00
        00000090: 2c35 3d31 3936 2c31 3d39 2e36 372c 0d0a  ,5=196,1=9.67,..
        ...
        

        EDIT #3:
        Und noch eine Ergänzung: manchmal empfängt IoBroker doch Daten - aber halt nur sporadisch. Woran könnte das liegen?

        2022-12-23 10:52:49.232  - debug: jeelink.0 (18237) data received: OK VALUEK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,1=9.50,
        2022-12-23 10:52:49.234  - debug: jeelink.0 (18237) splice:DAVIS,0,20=3,22=-66,21=ok,4=0.00,5=196,1=9.50,
        2022-12-23 10:52:49.235  - debug: jeelink.0 (18237) received ID :VALUES is not defined in the adapter or not unique received address
        2022-12-23 10:52:49.237  - debug: jeelink.0 (18237) splice:DAVIS,0,20=3,22=-66,21=ok,4=0.00,5=196,1=9.50,
        2022-12-23 10:52:49.237  - debug: jeelink.0 (18237) received ID :VALUES is not defined in the adapter or not unique received address
        2022-12-23 11:00:02.290  - debug: jeelink.0 (18237) data received: OK VALUES DAVIS 0 20=2,22=-65,21=ok,8=39,
        2022-12-23 11:00:02.291  - debug: jeelink.0 (18237) Sensor ID    : 0
        2022-12-23 11:00:02.292  - debug: jeelink.0 (18237) splice       : 20=2,22=-65,21=ok,8=39,
        2022-12-23 11:00:02.293  - debug: jeelink.0 (18237) Channel   :   2
        2022-12-23 11:00:02.294  - debug: jeelink.0 (18237) RSSI     : -65
        2022-12-23 11:00:02.297  - debug: jeelink.0 (18237) Battery   : ok
        2022-12-23 11:00:02.297  - debug: jeelink.0 (18237) RainTipCount        : 39
        2022-12-23 11:00:02.298  - debug: jeelink.0 (18237) submitted value pair is unknown =undefined
        2022-12-23 11:00:02.319  - debug: jeelink.0 (18237) state jeelink.0.DavisVantage_1.rssi changed: -65 (ack = true)
        2022-12-23 11:00:02.325  - debug: jeelink.0 (18237) state jeelink.0.DavisVantage_1.battery changed: ok (ack = true)
        2022-12-23 11:00:02.329  - debug: jeelink.0 (18237) state jeelink.0.DavisVantage_1.raintipcount changed: 39 (ack = true)
        2022-12-23 11:04:46.723  - debug: jeelink.0 (18237) data received: OK VALUES DAVIS 0 20=3,22=-66,21=ok,1=9.67,
        2022-12-23 11:04:46.724  - debug: jeelink.0 (18237) Sensor ID    : 0
        2022-12-23 11:04:46.724  - debug: jeelink.0 (18237) splice       : 20=3,22=-66,21=ok,1=9.67,
        2022-12-23 11:04:46.725  - debug: jeelink.0 (18237) Channel   :   3
        2022-12-23 11:04:46.725  - debug: jeelink.0 (18237) RSSI     : -66
        2022-12-23 11:04:46.726  - debug: jeelink.0 (18237) Battery   : ok
        2022-12-23 11:04:46.727  - debug: jeelink.0 (18237) Temperatur   : 9.67
        2022-12-23 11:04:46.727  - debug: jeelink.0 (18237) submitted value pair is unknown =undefined
        2022-12-23 11:04:46.747  - debug: jeelink.0 (18237) state jeelink.0.DavisVantage_1.rssi changed: -66 (ack = true)
        2022-12-23 11:04:46.750  - debug: jeelink.0 (18237) state jeelink.0.DavisVantage_1.battery changed: ok (ack = true)
        2022-12-23 11:04:46.753  - debug: jeelink.0 (18237) state jeelink.0.DavisVantage_1.temp changed: 9.67 (ack = true)
        

        EDIT#4 (das letzte für heute, hoffentlich ;-)):
        Mir ist gerade noch aufgefallen, daß der Stick / die Station sogar einen Wert mitliefern, mit dem man die Datenqualität zumindest in Ansätzen beurteilen könnte: In jedem (vollständigen) Datenpaket wird der Key "20=" übertragen, der für den Channel steht - und offensichtlich wechselt die Station immer durch 5 Kanäle [0..4] und zwar immer schön streng monoton steigend. Das, verbunden mit der Tatsache, daß die Pakete ungefähr alle Sekunde kommen, könnte man doch nutzen, um eine Art "Confidence factor" zu ermitteln, oder? Aber das wäre dann sowas wie das Sahnehäubchen mit Kirsche auf der Torte, das kann ich dann ggf. auch später noch als zusätzliches Script mit eigenen Datenpunkten hinterlegen :-)

        F Offline
        F Offline
        foxthefox
        Developer
        schrieb am zuletzt editiert von
        #23

        @mccavity
        Hab das mit der Adaption glatt aus den Augen verloren. Hatte irgendwie erwartet, daß es ein PullRequest kommt.
        Bin nur wieder darauf gekommen, weil jemand nach dem Setzen der Parameter des Sticks fragte.
        Das hatte ich gedacht, daß diese Sequenz unter Kommando eingetragen werden kann und dann wird der Stick damit parametriert.
        Ging das schon einmal? In deinem Produktivsystem schien es nicht zu gehen oder evtl. wegen anderer Dinge übersehen ?

        Jetzt zu dem Thema daß nicht alle Telegramme ausgewertet werden.
        Das liegt höchstwahrscheinlich an dem was der Stick übergibt.
        Im Adapter wird die Zeichenfolge ausgewertet. Dazu zerteile ich anhand der Leerzeichen den Anfang. Als erstes muß zwingend ein "OK" kommen und danach an übernächster Stelle ein "DAVIS".
        Wenn das beides kommt, dann springt er in die Bearbeitung. Dort wird auch anhand der Komma die Zeichenketten extrahiert und eine solche Zeichenkette wird dann über das "=" in den Datenpunkt und Wert aufgeteilt. Wenn dann etwas drin ist, was nicht sinnvoll ist, kommt "..strange.."-Meldung.

        An vierter Stelle steht ohne "=" die ID, die mit der Konfig im Adapter zusammenpassen muß.
        Wenn das nicht konfiguriert ist, kommt "received ID : ?? is not defined in the adapter or not unique received address"

        "OK VALUEK VALUES DAVIS 0 20=3,22=-66,21=ok,4=0.00,5=196,1=9.50," wird quasi direkt verworfen, da der dritte Teil nicht "DAVIS" ist.

        Der Datenpunkt 20 wird derzeitig nur im debug log sichtbar. Hat noch keinen Datenpunkt im IOB.
        Da er nicht weiter verwendet wird, werden die übermittelten Werte immer abgelegt, unabhängig der channel# (vorausgesetzt das Telegramm war gemäß obigen Regeln OK).

        Es wird alles übernommen was zwischen "=" und "," den Wert darstellt. Ein "okOK" geht damit durch.

        Meist kommt durch das letzte Komma verursacht noch ein "submitted value pair is unknown =undefined", da hatte ich bei der schnellen Hilfe für dich noch keine Muße das wegzufiltern.

        Ich hoffe das hilft ein wenig zum Verständnis.

        Gruß
        Klaus

        Adapterüberblick: Profil Github;

        Wenn der Adapter gefällt und nützlich ist, bitte ins Repo gehen und Star setzen. Danke

        Ein Aufruf: video

        1 Antwort Letzte Antwort
        0
        • M McCavity

          Ach ja, fast vergessen... wird der Channel (Schlüssel 20) eigentlich als Datenpunkt gespeichert? Ich sehe im Log, daß er erkannt wird, wenn er erkannt wird, aber ich finde den Datenpunkt irgendwie nicht in den Objekten des IoBroker...?

          F Offline
          F Offline
          foxthefox
          Developer
          schrieb am zuletzt editiert von
          #24

          @mccavity sagte in IoBroker.Jeelink + Davis geht teilweise - Hilfe beim Rest?:

          Ach ja, fast vergessen... wird der Channel (Schlüssel 20) eigentlich als Datenpunkt gespeichert? Ich sehe im Log, daß er erkannt wird, wenn er erkannt wird, aber ich finde den Datenpunkt irgendwie nicht in den Objekten des IoBroker...?

          Nachdem scheinbar ja die gleichen Daten unabhängig der channel# drin sind, mach das Wegspeichern kein sinn, dann würde sich der Datenpunkt nur ständig ändern.
          Falls DeviceID + channel unterschiedliche Daten wären, müsste man anhand von channel zuordnen

          Adapterüberblick: Profil Github;

          Wenn der Adapter gefällt und nützlich ist, bitte ins Repo gehen und Star setzen. Danke

          Ein Aufruf: video

          1 Antwort Letzte Antwort
          0
          • M McCavity

            Einen habe ich doch noch, den ich nicht vorenthalten wollte - ich habe gerade gesehen, daß im Battery Status auf einmal "okOK" steht - da hat der Parser etwas mißverstanden. Den dafür verantwortlichen Empfang habe ich im Log finden können:

            2022-12-23 14:10:41.380  - debug: jeelink.0 (18237) data received: OK VALUES DAVIS 0 20=3,22=-66,21=okOK VALUES DAVIS 0 20=4,22=-6 DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=228,8=39,
            2022-12-23 14:10:41.385  - debug: jeelink.0 (18237) Sensor ID    : 0
            2022-12-23 14:10:41.386  - debug: jeelink.0 (18237) splice       : 20=3,22=-66,21=okOK,VALUES,DAVIS,0,20=4,22=-6,DAVIS,0,20=1,22=-67,21=ok,4=0.00,5=228,8=39,
            2022-12-23 14:10:41.387  - debug: jeelink.0 (18237) something is wrong in stream 20=3,22=-66,21=okOK strange part ->VALUES
            2022-12-23 14:10:41.389  - debug: jeelink.0 (18237) Channel   :   3
            2022-12-23 14:10:41.389  - debug: jeelink.0 (18237) RSSI     : -66
            2022-12-23 14:10:41.392  - debug: jeelink.0 (18237) Battery   : okOK
            2022-12-23 14:10:41.440  - debug: jeelink.0 (18237) state jeelink.0.DavisVantage_1.rssi changed: -66 (ack = true)
            2022-12-23 14:10:41.443  - debug: jeelink.0 (18237) state jeelink.0.DavisVantage_1.battery changed: okOK (ack = true)
            

            Man sieht, daß das mal wieder eine "vermackelte" Zeile war:

            2022-12-23 14:10:41.380  - debug: jeelink.0 (18237) data received: OK VALUES DAVIS 0 20=3,22=-66,21=okOK VALUES DAVIS 0 20=4,22=-6 DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=228,8=39,
            

            Es scheint, als würde der Adapter momentan nur dann anfangen zu arbeiten, wenn das Zeilenpräfix "OK VALUES DAVIS" nicht am Anfang der Zeile steht - zumindest läßt die Log-Zeile

            2022-12-23 14:10:41.386  - debug: jeelink.0 (18237) splice       : 20=3,22=-66,21=okOK,VALUES,DAVIS,0,20=4,22=-6,DAVIS,0,20=1,22=-67,21=ok,4=0.00,5=228,8=39,
            

            darauf schließen. Trotzdem scheint er, wenn er die Zeile verarbeitet, richtigerweise von vorne anzufangen. Er hat auch bemerkt, daß irgendetwas nicht stimmt, was die nächste Logzeile bestätigt:

            2022-12-23 14:10:41.387  - debug: jeelink.0 (18237) something is wrong in stream 20=3,22=-66,21=okOK strange part ->VALUES
            

            Im Prinzip müßte der Parser pro empfangener Zeile folgendes prüfen:

            • Das Präfix lautet fix "OK VALUES DAVIS"
            • Die ID besteht aus einer einzelnen Ziffer zwischen zwei Leerzeichen
            • Ein Meßwert besteht aus einem Schlüssel, dem Gleichheitszeichen, dem Wert und einem Komma
            • Schlüssel bestehen aus einer ein-oder zweistelligen Nummer, optional einem Punkt plus einer weiteren Ziffer
            • Werte können verschiedene Datentypen enthalten: unsigned int (z.B. WindDirection) signed int (z.B. RSSI), signed float (z.B. Temperature, Dezimaltrennzeichen ist der Punkt), String (z.B. Battery)
            • alle möglichen Schlüssel sind bekannt

            Datentypen (vermutlich):

             Schlüssel  | Name                   | Datentyp       |  Beispielwert | Werteliste / Anmerkungen
            ------------+------------------------+----------------+---------------+-------------------------------------------------------------------------------------
            * 1         | Temperature            | signed float   | -9.67         |
            * 2         | Pressure               | ?              | ?             | Sensor nur in Basisstation
            * 3         | Humidity               | unsigned float | 98.00         | (max. 100.00)
            * 4         | WindSpeed              | unsigned float | 1.61          |
            * 5         | WindDirection          | unsigned int   | 151           | (max. 360)
            * 6         | WindGust               | unsigned float | 1.61          |
            * 7         | WindGustRef            | int(?)         | 2             | (vermutlich int; ich weiß aber auch nicht, was dieser Wert genau bedeutet)
            * 8         | RainTipCount           | unsigned int   | 39            | (max. 127 (vermutlich)
            * 9         | RainSecs               | signed int     | -1            | Wert ist entweder -1 (es ist derzeit kein Niederschlag festgestellt) oder (vermutlich) >=0; max. unbekannt. Ist der Wert >=0, dann bedeutet das, daß derzeit Niederschlag vorliegt (wird in der Basisstation mit einem Schirmsymbol angezeigt). Ich weiß aber nicht, wie sich das genau manifestiert, das muß ich mal bei einer längeren Regenphase mitloggen
            * 10        | Solar                  | ?              | ?             | Sensor nicht vorhanden
            * 11        | VoltageSolar           | ?              | ?             | Sensor nicht vorhanden
            * 12        | VoltageCapacitor       | ?              | ?             | Sensor nicht vorhanden
            * 13        | SoilLeaf               | ?              | ?             | Sensor nicht vorhanden
            * 14        | UV                     | ?              | ?             | Sensor nicht vorhanden
            * 15.[1..4] | SoilTemperature.[1..4] | ?              | ?             | Sensor nicht vorhanden
            * 16.[1..4] | SoilMoisture.[1..4]    | ?              | ?             | Sensor nicht vorhanden
            * 17.[1..2] | LeafWetness.[1..2]     | ?              | ?             | Sensor nicht vorhanden
            * 20        | Channel                | unsigned int   | 3             | [0..4]
            * 21        | Battery                | string         | ok            | vermutlich {ok,nok}
            * 22        | RSSI                   | signed int     | -66           |
            * 255       | PacketDump             | ?              | ?             | vermutlich eh nur, wenn Debugging im Stick eingeschaltet wird, keine Ahnung, wie das dann aussieht :-)
            

            Annahmen / Beobachtungen:

            • Die Meßwerte beginnen mit einer fixen Folge (Schlüsselnummer in Klammern): <Channel (20)><RSSI (22)><Battery (21)><WindSpeed (4)><WindDirection (5)>
            • nach den fixen Meßwerten folgen i.d.R. 0 bis 2 weitere Meßwerte
            • Die Meßwerte <Temperature (1)>, <Humidity (3)>, <RainTipCount (8)> und <RainSecs (9)> werden einzelnen übertragen
            • Die Meßwerte <WindGust (6)> und <WindGustRef (7)> werden in der gleichen Zeile direkt nacheinander übertragen
            • Werte mit einem float Datentyp haben zwei Nachkommastellen
            • Eine optimale Zeile sieht wie folgt aus:
              <Präfix><ID><Channel (20)><RSSI (22)><Battery (21)><WindSpeed (4)><WindDirection (5)>[<Meßwert (x)>...]

            Weitere Meßwerte kann ich ohne weiteres auch leider nicht beurteilen, da mir dazu die Sensoren fehlen (der Drucksensor der Station ist in die Basisstation eingebaut und die funkt nicht, die empfängt nur... ;-)

            Fehlerfälle und Ausnahmen:

            • Das Präfix kann unvollständig sein, möglicherweise auch falsche Zeichen enthalten
            • Das Präfix kann auch weiter hinten in der Zeile erscheinen, das ist zwingend ein Zeichen dafür, daß die vorherige Zeile unvollständig war - möglicherweise fehlt nur der Zeilenumbrauch, möglicherweise aber auch ein oder mehrere vollständige Meßwerte oder ein Teil eines Meßwertes
            • Meßwerte ohne abschließendes Komma sind möglicherweise unvollständig und sollten ggf. verworfen werden und nur im Log erwähnt werden, zumindest als debug - eine höhere Stufe könnte man ggf. überdenken.

            Ich weiß nicht, ob es möglich ist, daß Zeilen auch ohne das Präfix beginnen können; so gut kenne ich den JeeLink-Sketch nicht, aber da sowohl das Funkprotokoll als auch das serielle Protokoll als unzuverlässig eingestuft werden müssen, würde ich damit rechnen, daß es überall zu fehlenden Bytes kommen kann und daher ein paar Sanity-Checks einbauen. Zusammen mit den Datentypen sollten sich zumindest ein paar Grundchecks durchführen lassen, genauso damit, daß es im Prinzip nur das Präfix aus Großbuchsteben und den (vermutlich) einzigen String Wert in Kleinbuchstaben gibt. Merkt sich der Adapter eigentlich die zuletzt gemessenen Werte? Falls ja, könnte man überlegen, ob man da ggf. noch Änderungen über die Zeit prüfen möchte - aber ich denke, das sollte dann schon extern in der Auswertung geschehen, je weniger der Adapter voraussetzt, umso besser. Wenn der Adapter gut erkennt, und wenn es die Feststellung "schlechter Empfang" ist, dann ist schon viel gewonnen :-)

            F Offline
            F Offline
            foxthefox
            Developer
            schrieb am zuletzt editiert von
            #25

            @mccavity sagte in IoBroker.Jeelink + Davis geht teilweise - Hilfe beim Rest?:

            Einen habe ich doch noch, den ich nicht vorenthalten wollte - ich habe gerade gesehen, daß im Battery Status auf einmal "okOK" steht - da hat der Parser etwas mißverstanden. Den dafür verantwortlichen Empfang habe ich im Log finden können:

            Man sieht, daß das mal wieder eine "vermackelte" Zeile war:

            2022-12-23 14:10:41.380  - debug: jeelink.0 (18237) data received: OK VALUES DAVIS 0 20=3,22=-66,21=okOK VALUES DAVIS 0 20=4,22=-6 DAVIS 0 20=1,22=-67,21=ok,4=0.00,5=228,8=39,
            

            Bis zu okOK ist die Zeile in Ordnung und wurde auch weiter bearbeitet

            Es scheint, als würde der Adapter momentan nur dann anfangen zu arbeiten, wenn das Zeilenpräfix "OK VALUES DAVIS" nicht am Anfang der Zeile steht - zumindest läßt die Log-Zeile

            2022-12-23 14:10:41.386  - debug: jeelink.0 (18237) splice       : 20=3,22=-66,21=okOK,VALUES,DAVIS,0,20=4,22=-6,DAVIS,0,20=1,22=-67,21=ok,4=0.00,5=228,8=39,
            

            darauf schließen. Trotzdem scheint er, wenn er die Zeile verarbeitet, richtigerweise von vorne anzufangen. Er hat auch bemerkt, daß irgendetwas nicht stimmt, was die nächste Logzeile bestätigt:

            2022-12-23 14:10:41.387  - debug: jeelink.0 (18237) something is wrong in stream 20=3,22=-66,21=okOK strange part ->VALUES
            

            Nicht ganz richtig vermutet, wegen OK VALUES DAVIS springt er überhaupt in die Bearbeitung und "spliced" den Rest auf. Das ist auch soweit gut bis keine Wertepaare mehr enthalten sind -> VALUES DAVIS..
            Das erkennt er und meckert "VALUES" an.

            Im Prinzip müßte der Parser pro empfangener Zeile folgendes prüfen:

            • Das Präfix lautet fix "OK VALUES DAVIS"

            Ich prüfe auf OK und DAVIS an übernächster Stelle ab.

            • Die ID besteht aus einer einzelnen Ziffer zwischen zwei Leerzeichen
            • Ein Meßwert besteht aus einem Schlüssel, dem Gleichheitszeichen, dem Wert und einem Komma
            • Schlüssel bestehen aus einer ein-oder zweistelligen Nummer, optional einem Punkt plus einer weiteren Ziffer
            • Werte können verschiedene Datentypen enthalten: unsigned int (z.B. WindDirection) signed int (z.B. RSSI), signed float (z.B. Temperature, Dezimaltrennzeichen ist der Punkt), String (z.B. Battery)

            wird genauso verarbeitet

            • alle möglichen Schlüssel sind bekannt
              Bis auf Channel und PacketDump dürfte alles drin sein.

            Annahmen / Beobachtungen:

            • Die Meßwerte beginnen mit einer fixen Folge (Schlüsselnummer in Klammern): <Channel (20)><RSSI (22)><Battery (21)><WindSpeed (4)><WindDirection (5)>
            • nach den fixen Meßwerten folgen i.d.R. 0 bis 2 weitere Meßwerte
            • Die Meßwerte <Temperature (1)>, <Humidity (3)>, <RainTipCount (8)> und <RainSecs (9)> werden einzelnen übertragen
            • Die Meßwerte <WindGust (6)> und <WindGustRef (7)> werden in der gleichen Zeile direkt nacheinander übertragen
            • Werte mit einem float Datentyp haben zwei Nachkommastellen
            • Eine optimale Zeile sieht wie folgt aus:
              <Präfix><ID><Channel (20)><RSSI (22)><Battery (21)><WindSpeed (4)><WindDirection (5)>[<Meßwert (x)>...]

            ob die Reihenfolge so ist oder auch nicht, ist in der Auswertung egal. Wenn OK VALUES DAVIS 0 am Anfang steht, wird alles danach zwischen den Kommas über das = als Wertepaar identifiziert und anhand der Schlüsselnummer richtig weggeschrieben.

            Fehlerfälle und Ausnahmen:

            • Das Präfix kann unvollständig sein, möglicherweise auch falsche Zeichen enthalten
            • Das Präfix kann auch weiter hinten in der Zeile erscheinen, das ist zwingend ein Zeichen dafür, daß die vorherige Zeile unvollständig war - möglicherweise fehlt nur der Zeilenumbrauch, möglicherweise aber auch ein oder mehrere vollständige Meßwerte oder ein Teil eines Meßwertes
            • Meßwerte ohne abschließendes Komma sind möglicherweise unvollständig und sollten ggf. verworfen werden und nur im Log erwähnt werden, zumindest als debug - eine höhere Stufe könnte man ggf. überdenken.

            Alles was nicht passt wird verworfen, die "strange" Meldungen sind nur debug. Wenn der Anfang nicht passt, führt halt zu einer Meldung das Konfig nicht richtig ist. Könnte man auch unter debug laufen lassen, bisher sah ich es als hilfreich für die Inbetriebnahme bzw. als Hinweis bei ID-Wechsel nach Batteriewechsel (da der Adapter ja auch die LaCrosse/Technolink verarbeitet).

            Ich weiß nicht, ob es möglich ist, daß Zeilen auch ohne das Präfix beginnen können; so gut kenne ich den JeeLink-Sketch nicht, aber da sowohl das Funkprotokoll als auch das serielle Protokoll als unzuverlässig eingestuft werden müssen, würde ich damit rechnen, daß es überall zu fehlenden Bytes kommen kann und daher ein paar Sanity-Checks einbauen. Zusammen mit den Datentypen sollten sich zumindest ein paar Grundchecks durchführen lassen, genauso damit, daß es im Prinzip nur das Präfix aus Großbuchsteben und den (vermutlich) einzigen String Wert in Kleinbuchstaben gibt. Merkt sich der Adapter eigentlich die zuletzt gemessenen Werte? Falls ja, könnte man überlegen, ob man da ggf. noch Änderungen über die Zeit prüfen möchte - aber ich denke, das sollte dann schon extern in der Auswertung geschehen, je weniger der Adapter voraussetzt, umso besser. Wenn der Adapter gut erkennt, und wenn es die Feststellung "schlechter Empfang" ist, dann ist schon viel gewonnen :-)

            Ich bin hier für KISS (keep it simple und stupid), einfach auf das nächste saubere Telegramm warten und dieses auswerten und wegschreiben. Großartig rumorakeln was von einem String noch auswertbar ist oder nicht, bringt bei so schnell ankommenden Telegrammen nichts. Eher wäre der sketch auf dem Stick gefragt um die Telegramm richt zu separieren und nicht ein "...=okOK VALUES..." zu bekommen. Sonst kommt da als letztes immer ein Komma. Und wenn wir an den Daten an sich zweifeln (vergleich mit letzten Wert) :dizzy_face:

            Adapterüberblick: Profil Github;

            Wenn der Adapter gefällt und nützlich ist, bitte ins Repo gehen und Star setzen. Danke

            Ein Aufruf: video

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            621

            Online

            32.7k

            Benutzer

            82.5k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe