Ankündigung

Einklappen
Keine Ankündigung bisher.

MisterHouse & Temperaturabfrage über DS1920

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

    #16
    Hallo,

    Zitat von Werner

    zB. mit Owfs_Item.pm

    Das Problem mit Open Source ist nicht ob etwas geht, sondern dass es meistens auf viele Arten geht. Wenn Du eibd und misterhouse bereits am laufen hast und Werte von digitemp bekommst, würde ich fürs Erste die Lösung von Andreas empfehlen.
    OK die Lösung von Andreas scheint also einfacher aber wie kann ich mit MH eine Datei z.B. /tmp/digitempwerte.log einlesen bzw die Daten auf den EIB-Bus schicken.


    Zitat von McTao Beitrag anzeigen
    Hallo,
    ... dem owfsserver bekomme ich es nicht hin.

    Genau aus obigen Gründen heraus bin ich im Moment dabei die von dir vorgeschlagene Lösung umzusetzen:

    OWFS läuft unabhängig von mh und schreibt die Werte in eine Datei. mh liest diese Datei und braucht nicht auf die langsamen Temperaturgeber zu warten. (Eigentlich sollte die Nutzung von owfsserver dieses auch schon entkoppeln, aber das funktioniert bei mir nicht.) (Hierzu gab es auch schon Artikel im Forum).

    Gruss McTao (Andreas)

    Kann mir einer dafür ein Beispiel bezüglich MH schreiben ?
    Auf der Seite 'http://marc.merlins.org/perso/homeha/post_2009-12-23_Temperature-monitoring-and-graphing-with-1wire-devices_-digitemp_-misterhouse_-and-cacti.html' macht der Autor es genauso, die Digitemp Ergebnisse werden sogar noch umgeschrieben aber wie die Datei von MH dann eingelesen wird steht leider nicht auf der Seite.


    Und noch eine Frage zu OwFS (verzweifel)
    Habe jetzt noch etliches installiert und owfs nochmal mit configure und mit make install durcheiern lassen und jetzt sieht mein '/opt/owfs' komplett so aus:


    Code:
    owdir  owftpd  owhttpd  ownet.php  owread    owtap
    owfs   owget   owmon    owpresent  owserver  owwrite
    Mit scheint jetzt habe ich wirklich alles von owfs installiert - und NU ???

    Code:
    pumuckl:/opt/owfs/bin # /opt/owfs/bin/owfs -d /dev/ttyS0 -m /mnt/1wire
    fuse: bad mount point `/mnt/1wire': No such file or directory
    Meine DS1820 hängen aber am '/dev/ttyS0'

    Code:
    pumuckl:/opt/owfs/bin # digitemp -a -i  -c /etc/digitemprc
    DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
    GNU Public License v2.0 - http://www.digitemp.com
    Turning off all DS2409 Couplers
    ......
    Searching the 1-Wire LAN
    10D40EDA0008002D : DS1820/DS18S20/DS1920 Temperature Sensor
    10A2D0ED0108009E : DS1820/DS18S20/DS1920 Temperature Sensor
    10A2DCED010800BF : DS1820/DS18S20/DS1920 Temperature Sensor
    1039ABED010800CA : DS1820/DS18S20/DS1920 Temperature Sensor
    100DE4ED0108007D : DS1820/DS18S20/DS1920 Temperature Sensor
    10ADC1ED0108000B : DS1820/DS18S20/DS1920 Temperature Sensor
    ROM #0 : 10D40EDA0008002D
    ROM #1 : 10A2D0ED0108009E
    ROM #2 : 10A2DCED010800BF
    ROM #3 : 1039ABED010800CA
    ROM #4 : 100DE4ED0108007D
    ROM #5 : 10ADC1ED0108000B
    Wrote /etc/digitemprc
    Aug 17 21:12:13 Sensor 0 C: 13.56 F: 56.41
    Aug 17 21:12:14 Sensor 1 C: 25.19 F: 77.34
    Aug 17 21:12:16 Sensor 2 C: 39.75 F: 103.55
    Aug 17 21:12:17 Sensor 3 C: 15.31 F: 59.56
    Aug 17 21:12:18 Sensor 4 C: 17.12 F: 62.83
    Aug 17 21:12:19 Sensor 5 C: 20.38 F: 68.67
    Wie starte ich den nun owfs ?

    und ein

    Code:
    pumuckl:/opt/owfs/bin # /opt/owfs/bin/owserver -d /dev/ttyS0 -p 3000 --error_lev                                                                  el=1 --foreground
    CONNECT: owlib.c:SetupSingleInboundConnection(105) Cannot detect DS2480 or LINK interface on /dev/ttyS0.
    Segmentation fault
    Ok ich verwende DS1820 wie Konfiguriere ich owfs denn um ?


    Danke für eure Hilfe.

    Kommentar


      #17
      Zitat von tombu Beitrag anzeigen
      fuse: bad mount point `/mnt/1wire': No such file or directory
      mkdir /mnt/1wire
      pumuckl:/opt/owfs/bin # /opt/owfs/bin/owserver -d /dev/ttyS0 -p 3000
      Entweder ich sehs nicht oder es steht nirgends: was für einen Busmaster haste denn da dran?

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

      Kommentar


        #18
        Zitat von makki Beitrag anzeigen
        mkdir /mnt/1wire
        Plus notwendige Berechtigungen setzen.
        Zitat von makki
        Entweder ich sehs nicht oder es steht nirgends: was für einen Busmaster haste denn da dran?
        Als weitere Fragen:
        • Wie weit bist Du überhaupt?
        • Läuft eibd?
        • Kannst Du mit groupswrite auf den Bus senden?
        • Misterhouse hat Verbindung zum Bus?

        Grüße
        Werner

        Kommentar


          #19
          Hallo,

          ich habe das Verzeichniss '/mnt/1wire' angelegt und nun startet owfs ohne Fehlermeldung. Ein 'ls -l /mnt/1wire' zeigt die angeschlossenen Fühleradressen die ich von digitemp kenne.

          Code:
          pumuckl:/mnt # /opt/owfs/bin/owfs -d /dev/ttyS0 -m /mnt/1wire
          pumuckl:/mnt # ls /mnt/1wire/
          10.0DE4ED010800  10.A2DCED010800  alarm     simultaneous  system
          10.39ABED010800  10.ADC1ED010800  bus.0     statistics    uncached
          10.A2D0ED010800  10.D40EDA000800  settings  structure
          Reicht das um mit MH diese Fühler anzusprechen und wie sieht so eine einfache Temperaturabfrage aus ?



          @makki

          Busmaster meinst Du damit den Fühler ? Ein DS1820 und kein DS2480. Wie stelle ich das für den owserver um ?



          @Werner
          • Läuft eibd? = JA
          • Kannst Du mit groupswrite auf den Bus senden? = JA
          • Misterhouse hat Verbindung zum Bus? = JA

          DANKE für die geduldige Hilfe

          Kommentar


            #20
            Hallo,

            Das sieht dann ja schon ganz gut aus. Als nächstes owserver starten (bei mir mit):
            Code:
            /opt/owfs/bin/owserver -u -p 3030
            in der mh.private.ini den oa. Port angeben:
            Code:
            owfs_port = 3030
            als Code dann zB:
            Code:
            use Owfs_Item;
            use Owfs_Thermostat;
            
            $tempWZ = new Owfs_DS18S20 ("28.DB0B66010000", "WZ", 2 );
            if (new_second 60) {
              set $TempWZ get_temperature $tempWZ;
              print_log " Wohnzimmertemperatur: " . state $TempWZ;
            }
            Wobei $TempWZ ein EIB5 Item ist.

            Grüße
            Werner

            Kommentar


              #21
              Sieht ganz gut aus. Die Lösung von Werner hatte ich auch, läuft unter mh. Da Du es aber unabhängig von mh machen wolltest, fehlt noch ein kleines Gerüst mit crontab und statt Set ein groupswrite. (Codeschnipsel kann ich hierzu am Freitag schicken (zurück von Dienstreise)).

              Gruß McTao (Andreas)

              Kommentar


                #22
                Hallo,

                den owserver habe ich nun gestartet und den Port in der mh.private.ini angegeben. Das Beispiel habe ich auf einen meiner Fühlernummern geändert

                Code:
                $tempWZ = new Owfs_DS18S20 ("10.0DE4ED010800", "WZ", 2 );
                if (new_second 60) {
                  set $TempWZ get_temperature $tempWZ;
                  print_log " Wohnzimmertemperatur: " . state $TempWZ;
                }
                und in der eib_items.mht ein
                Code:
                EIB5,     7/0/1,               TempWZ,         Weather,                                        R
                angelegt.

                Wenn ich nun MH starte findet er ein ObjeKt nicht.
                Code:
                 Can't locate object method "new" via package "Owfs_DS18S20" (perhaps you forgot to load "Owfs_DS18S20"?)
                Muß ich diese 'libs' aus dem mh/lib Verzeichniß irgendwo noch eintragen oder lädt MH diese automatisch mit ?

                Kommentar


                  #23
                  Hallo,
                  Zitat von Werner
                  Code:
                  [COLOR=Red]use Owfs_Item;
                  use Owfs_Thermostat;[/COLOR]
                  
                  $tempWZ = new Owfs_DS18S20 ("28.DB0B66010000", "WZ", 2 );
                  if (new_second 60) {
                    set $TempWZ get_temperature $tempWZ;
                    print_log " Wohnzimmertemperatur: " . state $TempWZ;
                  }
                  Grüße
                  Werner

                  Kommentar


                    #24
                    Hallo,

                    die beiden Zeilen stehen in der Datei mit drin - ich habe diese nur nicht nochmal geschrieben. Leider startet MH mit
                    Code:
                    use Owfs_Item;
                    use Owfs_Thermostat;
                    
                    $tempWZ = new Owfs_DS18S20 ("10.0DE4ED010800", "WZ", 2 );
                    if (new_second 60) {
                      set $TempWZ get_temperature $tempWZ;
                      print_log " Wohnzimmertemperatur: " . state $TempWZ;
                    }
                    nicht. Da bekomme ich immer die Fehlermeldung
                    Can't locate object method "new" via package "Owfs_DS18S20" (perhaps you forgot to load "Owfs_DS18S20"?)



                    aber mit
                    Code:
                    use Owfs_Item;
                    use Owfs_Thermostat;
                    
                    if ($New_Minute) {
                    my $at = OW::get('/10.0DE4ED010800/temperature');
                    set $TAussentemperatur $at;
                    print_log "### Aussentemperatur".$TAussentemperatur->state();
                    }
                    startet MH und gibt mir aber jede volle Minute ein
                    Code:
                    08/20/10 03:39:00 AM: Saving object states ... done
                    inside temp = F
                    inside humid = %
                    aus.

                    Die Befehlseingabe
                    Code:
                    /opt/owfs/bin/owread -C -s localhost:3030 10.0DE4ED010800/temperature
                    bringt allerdings keine Werte. Der owfsserver hat also keine Verbindung zu den Temperaturfühlern. Da ich die DS1820 am '/dev/ttyS0' angeschlossen habe müsste ich doch den 'owfsserver' '-d=dev/ttyS0' anstatt mit '-u' starten.

                    Ich trage also ein
                    Code:
                    pumuckl:~ # /opt/owfs/bin/./owserver --error_level=5 --foreground -d /dev/ttyS0 -p3030
                    das ergibt allerdings ein
                    Code:
                     DEBUG: ow_ds9097U.c:DS2480_set_baud_control(484) Failed second attempt at resetting baud rate of bus master /dev/ttyS0
                      DEBUG: ow_ds9097U.c:DS2480_configuration_write(440) wrong response (05 not 44)
                      DEBUG: ow_ds9097U.c:DS2480_detect(239) Could not initilize the DS9097U even after several tries
                    CONNECT: owlib.c:SetupSingleInboundConnection(105) Cannot detect DS2480 or LINK interface on /dev/ttyS0.
                       CALL: ow_parsename.c:FS_ParsedName_anywhere(90) path=[]
                      DEBUG: owserver.c:main(152) main_threadid = 3083679424
                    Trace/breakpoint trap
                    aus.

                    Klar das er keinen DS2480 findet ich habe ja auch DS1820 dran - nur wie erzähle ich das dem owserver. Hat da jemand ein Idee ?

                    Ach so. Ich habe ja mittels
                    Code:
                    ./owfs /dev/ttyS0 /mnt/1wire
                    eine Verbindung zu den Fühlern aufgebaut (oder was auch immer) und bekomme mit einem


                    Code:
                    cat /mnt/1wire/10.0DE4ED010800/temperature
                    den Wert 20.4375 ausgegeben.

                    Das stimmt sogar mit dem Wert vom Digitemp überein:

                    ...
                    ROM #0 : 10D40EDA0008002D
                    ROM #1 : 10A2D0ED0108009E
                    ROM #2 : 10A2DCED010800BF
                    ROM #3 : 1039ABED010800CA
                    ROM #4 : 100DE4ED0108007D
                    ROM #5 : 10ADC1ED0108000B
                    Wrote /etc/digitemprc
                    pumuckl:/opt/owfs/bin # digitemp -a -c /etc/digitemprc
                    DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
                    GNU Public License v2.0 - Digital Temperature Sensor Modules for Linux
                    Aug 23 21:45:14 Sensor 0 C: 18.19 F: 64.74
                    Aug 23 21:45:15 Sensor 1 C: 33.25 F: 91.85
                    Aug 23 21:45:16 Sensor 2 C: 40.19 F: 104.34
                    Aug 23 21:45:18 Sensor 3 C: 18.31 F: 64.96
                    Aug 23 21:45:19 Sensor 4 C: 20.44 F: 68.79
                    Aug 23 21:45:20 Sensor 5 C: 22.44 F: 72.39
                    ...

                    Die Fühler und die Serielle Schnittstelle ist also i.O.

                    Danke für Ideen und Lösungsansätze wie ich den owserver mit DS1820 am /dev/ttyS0 zum laufen bringe ?

                    Kommentar


                      #25
                      Wenn Du uns jetzt dann noch erzählst, was genau für einen Busmaster da an der seriellen steckt kämen wir vielleicht weiter.. DS9097? Lötkolben-Eigenbau?
                      Das owfs geht und owserver nicht halte ich für unwahrscheinlich da beide exakt dieselbe libowfs verwenden um den Busmaster anzusprechen..

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

                      Kommentar


                        #26
                        Hallo,
                        Zitat von tombu
                        Klar das er keinen DS2480 findet ich habe ja auch DS1820 dran - nur wie erzähle ich das dem owserver. Hat da jemand ein Idee ?
                        1. DS2480 ist eine 1-Wire Schnittstelle (Busmaster)
                        2. DS1820 ist ein Temperatursensor

                        Du benötigst 1 um mit 2 zu kommunizieren. Deshalb auch die Frage:
                        Zitat von makki
                        Entweder ich sehs nicht oder es steht nirgends: was für einen Busmaster haste denn da dran?
                        Vielleicht können wir Dir mit der Information weiterhelfen.
                        Grüße
                        Werner

                        Kommentar


                          #27
                          Hallo,

                          es ist ein Eigenbau:



                          Nur 5 Teile:
                          • 2 Stück Schottky Dioden (1N5818)
                          • 1 Stück Zener Diode 6.2V (1N5234)
                          • 1 Stück Zener Diode 3.9V (1N5228)
                          • 1 Stück Widerstand 1,5 kOhm, 0,25 Watt

                          Daran hängen dann die DS1820'er.

                          Kommentar


                            #28
                            Hmm, schlagartig ruhig hier geworden im Tread, woran das wohl liegen mag?

                            Ok, während die anderen noch mit Ihrer Fassung ringen, versuche ich das mal ein wenig zu beleuchten.

                            Es gibt viele Möglichkeiten nach Rom zu kommen, die meisten benutzen dafür die gut ausgebaute geteerte Autobahn (soll heißen, die kaufen fertige Produkte, anschließen, fertig), wenige benutzen die Landstraße, weil es da mehr zu sehen gibt (Basteln / Tunen ein wenig an der Software und Einstellungen herum, bewegen sich aber ansonsten auf ausgetretenen Pfaden) und dann gibt es die harten Einzelkämpfer die sich mit einer Machete durch den Urwald kämpfen, dabei massive Umwege gehen müssen oder sich verirren.

                            Mir scheint ein wenig, Du gehst den letzteren Weg, nur mit unzureichender Ausrüstung?

                            Ich fasse mal Deinen Projektstand zusammen:

                            • Der "Busmaster" sieht mal völlig untauglich aus. Zwar kann man 1-Wire-Sensoren theoretisch auch nur an einem einzelnen Prozessor-Pin betreiben, aber das geht nur mit ganz wenigen Sensoren und nicht weiter als ein paar Meter. Infos dazu im Microcontroller-Forum.

                            • Bitte nicht böse sein, aber aus Deinen Antworten in diesem Tread schließe ich, dass Du die Zusammenhänge im 1-Wire-Netzwerk nicht kennst, nicht weißt wie der Bus funktioniert und auch die Aufgaben eines Busmasters nicht wirklich kennst.

                            • Richtige Busmaster für die Anwendung in der Gebäueautomatisierung verfügen über einen "Strong-Pullup", das ist - salopp ausgrdrückt - so etwas wie ein Treibertransistor für die DATA-Leitung. Nebenbei haben Busmaster eine eigene Logik, machen das Timing größtenteils separat und ein Überspannungsschutz ist auch noch eingebaut.

                            • Dein Busmaster oben "vergewaltigt" eine serielle Schnittstelle (die mit bis zu +/- 15 V läuft). Die Bauteile auf Deiner Platine sorgen nur für die Spannungsanpassung auf 5V (durch "verbrennen" der zu hohen Spannung mit Z-Dioden und Widerstände). Die eigentliche Steuerung würde hier von der seriellen Schnittstelle übernommen, die jedoch für das RS232C-Protokoll entworfen wurde, nicht für das völlig andere 1-Wire-Protokoll. Es braucht auch eine entsprechende "Busmaster-Software" dazu die da laufen muss, nur wird die das OFWS nicht kennen vermutlich.

                            • Selbst wenn man das ganze irgendwie hinbekommt, wird es NIE richtig und schon gar nicht auf Dauer funktionieren, weil dieser Bastel-"Busmaster" gar keine größeren Leitungslängen treiben kann, nie einen parasitären Modus unterstützten wird, die "Treiber-Software" vermutlich ähnlich qualitativ ist wie der "Busmaster", die vergewaltigte serielle Schnittstelle nicht dafür gebaut ist und das Timing vermutlich nicht wirklich passt.


                            ==> Kurzum, kauf Dir für 21,90 EUR (zzgl. Versandkosten) bitte einen ordentlichen 1-Wire Busmaster / USB Hostadapter DS9490R, damit hast eine ordentliche Basis, der wird vom OFWS unterstützt und dann kannst die von Dir gewünschten Funktionalitäten auch realisieren.

                            Bitte nicht sauer sein, wegen der klaren Worte. Es ist besser aufs richtige Gleis gesetzt zu werden, auch wenn es ein klein wenig schmerzhaft ist vielleicht.

                            LG

                            Stefan

                            Kommentar


                              #29
                              Da die Schaltung von tombu nichts anderes ist, als ein passiver 1-Wire auf RS232 Adapter ( DS9097 )
                              müßte sie eigentlich mit OWFS problemlos funktionieren.
                              Also ich tippe mal auf eine andere Fehlerquelle.

                              EDIT:
                              Gerade gefunden: mit dieser Schaltung solls mit den neuen Sensoren DS18S20 zu Problemen kommen.
                              Abhilfe schafft VDD mitanzuschliessen, siehe Schaltplan.
                              • R1 resistor 1.2 KiloOhms (1.5 KiloOhms) 1/4 W
                              • R2 resistor 68 Ohms (---) 1/4 W
                              • R3 resistor 220 Ohms (330 Ohms) 1/4 W
                              • R4 resistor 4.7 KiloOhms 1/4 W
                              • D1 zener diode 3.9 volt (ZF, ZPD 3.9 or equiv.) 0.4 W
                              • D2 schottky diode 1N5818, 1N5711, BAT46
                              • D3 zener diode 6.2 volts (ZPD 6V2 or. equiv.) 0.4 W
                              • D4, D6 diode universal 1N4148, 1N914 or equiv.
                              • D5 zener diode 5.1 (5.6) volts (ZF-, ZPD 5.1) 0.4 W
                              • C1 capacitor tantal 4.7 (10, 15) microfarad 10+ volts
                              mfg, Lons
                              Angehängte Dateien

                              Kommentar


                                #30
                                Zitat von lons Beitrag anzeigen
                                Da die Schaltung von tombu nichts anderes ist, als ein passiver 1-Wire auf RS232 Adapter ( DS9097 ) müßte sie eigentlich mit OWFS problemlos funktionieren.
                                Müsste? Oder Wird? Nein, diese Schaltung funktioniert eben nicht wirklich!

                                1. Der DS9097 (ein passiver "Bit-Bang" 1-Wire-Adapter an serieller RS232 Schnittstelle) wird von Dallas nicht mehr hergestellt und ist "not recommended for new designs".
                                2. Dieser DS9097 war einzig und alleine von Maxim dafür gedacht, daran EINEN iButton zu betreiben.
                                3. Als Ersatz soll der DS9097U verwendet werden. Das eine U macht einen gewaltigen Unterschied: Es ist ein DS2480B - also ein richtiger aktiver Busmaster für richtiges Timing eingebaut (und noch ein DS9097 ID-Chip).
                                4. Maxim erwähnt ausdrücklich, dass mit dem DS9097U - also dem aktiven Busmaster am seriellen Port - nun auch der Anschluss von Temperatur- (und Crypto- und EEPROM-) 1-Wire-Devices möglich ist - weil ein "Strong Pullup" enthalten ist, der dem DS9097 und dem Selbstbau fehlt.
                                5. Diese passiven Adapter - und der von Dir vorgeschlagene Schaltplan von Prof. Dr.-Ing. Manfred Hamann unterstützten zwar nun auch die größere Stromaufnahme bei der Temperature Conversion der neueren Sensoren. Allerdings - und das sollte man auch erwähnen - "funktioniert" das ganze nur wenn die RS232C Schnittstelle auch die +/- 12 V ausgibt. Bei mobilen Rechnern, Notebooks (die etwas älteren noch mit serieller Schnittstelle) liefert die Schnittstelle oftmals nur +- 5 V (anstatt der +- 12 V) und damit funktioniert der neue Schaltungsvorschlag wieder nicht!
                                6. Es ist auch zu beachten, dass - nach Messungen auf der Seite von OWFS - diese passiven Adapter etwa 30 mal LANGSAMER sind beim Auslesen der 1-Wire-Slaves (sofern es eben überhaupt geht).
                                7. Die Reichweite und die Anzahl der damit auslesbaren Sensoren ist deutlich limitiert.
                                8. Einige 1-Wire Sensoren gehen gar nicht, unter anderem machen die neueren Temperatursensoren Schwierigkeiten wegen dem erhöhten Strombedarf bei der Konvertierung.
                                9. Wir sprechen hier immer noch über einen Selbstbau einer suboptimalen Schaltung, dessen Funktion nicht bewiesen ist.

                                Wir entwickeln Produkte und Software rund um 1-Wire seit zwei Jahren, glaubt es halt bitte einfach.

                                ==> Ich empfehle immer noch einen richtigen aktiven 1-Wire Busmaster. So teuer ist das nicht. In USB (bei mehreren Shops, nicht nur bei uns) kostet das 21,90 EUR (inkl. MwSt plus Versandkosten). Für so wenig Geld schlage ich mich doch nicht mit dem Löten von Platinen und Steckern herum und suche wochenlang Fehler?


                                Zitat von lons Beitrag anzeigen
                                Also ich tippe mal auf eine andere Fehlerquelle
                                Tippen reicht nicht. Bitte nicht falsch verstehen, aber wir sollten Fehler doch bitte MESSEN und nicht vermuten. Wenn das nicht geht - das Messen meine ich - dann nehmen wir doch bitte die Autobahn oder wenigstens die ausgetretenen Pfade nach Rom, bedeutet: Aktuelle und gut unterstützte Hardware (also ein richtiger Busmaster) sowie aktuelle und gut unterstützte Software (OFWS, davon das richtige und NEIN! kein digitemp).

                                Viel Glück

                                Stefan

                                Kommentar

                                Lädt...
                                X