[Gelöst] 1-wire auf 2. Raspberry läuft nicht

Begonnen von MarioS1969, 27 Mai 2015, 23:07:18

Vorheriges Thema - Nächstes Thema

ritchie

Hi,

meist will man das ja nicht glauben,
aber wenn Du das ganze in Ruhe angehst und nochmals einen "Schritt" nach hinten machst
und die Hardware zuerst nochmals prüfst, findet man im Fall des 1-wire fast immer einen Hardwarefehler.

Schau einfach hier (http://www.fhemwiki.de/wiki/1-Wire_St%C3%B6rungsbeseitigung) nochmals nach und prüfe auch die Error Counter.
Wenn diese zu schnell steigen ist ein Hardwarefehler vorhanden, obwohl es scheinbar läuft.

Eine gute Verdrahtung sorgt für einen stabilen Bus.

Gruss R.
IPU662  Ipfire & Fhem (Homematic + MAX) - Produktiv
Cubietruck (1Wire - USB) - Produktiv

MarioS1969

Hallo,
mit FHEM2FHEM und Anschluss der 1-wire Sensoren über GPIO funktioniert es:

Code auf dem Haupt FHEM-Pi

define RemotePI FHEM2FHEM 192.168.220.136:7072 LOG:.* GEHEIM
define Warmwasser cloneDummy GPIO4_Warmwasser
define Gefriertruhe cloneDummy GPIO4_Gefriertruhe
define HWR cloneDummy GPIO4_HWR
define Heizung_VL cloneDummy GPIO4_Heizung_VL


Code auf dem Temperatur-Erfassungs FHEM-Pi

define telnetPort telnet 7072 global
attr telnetPort globalpassword GEHEIM

define RPi GPIO4 BUSMASTER

define GPIO4_Warmwasser GPIO4 28-000006780d0c
attr GPIO4_Warmwasser model DS18B20
attr GPIO4_Warmwasser room GPIO4
define FileLog_GPIO4_Warmwasser FileLog ./log/GPIO4_Warmwasser-%Y.log GPIO4_Warmwasser:T:.*
attr FileLog_GPIO4_Warmwasser logtype temp4:Temp,text
attr FileLog_GPIO4_Warmwasser room GPIO4

define GPIO4_Gefriertruhe GPIO4 28-000006785433
attr GPIO4_Gefriertruhe model DS18B20
attr GPIO4_Gefriertruhe room GPIO4
define FileLog_GPIO4_Gefriertruhe FileLog ./log/GPIO4_Gefriertruhe-%Y.log GPIO4_Gefriertruhe:T:.*
attr FileLog_GPIO4_Gefriertruhe logtype temp4:Temp,text
attr FileLog_GPIO4_Gefriertruhe room GPIO4

define GPIO4_HWR GPIO4 28-00000677444c
attr GPIO4_HWR model DS18B20
attr GPIO4_HWR room GPIO4
define FileLog_GPIO4_HWR FileLog ./log/GPIO4_HWR-%Y.log GPIO4_HWR:T:.*
attr FileLog_GPIO4_HWR logtype temp4:Temp,text
attr FileLog_GPIO4_HWR room GPIO4

define GPIO4_Heizung_VL GPIO4 28-0000067755fb
attr GPIO4_Heizung_VL model DS18B20
attr GPIO4_Heizung_VL room GPIO4
define FileLog_GPIO4_Heizung_VL FileLog ./log/GPIO4_Heizung_VL-%Y.log GPIO4_Heizung_VL:T:.*
attr FileLog_GPIO4_Heizung_VL logtype temp4:Temp,text
attr FileLog_GPIO4_Heizung_VL room GPIO4
PI 2, PI4,  RFXtrx433, IT-1500, CMR-1000, ITM 100, TFA Temperatursensor, IR-Sensor, FB 7590, LIRC mit Logitech Harmony, FI9821W, Sonos, Twilight, Benzinpreismonitor, HMLAN, HM-Sen-DB-PCB, HM-LC-Bl1PBU-FM, HM-SEC-SC-2, GPIO4 mit fhem2fhem, Shelly

MoBaFan

Hallo zusammen,

ich habe mich auch mit dem Thema rumschlagen müssen, da ich fhem auf einem Raspi installiert habe, ich jedoch einen weiteren als "Repeater" benötigte. Und wenn man schon einen weiteren Raspi installiert, kann der sich auch gleich nützlich machen, indem er die Temperatur misst.
Der "Repeater" wird über die fhem Zentrale nur mittels ssh Kommando angesprochen, führt also nur ab und dann ein Script aus, um Befehle (FS 20, oder Rademacher Fernotron) zu wiederholen - also somit in einem anderen Teil des Gebäudes zu senden. Da hierfür keine große Rechenleistung erforderlich ist, habe ich mir den preiswertesten Raspi dafür ausgesucht.
Um den kleinen also nicht zu sehr zu strapazieren, habe ich nach einer einfacheren Möglichkeit gesucht, die Temperatur die dieser Repeater misst, in meiner Zentrale zur Verfügung zu stellen. Leider waren meine Ideen im Verzeichnis "/sys/devices/w1_bus_master1/" einen symbolischen Link anzulegen, oder etwa den "entfernten" Raspi mittels mount dort einzubinden, nicht erfolgreich, selbst als sudo hat man dazu keine Rechte.
Es kann aber ein cronjob eingerichtet werden, der die Datei 'w1_slave' etwa jede Minute auf ein Netzwerklaufwerk kopiert, in meinem Falle eine Fritzbox, die als mini-NAS herhält, um es von dort zum Beispiel mit fhem einzulesen.

Das wird mit folgenden Kommandos erreicht:

sudo nano /etc/crontab

Man fügt die folgende Zeile am Ende der Datei ein:

cp /sys/devices/w1_bus_master1/10-000802135931/w1_slave /mnt/Fritz/Temperaturen/10-000802135931/w1_slave

Natürlich sind die Verzeichnisnamen mit den entsprechenden Sensor-IDs zu ersetzen.
Hinweis:
Wenn man das gesamte Verzeichnis (im Beispiel: "10-000802135931") vorher kopiert hatte, kann es sein, dass der cp Befehl nicht ausgeführt wird, da die Berechtigungen nicht stimmen. Es empfiehlt sich dann einfach die Datei w1_slave auf der Fritzbox zu löschen.

In fhem wird "58_GPIO4.pm" gehackt um die Temperaturen von der Fritzbox im Verzeichnis "/mnt/Fritz/Temperaturen/" einzulesen. Dieses Verzeichnis muss alle Temperaturen enthalten, also die Verzeichnisse mit der Kennung der Sensoren welche sich auf den Raspberries im Verzeichnis "/sys/devices/w1_bus_master1/" befinden.

Der Hack besteht nur darin die Lage der Verzeichnisse mit den Messwerten zu verändern.
Folgende Modifikationen sind durchgeführt worden:

In GPIO4_GetSlaves:
Zeile
   open SLAVES, "/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves";
ist mit der Zeile
   open SLAVES, "/mnt/Fritz/Temperaturen/w1_master_slaves";
ersetzt worden.
In GPIO4_Get:
Zeile
   open DATA, "/sys/bus/w1/devices/$hash->{DEF}/w1_slave";
ist mit der Zeile
   open DATA, "/mnt/Fritz/Temperaturen/$hash->{DEF}/w1_slave";
ersetzt worden.

Zusätzlich zu den Messwerten muß sich auch die Datei ""w1_master_slave" auf der Fritzbox im Verzeichnis "/mnt/Fritz/Temperaturen/" befinden. Diese Datei muß dann natürlich
alle Sensor-IDs aufweisen, so dass das Script "58_GPIO4.pm" diese als Sensoren erkennen kann (pro Zeile die ID jedes einzelnen Sensors).

Beispiel:
10-000802135931
10-000800620b42

Alle Temperatursensoren werden dann "normal" in fhem angelegt, also etwa mit:

define EG_Balkon GPIO4 28-001451df14ff
attr EG_Balkon model DS18S20
attr EG_Balkon room Balkon
attr EG_Balkon group Temperaturen

Das funktioniert alles stabil und gut, aber eigentlich mag ich nicht fhem Standardscripte hacken, denn wenn die bei einem Update überschrieben werden, muß ich den Hack erneut durchführen. Da ich mich aber in fhem nicht gut genug auskenne, und in Perl auch nicht, ist mir nichts besseres eingefallen. Vielleicht hat da ja jemand eine besser Idee.