Mein kleines 1-Wire Raspberry IPS Projekt

Ich hab in der kurzen Freizeit mal angefangen, mein Heizungsraum mit 1Wire Sensoren auszustatten.

Randbedingung:

  • KEIN LAN vorhanden -> WLAN nötig
  • 1-Wire Sensoren sollen angeschlossen werden (ca. 30 - 40 Stück)
    30 - 40 Stück Tempsensoren (für FBH, VL, RL, Speichertemp, Puffertemp, usw.)
    1x Eservice Luftgütesensor
  • CanBus soll angeschlossen werden können
    Stiebel Eltron WPL 13 Cool vorhanden
    (Original CoCo PC / Gatewaylösung unverschämt teuer)
    Auslesen der WErte nun mit Abfrageskripten von juerg54.ch
  • die gesamte Lösung soll in ein kleines Hutschienengehäuse passen
  • Stromverbrauch minimal

-> Lösung:
Raspberry PI B+ im Hutschienengehäuse
1 Wire Stromverteiler (von eservice)
1 Wire DS9490r in Verbindung mit Stromverteiler (war noch übrig)
CanberryPi V2 Steckkarte mit Raspi (industrialberry.com)
Die Verbindung vom 1 Wire Stromverteiler erfolgt per RJ45 Patchkabel bis zu den Sensoren hin, dort habe ich den RJ45 Stecker abgeknipst und den ersten Stecker aufgelötet.
Dabei habe ich immer zwei Adernpaare zusammen genommen!.

Die TempSensoren selbst habe ich auf eine Platine gelötet, samt steckbarer Leiste, Stützkondensator 100nF.
Die Sensoren sind per Kabelbinder an das Fussbodenheizungsrohr angeklemmt

Die Abfrage der 1 Wire Sensoren erfolgt auf dem Raspi.
D.h. dort ist OWFS installiert + IPS.
Mit folgendem Skript frage ich zyklisch die Temp-werte ab, trage Sie in IPS ein.
Mein Windows IPS kann die Daten dann vom Raspi IPS abrufen,
Bin natürlich bei weitem noch nicht fertig.
Es fehlen noch viele weitere Temp-Sensoren… aber das kommt so Stück für Stück nach.
Die Montageplatte mit der Hutschiene muss noch in das Gehäuse rein…

Sieht noch ein wenig durcheinander aus… Mir war es aber wichtig, dass alles aufgeräumt an einer Stelle ist.

Hier ein paar Bilder:

Hier das Skript zur Anlage der Tempsensoren Kategorien + Werte auf dem Raspi IPS:
(ist hier aus dem Forum) - leicht angepasst, dass meine Sensoren mit der ID „28“ beginnen.

if ($handle = opendir('/mnt/1wire'))
    {
    // Verzeichnis durchlaufen
   while (false !== ($file = readdir($handle)))
         {
        If ((strlen($file) == 15) and (substr($file, 2, 1) == "."))
            {
            //  Basiskategorie anlegen
            $CatID = CreateCategoryByName(0, "1-Wire");

              If (substr($file, 0, 2) == "28")
                 {
            $uCatID = CreateCategoryByName($CatID, "DS18B20 - ".$file);
                $varid = CreateVariableByName($uCatID, "address", 3);
                SetValueString($varid, exec("cat /mnt/1wire/$file/address"));
                $varid = CreateVariableByName($uCatID, "type", 3);
                SetValueString($varid, exec("cat /mnt/1wire/$file/type"));
                $varid = CreateVariableByName($uCatID, "temperature", 2, "~Temperature");
                SetValueFloat($varid, (float)exec("cat /mnt/1wire/uncached/$file/temperature"));
                $varid = CreateVariableByName($uCatID, "alias", 3);
                SetValueString($varid, exec("cat /mnt/1wire/$file/alias"));
                 }
            elseif (substr($file, 0, 2) == "81")
                 {
            $uCatID = CreateCategoryByName($CatID, "DS1420 - ".$file);
            $varid = CreateVariableByName($uCatID, "address", 3);
                SetValueString($varid, exec("cat /mnt/1wire/$file/address"));
                $varid = CreateVariableByName($uCatID, "type", 3);
                SetValueString($varid, exec("cat /mnt/1wire/$file/type"));
                $varid = CreateVariableByName($uCatID, "alias", 3);
                SetValueString($varid, exec("cat /mnt/1wire/$file/alias"));
                 }
         elseif (substr($file, 0, 2) == "3A")
                 {
            $uCatID = CreateCategoryByName($CatID, "DS2413 - ".$file);
            $varid = CreateVariableByName($uCatID, "address", 3);
                SetValueString($varid, exec("cat /mnt/1wire/$file/address"));
                $varid = CreateVariableByName($uCatID, "type", 3);
                SetValueString($varid, exec("cat /mnt/1wire/$file/type"));
                $varid = CreateVariableByName($uCatID, "alias", 3);
                SetValueString($varid, exec("cat /mnt/1wire/$file/alias"));
                $varid = CreateVariableByName($uCatID, "PIO.A", 0);
                SetValueBoolean($varid, IdentTrueFalse(exec("cat /mnt/1wire/uncached/$file/PIO.A")));
            $varid = CreateVariableByName($varid, "use_PIO.A", 0);
                $varid = CreateVariableByName($uCatID, "PIO.B", 0);
                SetValueBoolean($varid, IdentTrueFalse(exec("cat /mnt/1wire/uncached/$file/PIO.B")));
            $varid = CreateVariableByName($varid, "use_PIO.B", 0);
                $varid = CreateVariableByName($uCatID, "sensed.A", 0);
                SetValueBoolean($varid, IdentTrueFalse(exec("cat /mnt/1wire/uncached/$file/sensed.A")));
            $varid = CreateVariableByName($varid, "use_sensed.A", 0);
                $varid = CreateVariableByName($uCatID, "sensed.B", 0);
                SetValueBoolean($varid, IdentTrueFalse(exec("cat /mnt/1wire/uncached/$file/sensed.B")));
            $varid = CreateVariableByName($varid, "use_sensed.B", 0);
                }
         elseif (substr($file, 0, 2) == "26")
                 {
            $uCatID = CreateCategoryByName($CatID, "DS2438 - ".$file);
            $varid = CreateVariableByName($uCatID, "address", 3);
                SetValueString($varid, exec("cat /mnt/1wire/$file/address"));
                $varid = CreateVariableByName($uCatID, "type", 3);
                SetValueString($varid, exec("cat /mnt/1wire/$file/type"));
                $varid = CreateVariableByName($uCatID, "temperature", 2, "~Temperature");
                SetValueFloat($varid, (float)exec("cat /mnt/1wire/uncached/$file/temperature"));
                $varid = CreateVariableByName($uCatID, "VAD", 2);
                SetValueFloat($varid, (float)exec("cat /mnt/1wire/uncached/$file/VAD"));
            $varid = CreateVariableByName($varid, "use_VAD", 0);
                $varid = CreateVariableByName($uCatID, "VDD", 2);
                SetValueFloat($varid, (float)exec("cat /mnt/1wire/uncached/$file/VDD"));
                $varid = CreateVariableByName($varid, "use_VDD", 0);
                $varid = CreateVariableByName($uCatID, "alias", 3);
                SetValueString($varid, exec("cat /mnt/1wire/$file/alias"));
                 }
              }
        }
    closedir($handle);
    }
return;

function CreateVariableByName($fatid, $name, $type, $profile = "")
{
    $vid = @IPS_GetVariableIDByName($name, $fatid);
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $fatid);
        IPS_SetName($vid, $name);

        if($profile !== "")
        {
            IPS_SetVariableCustomProfile($vid, $profile);
        }
    }
    return $vid;
}

function CreateCategoryByName($fatid, $name)
{
    $CatID = @IPS_GetCategoryIDByName($name, $fatid);
    if($CatID === false)
    {
        $CatID = IPS_CreateCategory(); // Kategorie anlegen
          IPS_SetName($CatID, $name); // Kategorie benennen
          IPS_SetParent($CatID, $fatid);
    }
    return $CatID;
}

function IdentTrueFalse($Value)
{
    if($Value == "0")
        {
      $result = false;
        }
    else
        {
      $result = true;
        }
    return $result;
}

Die Einrichtung von OWFS / OWHTTP… habe ich wie hier beschrieben vorgenommen:
https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=27379

Servus

nur aus Interesse: Wenn du die 1Wire über OWFS anbindest, warum läßt du dann nicht das WIN IPS die Werte direkt außm OWFS lesen sondern machst den Umweg über ein zweites IPS ?
Oder brauchst das für den CAN Bus von dem du noch schreibst ?

Ich mein nicht das es mir nicht gefällt, aber grad bei Systemen die irgendwo in der Installation rumlungern ist es ja so eine Sache mit Updates und Wartung. Die würde ich eher so unkompliziert und minimal als möglich konfigurieren.

gruß
bb

Ich habe IPS auf dem Raspi urspürnglich für das Canbus Projekt vorgesehen…

Es gibt eigentlich keinen richtigen Grund, warum ich das nicht direkt abfrage…

Wie würde das den ablaufen. Auf dem Raspi läuft ja bei Bedarf „owfs + owserver + owhttp + owftp.“
Das muss ja „lediglich“ in der owfs.conf (unter /etc/) eingestellt werden und dann später unter /etc/init.d/ gestartet werden - für einen Test.

Mit „update-rc.d owfs defaults“ trägt man „OWFS“ in den Autostart
Mit „update-rc.d owftp defaults“ trägt man „OWFTP“ in den Autostart usw…

Mein Raspi hat die IP 192.168.2.3.

Die Ports:

OWFS Webseite hat: 2121
OWServer: 3131
OWFTP: 2120

Optisches update.
Passenden rj45 Verteiler gefunden.
Luftgüte Sensor angeschlossen.


Hallo,
ganz kurze Frage: Für was benötigt man die Stützkondensatoren?

Habe selbst den blauen USB 1 Wire Adapter und daran ca. 15 Temperatursensoren hängen, welche ich selbst angelötet habe, nur halt ohne Stützkondensator, und habe bis jetzt kein Problem feststellen können.

Gruß Werner

Ich hatte in der Vergangenheit manchmal Abfrageprobleme (mit dem blauen DS9490R und Windows IPS).
Daraufhin überall Stützkondensator nachgerüstet - und Probleme waren weg.

Deshalb habe ich die dort jetzt grundsätzlich reingelötet… Hier kommen ja noch insg. ca. 30 - 40 Sensoren zusammen!
Aus diesem Grunde habe ich ja auch noch die bessere Stromversorgung mittels „Eservice HUB“ gewählt.

Guten Morgen,

Hallo,
ganz kurze Frage: Für was benötigt man die Stützkondensatoren?

Das ist eine sehr gute Frage! Man brauch die Dinger, das ist mal Fakt! Meine Kellersensoren gehen sonst gar nicht.
Nur einleuchtend ist das nicht, da der OW Sensor einen Kondensator eingebaut hat. Meine Bodensensoren haben noch keine Kondensatoren und machen weniger Abfragefehler, wie die im Keller. Am Ende sind das Entstör- C´s.

Grüße Jens

Und weiter gehts… Was würde ich nur machen -wenns regnet- und ich kein IP-Symcon hätte :wink:

jetzt wird auch der Eservice Luftguetesensor abgefragt über den Raspi :slight_smile:

Ein Voltcraft Co-20 folgt noch… Die Abfrage auf dem Raspi funktioniert schon… (perl Skript)…
Das müsste ich jetzt in IPS reinkriegen…

Das Gehäuse hängt endlich an der Wand,
Kabel aufgeräumt
Alles neu und schön verkabelt

Jetzt fehlen nur noch weitere 25 Tempsensoren :slight_smile:


Demnächst wird die Finale Version in Betrieb genommen :slight_smile:

Aus dem Blog von Thomas Heldt (hier schon mal beschrieben: https://www.symcon.de/forum/threads/32121-Interessanter-Blog-über-1-Wire-ESP8266-uvm habe ich mir zum Test eine 10fach 1-Wire Abzweigplatine bestellt.

Die Abzweigplatine gibt es in der kleinen Version zum Anschluss von 2 Sensoren oder als Abzweigung für eine Unterputzdose
oder wie ich Sie benötige für bis zu10 Sensoren. D.h. ich kann mit 3 Platinen alle meine Sensoren für unseren Fussbodenheizung anschliessen.

Zur Ausstattung gehören -in meiner Konfiguration- Schraubklemmen für die Sensoren.
Der 1-Wire Bus wird durch WAGO 2060 THR Klemmen realisiert. Und das ganze wird abgerundet durch einen einstellbaren BUS PULL UP Widerstand und zur Bus Überwachung DS2411. Den Stützkondensator kann ich ein die Schraubklemme mit reinschrauben.

Also alles recht plug&play.

Mir war die Löterei jedes Sensors -meiner Platinchen- einfach zu nervig und schön siehts auch nicht aus :slight_smile:

Dort bekommt man -einerseits viele Infos und Anleitungen für 1-Wire/Arduino/ESP8266- und andererseits aus den Anleitungen auch Bausätze die man zusammenlöten/bauen muss. Und das zu sehr fairen Preisen.

Zum Glück erhalte ich als „Erst-Besteller“ die Fertig bestückte Platine aus dem Foto - Vielen Dank nochmals!

Die Platine soll in ein Universalgehäuse (1€ - 5€) - da werde ich noch ein paar ausprobieren. FÜr die Verschraubungen der Sensoren kann ich mit dem Dremel ja eine kleine Öffnung reinmachen.
Dann sieht das alles aufgeräumt aus.

Wenn das soweit funktioniert, bestelle ich nochmals 2 Platinen und alles ist sauber verräumt und sinnvoll angeschlossen.

Das erste Universalgehäuse aus der Krabbelkiste passt bereits… Dann gehts jetzt ans dremeln…

Heute abend ein bisschen gebastelt…
Um den 10er 1wire Verteiler endlich mal an die fbh anzuschließen…

Moin,

hast du von den Dallassensoren mehrere? geht mir darum, ob du von verschiedenen Händlern welche gekauft hast.

Ich such Dallas DS18xxx, die vorne dann abgerundet sind. Falls es soetwas überhaupt gibt.

Das Problem, was ich habe:
Diese Sensoren sollen in den Estrich an meine Fußbodenhz angebunden werden. Leerrohre habe ich in M16 liegen und mit CU-Rohr vorn verlängert, wegen Wärmeübertragung. Leider stoße ich mit den normalen Dallassensoren (IYSTY2x2x08 angelötet und mit Plastik70 eingesprüht) immer gegen das Rohr und nicht ins Rohr rein, weil sie vorne zu kantig sind.

Hi Lutz,

schiebe den DS doch in ein Aluhülse, die du vorher vorne in Form bringst. Die wird dann auch kürzer sein.:slight_smile:

Ich hab meine Sensoren aufgrund des Preises bisher alle bei einem eBay China Händler bestellt. (Better-seller01) 5er Pack mit Edelstahlhülse für 3 Dollar.

Bei dem sind die Hülsen kantig, zum unterschrieben in die Dämmung der fbh Rohre ist das bei mir kein Thema.

Aufgrund meiner robusten Vorgehensweise habe ich die wagoklemmen im Eingang geschrottet… Nun sind sie halt verlötet [emoji1]

Was ist das für ein Verteiler, kannst du eine Bezugsquelle nennen?

Hab ich hier mal beschrieben

Interessanter Blog über 1-Wire / ESP8266 uvm

Gesendet von meinem Redmi Note 2 mit Tapatalk

Der Shop ist echt super, das einzige Problem ist, dass ich eigentlich nicht selbst löten wollte. Mal sehen, wie ich das mache.
Eibe Frage noch: was genau ist den das Bus Pullup Modul? Funktion ist mir nicht klar.
Ich möchte demnächst auch in die 1-wire-Thematik einsteigen.
Zu Beginn:

  • Temperatursensoren an den verschiedenen Teilen der FBH

Später

  • Raumtemperatur
  • Wind
  • Regen
  • Außentemperatur
  • 2fach Status LED

Ich habe eigentlich vorgehabt mir das Symcon 1-wire Gateway zu holen und dann von eservice den Verteiler.
Schien mir zwar insgesamt recht teuer, jedoch einfach in der Konfiguration.

Oder hat jemand noch eine. Tipp, wie ich das ganze gut mit einem Raspi umsetzen kann?
Sollte halt stabil laufen.

Viele Grüße

An einer guten Stromversorgung kommst du bei deinen Anforderungen natürlich nicht vorbei.

Da sind die eservice bauteile schon die erste Wahl.

Beim shopbetreiber kannst du nachfragen ob er deine Artikel evtl. Schon zusammengebaut hat.
Ich hab auch den Verteiler fertig bekommen, da er sonst Lieferzeit gehabt hätte. War echt super…

Gesendet von meinem Redmi Note 2 mit Tapatalk

Hi,

habe mir auch mal vorkonfektionierte Dallassensoren gegönnt. Die kann ich jetzt ca 10cm weiter reinschieben :smiley: , als die normalen Dallassensoren, ohne Hülse…

Und das, obwohl die Kanten vorne auch nicht so abgrundet sind .

Jetzt noch ans IX anschliessen, und dann kommen die Werte ins IPS :loveips: