Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem beim auslesen eines einzelnen 1wire Sensors

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

    Problem beim auslesen eines einzelnen 1wire Sensors

    Hallo,

    ich verwende smarthome.py seit einigen Monaten, und habe mich schon etwas eingelesen, aber leider habe ich ein bisher unverständliches Problem mit einem 1wire Sensor.

    Der Aufbau:
    Smarthome.py mit Smartvisu auf einem Paspberry Pi 2
    LinkUSB 1Wire interface
    30m 1wire Bus mit
    - 3 Multisensoren (Temp/Hum) von ElabNet
    - 1 DS18B20 Tempsensor (http://www.fuchs-shop.com/de/shop/6/1/13372584/)

    Der DS18B20 ist zur Temperaturmessung des Brunnenwassers montiert, dh. unter Wasser.

    Alle Sensoren funktionieren problemlos, und lassen sich über OWFS auslesen:

    Code:
    admin@smarthome:/usr/smarthome$ owdir
    /28.XXXFED060000 (Temp 1)
    /28.XXXCA0050000 (Temp 2)
    /28.XXXAED060000 (Temp 3)
    /28.XXXEEE060000 (DS18B20)
    /26.XXX7A4010000 (Hum 1)
    /26.XXX8A4010000 (Hum 2)
    /26.XXX7A4010000 (Hum 3)
    /bus.0
    /uncached
    /settings
    /system
    /statistics
    /structure
    /simultaneous
    /alarm
    Wie gesagt, ein auslesen über OWFS funktioniert:

    Code:
    admin@smarthome:/usr/smarthome$ owread /28.XXXEEE060000/temperature
         11.0625
    Jedoch liest Smarthome.py bei dem DS18B20 nur "0" als wert aus:

    Code:
    admin@smarthome:/usr/smarthome$ sh.cli
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    SmartHome.py v1.0-45-g02cf972
    Enter 'help' for a list of available commands.
    > la
    Items:
    ======
    env.core.version = 1.0-45-g02cf972
    env.core.start = 2016-05-02 14:43:17.831065+02:00
    env.core.memory = 20619264
    env.core.threads = 8.0
    env.core.garbage = 0.0
    env.core
    env.location.day = True
    env.location.night = False
    env.location.sunrise = 2016-05-04 05:29:05.846383+02:00
    env.location.sunset = 2016-05-03 20:09:08.694661+02:00
    env.location.moonrise = 2016-05-04 04:22:11.161824+02:00
    env.location.moonset = 2016-05-03 15:52:07.971724+02:00
    env.location.moonphase = 7
    env.location.moonlight = 18
    env.location
    env.system.start = 2016-05-01 15:21:02.938668+02:00
    env.system.load = 0.01
    env.system.name = smarthome.local
    env.system
    env
    ibutton.bm_ibutton = False
    ibutton.ib_thomas = False
    ibutton
    keller.heizraum.licht.decke = False
    keller.heizraum.licht
    [B]keller.heizraum.temp.aktuell = 12.0625 [Multi][/B]
    keller.heizraum.temp
    [B]keller.heizraum.feuchte.aktuell = 83.4613[/B] [B][Multi] [/B]
    keller.heizraum.feuchte
    [B]keller.heizraum.tbrunnen.aktuell = 0 [DS18B20][/B]
    keller.heizraum.tbrunnen
    keller.heizraum
    keller
    Die anderen 1Wire Sensoren (Multis) funktionieren problemlos!

    Die Sensoren sind folgendermaßen definiert:

    Code:
    [keller]
            [[heizraum]]
    
                    [[[temp]]]
                            name = theizen
                            [[[[aktuell]]]]
                            type = num
                            visu_acl = r
                            knx_dpt = 9
                            cache = on
                            sqlite = yes
                            ow_addr = 28.XXXXED060000
                            ow_sensor = T
                            knx_send = 3/1/19
    
                    [[[feuchte]]]
                            name = fheizen
                            [[[[aktuell]]]]
                            type = num
                            visu_acl = r
                            knx_dpt = 5.001
                            sqlite = yes
                            cache = on
                            ow_addr = 26.XXXXA4010000
                            ow_sensor = H
                            knx_send = 3/1/20
    
                    [[[tbrunnen]]]
                            name = tbrunnen
                            [[[[aktuell]]]]
                                    type = num
                                    cache = on
                                    visu_acl = r
                                    knx_dpt = 9
                                    sqlite = yes
                                    ow_addr = 28.XXXXEE060000
                                    ow_sensor = T
                                    knx_send = 3/1/18
    Wie kann das sein? die anderen 1wire-Sensoren sind genau so definiert, was habe ich hier falsch gemacht?

    #2
    Moin
    Was ich mir vorstellen kann ist, dass du bei
    Code:
    ow_addr = 28.XXXXEE060000
    noch ein Leerzeichen oder Tab am Ende hast. Prüf das mal.
    Zuletzt geändert von cmalo; 03.05.2016, 08:27.

    Kommentar


      #3
      Ich hab da noch eine Idee. Du fragst diese ow_addr schon an einer anderen Stelle ab. Irgendwo vorher in den Items. Kann das sein?
      Wenn ich eine ow_addr an zwei Stellen verwende wird nur das erste Item mit dem Wert befüllt, das andere ist 0
      Zuletzt geändert von cmalo; 03.05.2016, 08:31.

      Kommentar


        #4
        Hi,

        danke für den Tip, das habe ich schon vor ein paar Tagen überprüft, hab die ID jetzt noch mal händisch eingegeben (sonst immer alle kopiert)
        bisher unverändert im sh.cli - da müsste man das ja innerhalb weniger Sekunden nach dem restart des sh.py sehen, oder?

        Kommentar


          #5
          Zitat von cmalo Beitrag anzeigen
          Ich hab da noch eine Idee. Du fragst diese ow_addr schon an einer anderen Stelle ab. Irgendwo vorher in den Items. Kann das sein?
          Wenn ich eine ow_addr an zwei Stellen verwende wird nur das erste Item mit dem Wert befüllt, das andere ist 0
          DANKE! Ich bin ein Idiot - ich habe die 1wire-adresse falsch dokumentiert, und einfach stur nach meiner doku in das konfig-file abgetippt bzw. kopiert. Da hatte ich eine Adresse doppelt!

          Jetzt passt es!

          Code:
          admin@smarthome:/usr/smarthome$ sh.cli
          Trying 127.0.0.1...
          Connected to 127.0.0.1.
          Escape character is '^]'.
          SmartHome.py v1.0-45-g02cf972
          Enter 'help' for a list of available commands.
          > ls keller.heizraum.tbrunnen.aktuell
          Items:
          ======
          keller.heizraum.tbrunnen.aktuell = 12.6875
          Vielen Dank für den Hinweis!

          Kommentar


            #6
            Hallo,

            Ich krame diesen alten Thread mal hervor, denn ich habe das gleiche Problem. Allerdings glaube ich nicht, dass es die gleiche Ursache ist.
            Code:
            owdir
            
            /28.E0A185050000
            /28.30FFC7060000
            /28.F47D85050000
            /28.5EEF84050000
            /28.8354C8060000
            /28.E38AC8060000
            /28.370385050000 <------------
            /28.FF15C8060000
            /27.395D13000000
            [... nicht relevant ...]
            Alle werden schön angezeigt. Der mit <-- markierte Sensor macht Probleme i SHNG (siehe weiter unten).
            Allerdings funktioniert er ohne Probleme in der shell:
            Code:
            owread /28.370385050000/temperature
            
            33.375
            Das Item ist genau 1x konfiguriert, und es ist sicher kein Leerzeichen am Ende:
            Code:
            /usr/local/smarthome/items$ grep 28.370385050000 *
            
            Heizung.yaml:            ow_addr: 28.370385050000
            und zwar folgendermassen:
            Code:
                    temperatur_2:
                        type: num
                        database: 'init'
                        influxdb_name: temp
                        influxdb_tags: {"raum": "heizungskeller", "geraet": "puffer"}
                        eval: round(value,1)
                        ow_sensor: T
                        ow_addr: 28.370385050000
            Die Konfiguration ist copy & paste von einem anderen Sensor der ohne Probleme funktioniert. Ich habe temperatur_1 bis temperatur_4, alle funktioniereren. Nur die ow_addr wurde angepasst. Das OW Plugin liest alle Sensoren korrekt aus, nur diesen nicht:
            Code:
            2017-09-27  15:41:17 INFO     1w-sen       1-Wire: path not found for heizung.puffer.temperatur_2
            2017-09-27  15:46:21 INFO     1w-sen       1-Wire: path not found for heizung.puffer.temperatur_2
            2017-09-27  15:51:22 INFO     1w-sen       1-Wire: path not found for heizung.puffer.temperatur_2
            2017-09-27  15:56:17 INFO     1w-sen       1-Wire: path not found for heizung.puffer.temperatur_2
            [...]
            Wie man aber an dem owread oben sieht wird es in Bash sehr wohl ohne Probleme ausgelesen ....

            Hat noch jemand so was mal gehabt und weiss Rat ?

            Kommentar


              #7
              Hab das Problem gefunden. Nach Tagelangem suchen habe ich debug outputs in's Plugin geschrieben und gesehen, dass er die Adresse als Zahl einliest.
              Will heissen "ow_addr: 28.370385050000" hat er als 28.37038505 eingelesen. Warum nur diesen Sensor ? Ganz einfach, es ist der einzige der keine HEX Komponente in der Adresse hat, also keinen Buchstaben. ow_addr: '28.370385050000' hat das Problem gelöst ( ' vor und hinter die Adresse).

              Kommentar


                #8
                Wir haben gerade die gleiche Auffälligkeit in einem anderen Thread wegen YAML und SmartHomeNG 1.3 gehabt, da er bestimmte Sensor ID eben auch als Zahl und nicht als Zeichenkette eingelesen hat. Da hilft nur explizit als String kennzeichnen. Evtl. kann man mal im OneWire Plugin eine Warnung ausgeben, wenn das Attribut nicht vom Typ String ist...

                Kommentar


                  #9
                  Zitat von bmx Beitrag anzeigen
                  Evtl. kann man mal im OneWire Plugin eine Warnung ausgeben, wenn das Attribut nicht vom Typ String ist...
                  Oder vielleicht die Adresslänge checken, damit filtert man auch User Fehler raus. Allerdings muss ich mich erst noch ein wenig in 1-Wire einarbeiten um zu schauen, ob die Adressen immer gleich lang sind ...

                  Kommentar


                    #10
                    Hab jetzt mal ein check eingebaut der die ROM-Code Länge checkt und beim Starten ein WARNING ausgibt wenn eine Adresse nicht stimmt.
                    Ist im aktuellen 'dev'.

                    Kommentar

                    Lädt...
                    X