Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. Installation "node-red-contrib-1wire" / "npm install -g ."

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Installation "node-red-contrib-1wire" / "npm install -g ."

    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      nobody last edited by

      Hallo miggi20000,

      die Installationsbeschreibung für den Node auf der npm-Seite ist falsch. Für die Installation unter iobroker ist entweder der Package-Name in den Adaptereinstellungen einzutragen oder das npm-Kommando im Verzeichnis /opt/iobroker/node_modules/iobroker.node-red auszuführen, damit dieser als Node unter der node-red-Installation installiert wird. Also

      iobroker stop node-red.0
      cd /opt/iobroker/node_modules/iobroker.node-red
      npm install node-red-contrib-1wire
      iobroker start node-red.0
      
      

      Wenn der Node direkt mit npm installiert wird, ist dieser nach einem Update des iobroker node-red-Apapters wieder weg und muss erneut manuell installiert werden. Dies entfällt beim Eintrag in das Feld Additional npm modules, weil diese dann automatisch von iobroker beim Start von node-red überprüft und ggf. neu installiert werden.

      Mit Option "-g" sollte generell kein Node für node-red installiert werden. Das -g steht für Global und würde den Node nicht so installieren, dass node-red diesen einbinden würde, da es nur in seinem Verzeichnis nach nodered-Nodes sucht.

      Der node-red-contrib-1wire ist leider schon ewig nicht weiterentwickelt worden (Version 0.0.1) und hat bei mir zu gelegentlichen Abstürzen des node-red-Prozesses geführt.

      Ich verwende mittlerweile den http://flows.nodered.org/node/node-red- … b20-sensor . Der macht in etwa das gleiche, wird aber aktiv gepflegt.

      Gruß

      Markus

      1 Reply Last reply Reply Quote 0
      • derAuge
        derAuge last edited by

        Hallo miggi20000,

        Willkommen im Forum.

        fein das du dich auch mit den Themen hier auseinander setzt.

        Genau die gleiche Idde (DS18B20-Sensoren) habe ich auch. Bei meinem Test habe ich die Sensoren mit JS ausgelesen. Das funktioniert sehr gut.

        Nun bin ich gerade im Umbau der Hardware

        Mein Plan ist es :

        DHT22 Sensoren

        und

        DS18B20 Digital Temperature Sensoren

        auszulesen.

        Ja ich weiß, die werden unterschiedlich abgefragt. (Daher noch Baustelle)

        Gruß

        Jürgen

        1 Reply Last reply Reply Quote 0
        • Eisbaeeer
          Eisbaeeer Developer last edited by

          Hallo zusammen

          Ohne jetzt bekehrend wirken zu wollen. Aber ich frage mich gerade warum ihr das über node-red machen wollt?

          Gut, man lernt viel dazu, aber mit owfs ginge das leichter und mit weniger CPU Last.

          Gruss Eisbaeeer

          Gesendet von meinem SM-G920F mit Tapatalk

          1 Reply Last reply Reply Quote 0
          • derAuge
            derAuge last edited by

            @Eisbaeeer:

            aber mit owfs ginge das leichter `

            Hast du soetwas laufen?

            bei OWFS werden die Sensoren doch über ein "Gateway" angesprochen?

            Oder wie hast du das gelöst?

            Gruß

            Jürgen

            1 Reply Last reply Reply Quote 0
            • derAuge
              derAuge last edited by

              Hier mal der Script der bei mir die Sensoren abfragt

              mit http://forum.iobroker.net/viewtopic.php?f=21&t=2603 aus dem Forum entstanden

              `// ###################### //
              // DS18B20 Werte abfragen //
              // ###################### //
              var sensor = require('ds18x20');
              console.log("################## Sensor DS18B20 werden ausgelesen #####");
              var isLoaded = sensor.isDriverLoaded();
                  console.log("Driver geladen: " + isLoaded);
              var ArrayOfDeviceIds = sensor.list();
                  console.log("Sensor Array  : " + ArrayOfDeviceIds);
              var count = ArrayOfDeviceIds.length; // Anzahl der IDs (Sensoren)
                  console.log("Sensor Anzahl : " + count);
              //var ArrayOfDeviceData = sensor.get(sensor.list());
              //    console.log("Sensor Array  : " + ArrayOfDeviceData);
              // =============================================================================
              // Datenpunkte anlegen
              // =============================================================================
              var IDdesc ;
              for (var i = 1 ; i < count; ++i) {
                      IDdesc = ArrayOfDeviceIds[i];
                      createState('DS18B20.Sensoren.' + i , 0, {
                          name: 'DS18B20.Sensor.' + i + '.' + IDdesc ,
                          desc: 'DS18B20-Sensor' + IDdesc,                // wo für ist der Eintrag?
                          type: 'number',
                          unit: '°C'});
                      log("Sensor " + i + " = " + IDdesc);
                 }
              // =============================================================================
              // Funktionen                                                         Funktionen
              // =============================================================================
              var t; // Variable für den Tempereatur-Wert
              function tempWerteAuslesen () {
                  for (var i = 1 ; i < count; ++i) {
                      t = sensor.get(ArrayOfDeviceIds[i]);
                      setState("DS18B20.Sensoren." + i, t);
                  }
                  log("Sensoren wurden ausgelesen")
              }
              schedule('*/1 * * * *', tempWerteAuslesen);` 
              
              Passt zwar nicht ganz zur Thema (NodeRed) aber ist vielleicht hilfreich.
              
              Gruß
              
              Jürgen[/i][/i]
              
              1 Reply Last reply Reply Quote 0
              • Eisbaeeer
                Eisbaeeer Developer last edited by

                @derAuge:

                @Eisbaeeer:

                aber mit owfs ginge das leichter `
                Hast du soetwas laufen?

                bei OWFS werden die Sensoren doch über ein "Gateway" angesprochen?

                Oder wie hast du das gelöst?

                Gruß

                Jürgen `

                Hi Jürgen

                Ja, das läuft bei mir seit Jahren. Schon auf dem Vorgänger CCU.IO.

                Man braucht keinen Gateway bzw. ist der Gateway ein Dienst, welcher auf dem gleichen Raspberry laufen kann (aber nicht muss). OW-Server liest die 1-wire devices aus und stellt sie per TCP zur Verfügung. Hier greift dann der OWFS-Adapter von iobroker die Daten wieder ab.

                Vorteil, um das Auslesen und schreiben von 1-wire Geräten kümmert sich die OWFS Community (wenn es neue Geräte gibt) und die Schnittstelle bleibt gleich. Und man ist flexibler. Wie gesagt, muss der Temperatursensor nicht am gleichen Raspi hängen, kann aber.

                Auf die Schnelle habe ich hier eine Anleitung gefunden, wie man OW-Server auf einem RPI installiert: https://www.carluccio.de/1-wire-sensore … pberry-pi/. Aber es gibt jede Menge Anleitungen für OW-Server für RPI. In iobroker noch den OWFS-Adapter installieren und die ID´s der Sensoren eintragen und fertig.

                Vorteil, man kann auch andere 1-wire Geräte ansteuern (z.B. Relais und andere Sensoren).

                Es gibt auch eine Huckepack Platine, welche eine echte 1wire Schnittstelle zur Vefügung stellt. Damit ist dann auch "Parasite-Mode" möglich. Also nur 2 Drähte zu den Sensoren.

                Hier noch der Link zu meinem 1wire Porjekt noch unter ccu.io, inzwischen migriert auf iobroker: http://www.weimars.net/?p=113

                Gruß Eisbaeeer

                1 Reply Last reply Reply Quote 0
                • N
                  nobody last edited by

                  @Eisbaeeer:

                  Gut, man lernt viel dazu, aber mit owfs ginge das leichter und mit weniger CPU Last.

                  Gruss Eisbaeeer

                  Gesendet von meinem SM-G920F mit Tapatalk `

                  Hallo Eisbaeeer,

                  ich hätte jetzt viele Argumente für und wieder node-red erwartet, aber das Ressourcen-Argument halte ich dann doch mal für weit her geholt.

                  Wenn man sich für node-red entschieden hat, dann hat man normalerweise den Prozess sowieso laufen. Somit kostet es eigentlich keine zusätzlichen Ressourcen.

                  Timerevents werden sowohl in owfs als auch in node-red über crown-Jobs gelöst, also gleich.

                  Der PI unterstützt 1Wire nativ. So gut wie alle Implementierungen basieren auf dem Auslesen der virtuellen Files, die über fs gelesen werden.

                  Dies ist auch bei der ds18x20 der Fall, wie sie bei den owfs (open wire file system) Skripten eingesetzt wird. Genau das gleiche machen die node-red-Nodes. Also auch gleich.

                  Somit ist die entscheidende Frage nicht, welches die bessere Lösung ist, sondern was man normalerweise für seine Logik verwendet. Wenn jemand sowieso den javascript-Adapter verwendet, ist es wenig sinnvoll, speziell für die 1wire-Schnittstelle node-red laufen zu lassen. Wenn man aber node-red verwendet, ist das die bessere Lösung, weil auch der Javascript-Adapter frisst viele Ressourcen.

                  Wenn man beides einsetzt, kann man sich das aussuchen.

                  Über die Vor- und Nachteile der unterschiedlichen Automatisierungsoptionen aus meiner Sicht habe ich in anderen Threads schon beschrieben.

                  By the way:

                  Die von 34 Zeilen Code (einschließlich Kommentare) sind in Node-Red auch nur 4 Nodes:

                  • Inject für den Cron

                  • ds18b20-sensor zum Auslesen aller Werte als Array

                  • Javascript oder change zum Setzen des oder der Topics

                  • ioBroker out

                  Gruß

                  Markus

                  1 Reply Last reply Reply Quote 0
                  • M
                    miggi20000 last edited by

                    Hallo Markus,

                    das von Dir vorgeschlagene Modul "node-red-contrib-ds18b20-sensor" habe ich unter Instanzen im Node-Red Adapter eingefügt und iobroker neu gestartet.

                    Hat alles auf Anhieb geklappt. Vielen Dank.

                    Den OWFS-Adapter habe ich nicht eingesetzt, da ich hierfür einen USB-Adapter benötige.

                    Gruß Miggi20000

                    1 Reply Last reply Reply Quote 0
                    • derAuge
                      derAuge last edited by

                      Ja, der vorgeschlagene Weg ist sehr gut

                      Habe nun beide varianten laufen

                      Flow:

                      ! [{"id":"3e8af675.e358c2","type":"ds18b20","z":"e488d4df.07337","name":"Sensor 1","sensorid":"28-00000697a7d3","timer":"1","x":104,"y":503,"wires":[["eadfb57d.cb07b","54c5608e.28587"]]},{"id":"eadfb57d.cb07b","type":"debug","z":"e488d4df.07337","name":"Temperatur vom Sensor","active":true,"console":"false","complete":"payload","x":543,"y":571,"wires":[]},{"id":"be569204.33cb98","type":"ds18b20","z":"e488d4df.07337","name":"Sensor 2","sensorid":"28-0000069797b5","timer":"1","x":100,"y":458,"wires":[["89c5d1ca.97bf78","eadfb57d.cb07b"]]},{"id":"54c5608e.28587","type":"ioBroker out","z":"e488d4df.07337","name":"","topic":"node-red.0.DS18B20.Sensor.1","ack":"true","autoCreate":"true","x":555,"y":510,"wires":[]},{"id":"89c5d1ca.97bf78","type":"ioBroker out","z":"e488d4df.07337","name":"","topic":"node-red.0.DS18B20.Sensor.2","ack":"true","autoCreate":"true","x":556,"y":461,"wires":[]},{"id":"1d6a3553.679dcb","type":"ioBroker out","z":"e488d4df.07337","name":"","topic":"node-red.0.DS18B20.Sensor.10","ack":"true","autoCreate":"true","x":557,"y":620,"wires":[]},{"id":"6beb8e7c.ba47f","type":"rpi-ds18b20","z":"e488d4df.07337","topic":"","array":true,"name":"","x":300,"y":614,"wires":[["eadfb57d.cb07b","1d6a3553.679dcb"]]},{"id":"fad0d4e.c245f28","type":"inject","z":"e488d4df.07337","name":"alle 30 sec.","topic":"","payload":"","payloadType":"date","repeat":"30","crontab":"","once":true,"x":119,"y":614.5,"wires":[["6beb8e7c.ba47f"]]}]

                      Nun muss man bei "node-red-contrib-ds18b20-sensor" noch die Temperatur vom Payload heraus filtern.

                      Gruß

                      Jürgen

                      1 Reply Last reply Reply Quote 0
                      • Eisbaeeer
                        Eisbaeeer Developer last edited by

                        Hi nobody

                        Ich wollte auch nicht sagen, dass die Lösung besser oder schlechter ist. Ich bin genau deiner Meinung. Beide Systeme haben ihre Berechtigung. Man muss eben noch abwägen, welche Funktionen man braucht und sich dann entscheiden. Ich nutze die OWFS Lösung über TCP. Sicher geht das auch mit Multihost.

                        Ich wollte auch nur eine Alternative aufzeigen.

                        Und dank iobroker ist man da ja sehr flexibel.

                        Gruß Eisbaeeer

                        Gesendet von meinem SM-G920F mit Tapatalk

                        1 Reply Last reply Reply Quote 0
                        • derAuge
                          derAuge last edited by

                          > For each sensor found, it returns the msg object where the topic is set to the sensor ID and the payload is

                          Das scheint nicht zu stimmen. Oder ich mache etwas falsch

                          als Wert wird nun

                          [object Object],[object Object]

                          übermittelt.

                          irgend etwas fehlt mir da noch :roll:

                          Debug siht so aus:

                           { "family": "28", "id": "D3A797060000", "file": "28-00000697a7d3", "temp": 22.25 }, { "family": "28", "id": "B59797060000", "file": "28-0000069797b5", "temp": 22.187 }, { "family": "28", "id": "59AF96060000", "file": "28-00000696af59", "temp": 85 }, { "family": "28", "id": "1D3B96060000", "file": "28-000006963b1d", "temp": 22.187 } ]
                          
                          1 Reply Last reply Reply Quote 0
                          • N
                            nobody last edited by

                            Die Beschreibung ist nicht so ganz auf dem aktuellen Stand.

                            Wenn man nur einen Sensor hat, wird die Checkbox Array ausgewertet. Wenn diese nicht gesetzt ist, befindet sich in der payload direkt die Temperatur.

                            Wenn mehr als ein Sensor vorhanden ist, wird generell ein Array zurückgegeben.

                            Hier mal ein kleiner Flow, der alle gefundenen Sensoren und dessen Wert als State unter node-red.0 ablegt

                            `[{"id":"c9619a18.2454d8","type":"inject","z":"fd87934b.2cb37","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":97,"y":480,"wires":[["e33ff961.1daa58"]]},{"id":"e33ff961.1daa58","type":"rpi-ds18b20","z":"fd87934b.2cb37","topic":"","array":true,"name":"","x":333,"y":466,"wires":[["20952379.b557ec"]]},{"id":"502fd11d.1162a","type":"debug","z":"fd87934b.2cb37","name":"","active":true,"console":"false","complete":"true","x":668,"y":480,"wires":[]},{"id":"20952379.b557ec","type":"function","z":"fd87934b.2cb37","name":"","func":"var msg1={topic:\"\",payload:\"\"};\nfor(var i in msg.payload){\n  msg1.topic=\"node-red.0.\" + msg.payload[i].id;\n  msg1.payload=msg.payload[i].temp;\n  node.send (msg1);\n  }\nreturn null;","outputs":1,"noerr":0,"x":485,"y":463,"wires":[["502fd11d.1162a","472ec0e.d1a964"]]},{"id":"472ec0e.d1a964","type":"ioBroker out","z":"fd87934b.2cb37","name":"","topic":"","ack":"true","autoCreate":"true","x":676,"y":414,"wires":[]}]` [/i]
                            
                            1 Reply Last reply Reply Quote 0
                            • derAuge
                              derAuge last edited by

                              so, nun läuft die Messung seit einigen Tagen.

                              Leider habe ich immer wieder "ausreißer" in den Werten

                              • 22.875 true node-red.0 2016-05-08 16:00:38
                              85 true node-red.0 2016-05-08 15:59:44
                              
                              85 true node-red.0 2016-05-08 15:58:37
                              
                              22.875 true node-red.0 2016-05-08 15:57:37
                              
                              22.875 true node-red.0 2016-05-08 15:56:43
                              
                              22.875 true node-red.0 2016-05-08 15:55:37
                              
                              22.875 true node-red.0 2016-05-08 15:54:37
                              
                              22.875 true node-red.0 2016-05-08 15:53:43
                              
                              22.875 true node-red.0 2016-05-08 15:52:35
                              
                              22.875 true node-red.0 2016-05-08 15:51:32
                              
                              22.8125 true node-red.0 2016-05-08 15:50:32
                              
                              22.8125 true node-red.0 2016-05-08 15:49:38
                              
                              22.8125 true node-red.0 2016-05-08 15:48:31
                              
                              85 true node-red.0 2016-05-08 15:47:33
                              
                              22.8125 
                              

                              315_werte_last_h.png
                              kann ich die Werte bereinigen?

                              Hat noch jemand das Thema?

                              1 Reply Last reply Reply Quote 0
                              • N
                                nobody last edited by

                                Hallo derAuge,

                                Ich hab ab meinen pi nur zwei ds18b20, aber bei denen gibt es keine extremen Ausreißer.

                                Mit welchem Intervall werden die den ausgelesen?

                                Vielleicht liegt es auch an der Verkabelung oder dem Widerstand.

                                Natürlich kann man Werte, die extrem vom erwarteten Bereich abweichen einfach nicht speichern. Aber eine richtige Lösung wäre das wohl eher nicht.

                                Gesendet von meinem GT-N8000 mit Tapatalk

                                1 Reply Last reply Reply Quote 0
                                • derAuge
                                  derAuge last edited by

                                  bei mir sind zur Zeit 4 Sensoren angeschlossen.
                                  315_ds18b20-waterproof.jpg

                                  Sie liegen alle im Büro beim Testaufbau.

                                  Anschaltung :
                                  315_ds18b20-parasite-power.jpg

                                  Erste Abfrage:
                                  315_ds18b20_nodered1.png

                                  Zweite Abfrage:
                                  315_ds18b20_nodered2.png

                                  Und der JS

                                  schedule('*/1 * * * *', tempWerteAuslesen);

                                  Auch die unterschiedliche Auswertung ist intereannt:
                                  315_ds18b20_vis1.png

                                  Die Frage nach der Anschaltung habe ich auch schon übelegt. Vielleuicht sollte ich alles umbauen auf "Drei-Draht"

                                  Gruß

                                  Jürgen

                                  1 Reply Last reply Reply Quote 0
                                  • Eisbaeeer
                                    Eisbaeeer Developer last edited by

                                    @derAuge:

                                    so, nun läuft die Messung seit einigen Tagen.

                                    Leider habe ich immer wieder "ausreißer" in den Werten

                                    • 22.875 true node-red.0 2016-05-08 16:00:38
                                    85 true node-red.0 2016-05-08 15:59:44
                                    
                                    85 true node-red.0 2016-05-08 15:58:37
                                    
                                    22.875 true node-red.0 2016-05-08 15:57:37
                                    
                                    22.875 true node-red.0 2016-05-08 15:56:43
                                    
                                    22.875 true node-red.0 2016-05-08 15:55:37
                                    
                                    22.875 true node-red.0 2016-05-08 15:54:37
                                    
                                    22.875 true node-red.0 2016-05-08 15:53:43
                                    
                                    22.875 true node-red.0 2016-05-08 15:52:35
                                    
                                    22.875 true node-red.0 2016-05-08 15:51:32
                                    
                                    22.8125 true node-red.0 2016-05-08 15:50:32
                                    
                                    22.8125 true node-red.0 2016-05-08 15:49:38
                                    
                                    22.8125 true node-red.0 2016-05-08 15:48:31
                                    
                                    85 true node-red.0 2016-05-08 15:47:33
                                    
                                    22.8125 
                                    

                                    filename="Werte_last_h.png" index="0">~~
                                    kann ich die Werte bereinigen?

                                    Hat noch jemand das Thema? `
                                    Wenn du als Ausreißer die Werte mit 85 grad meinst, dann sind das Fehllesungen, welches auf ein falsches Timing am GPIO hinweist. Imho kann man die Checksumme im DS18S20 auswerten und dann entscheiden, ob der Wert richtig übertragen wurde oder nicht. Ich habe diese Fehler erst mit einem 1wire Busbaustein weg bekommen. Dieser wird aber über SPI angesprochen.

                                    Der Fehler ist aber auf jeden Fall auf die Software 1wire Schnittstelle zurückzuführen.

                                    Gruß Eisbaeeer

                                    Gesendet von meinem SM-G920F mit Tapatalk

                                    1 Reply Last reply Reply Quote 0
                                    • N
                                      nobody last edited by

                                      Keine Ahnung, ob dies eine Auswirkung hat, aber bei der Beschreibung für den pi, nach der ich die Verkabelung gemacht habe, wird der Widerstand mit 3.3 Volt statt 5 Volt verbunden.

                                      Gesendet von meinem GT-N8000 mit Tapatalk

                                      1 Reply Last reply Reply Quote 0
                                      • Thisoft
                                        Thisoft last edited by

                                        Hallo derAuge,

                                        die 85°C-Werte sind eindeutig Fehlmessungen seitens der Sensoren. Speziell wenn Du die oben abgebildeten, vergossenen Sensoren (aus China) hast würde ich dir sehr empfehlen auf 3-Draht-Technik umzurüsten. Ich hatte mit diesen Sensoren im parasitären Mode auch nur Probleme wo andere (unverdrahtete vom großen C) einwandfrei funktioniert haben.

                                        Gruß Thilo

                                        1 Reply Last reply Reply Quote 0
                                        • First post
                                          Last post

                                        Support us

                                        ioBroker
                                        Community Adapters
                                        Donate

                                        924
                                        Online

                                        31.8k
                                        Users

                                        80.0k
                                        Topics

                                        1.3m
                                        Posts

                                        5
                                        19
                                        5327
                                        Loading More Posts
                                        • Oldest to Newest
                                        • Newest to Oldest
                                        • Most Votes
                                        Reply
                                        • Reply as topic
                                        Log in to reply
                                        Community
                                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                        The ioBroker Community 2014-2023
                                        logo