Autor Thema: Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading  (Gelesen 2504 mal)

Offline Guzzi-Charlie

  • Full Member
  • ***
  • Beiträge: 133
Hallo,
ich habe eine Installation von ca 80 1-Wire Sensoren (DS18x20). Diese lese ich zu je 8 mit mehreren D1-Mini's ein und habe Sie per MQTT2 in FHEM eingebunden. Das funktioniert eigentlich perfekt, jedenfalls 100x besser als mit den vorher eingesetzten USB 1-Wire Busmastern und OW-Server/Device.

Jetzt habe ich aber ein kleines Problem gefunden bzgl. der Zuordnung der Sensoren zu den Readings. Der D1-Mini (FW=Tasmota) sortiert die 8 möglichen Sensoren dynamisch nach der Sensor-ID, d.h. das Reading "DS18B20-1_Temperature" ist das vom Sensor mit der niedrigsten ID und "DS18B20-8_Temperature" das mit der höchsten ID. Fällt nun aber ein Sensor z.B. wegen Defekt aus rutschen alle nachfolgenden Sensoren um eine Position nach oben. Fällt also Sensor 4 aus dann wird das Reading "DS18B20-4_Temperature" fortan vom Sensor5 beschrieben. Damit stimmen alle Zuordnungen nicht mehr.

Wie kann ich erreichen, das von der MQTT-Message die Sensor-ID zum Schreiben der Readings ausgewertet wird?
Die aktuell vom MQTT2-Server automatisch angelegte Readinglist sieht folgendermaßen aus:
DVES_1759CF:tele/IoT-WemosD1-Mini-8/LWT:.* LWT
DVES_1759CF:cmnd/IoT-WemosD1-Mini-8/POWER:.* POWER
DVES_1759CF:tele/IoT-WemosD1-Mini-8/INFO1:.* { json2nameValue($EVENT) }
DVES_1759CF:tele/IoT-WemosD1-Mini-8/INFO2:.* { json2nameValue($EVENT) }
DVES_1759CF:tele/IoT-WemosD1-Mini-8/INFO3:.* { json2nameValue($EVENT) }
DVES_1759CF:tele/IoT-WemosD1-Mini-8/STATE:.* { json2nameValue($EVENT) }
DVES_1759CF:tele/IoT-WemosD1-Mini-8/SENSOR:.* { json2nameValue($EVENT) }
DVES_1759CF:tele/IoT-WemosD1-Mini-8/UPTIME:.* { json2nameValue($EVENT) }

und die daraus erzeugten Readings:
DS18B20-1_Id
020292467012
2019-10-13 13:09:26
DS18B20-1_Temperature
24.7
2019-10-13 13:13:56
DS18B20-2_Id
020292468804
2019-10-13 13:09:26
DS18B20-2_Temperature
25.7
2019-10-13 13:13:26
DS18B20-3_Id
020391773FBC
2019-10-13 13:09:26
DS18B20-3_Temperature
27.8
2019-10-13 13:13:56
DS18B20-4_Id
02089246BC92
2019-10-13 13:09:26
DS18B20-4_Temperature
25.6
2019-10-13 13:13:26
DS18B20-5_Id
020A92464E2E
2019-10-13 13:09:26
DS18B20-5_Temperature
26.9
2019-10-13 13:13:56
DS18B20-6_Id
02189177362E
2019-10-13 13:09:26
DS18B20-6_Temperature
26.4
2019-10-13 13:13:56
DS18B20_Temperature
26.4
2019-10-06 11:15:16

Könnte man z.B. statt der lfd. Nummer "DS18B20-1,-2,..." die ID des Sensors einfügen, also "DS18B20-020292467012,-020292468804,..."?
- Raspberry PI 3+: (Cuno V2 mit 2x KS300, JeeLink mit 13x EC3000
- Stromzähler: 38x DRS155M (B+G E-Tech) bisher noch nicht in FHEM
- LAN: Intertechno LAN-Gateway mit 28x RMF-R1 (Rohrmotor24)
- WLAN: 32x Shelly, 12x Gosund SP111, 10x D1-Mini, 15x Sonoff Basic
- DECT: 4x DECT200

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8152
  • eigentlich eher user wie "developer"
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #1 am: 13 Oktober 2019, 13:54:22 »
Sollte schon gehen. Braucht aber "etwas Perl" in der Analyse des JSON.
Beispielsweise die Tasmota-ir bzw. -RF -templates machen was in die Richtung. Ggf. mal den unausgepackten json posten.
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN
svn:MySensors, WeekdayTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline Guzzi-Charlie

  • Full Member
  • ***
  • Beiträge: 133
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #2 am: 13 Oktober 2019, 15:41:58 »
Hallo,
das was vom D1-Mini kommt sieht so aus:

tele/IoT-WemosD1-Mini-1/SENSOR = {"Time":"2019-10-13T14:40:40","DS18B20-1":
{"Id":"01131FE394ED","Temperature":32.7},"DS18B20-2":{"Id":"01131FE98DA6","Temperature":60.1},"DS18B20-3":{"Id":"0114335D738C","Temperature":6.7},"DS18B20-4":{"Id":"01143365CBB6","Temperature":-18.4},"DS18B20-5":{"Id":"0213194EE8AA","Temperature":28.1},"DS18B20-6":{"Id":"0213194FA2AA","Temperature":64.9},"DS18B20-7":{"Id":"0213195D16AA","Temperature":50.9},"DS18B20-8":{"Id":"02131966ECAA","Temperature":48.8},"TempUnit":"C"}
- Raspberry PI 3+: (Cuno V2 mit 2x KS300, JeeLink mit 13x EC3000
- Stromzähler: 38x DRS155M (B+G E-Tech) bisher noch nicht in FHEM
- LAN: Intertechno LAN-Gateway mit 28x RMF-R1 (Rohrmotor24)
- WLAN: 32x Shelly, 12x Gosund SP111, 10x D1-Mini, 15x Sonoff Basic
- DECT: 4x DECT200

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8152
  • eigentlich eher user wie "developer"
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #3 am: 14 Oktober 2019, 08:43:46 »
Umpf, das sieht nicht so einfach aus. Ich würde empfehlen, das

1. nach MQTT zu verschieben (da sind evtl. mehr Leute unterwegs, die Perl-Auswertungen@MQTT2 machen), und
2. mal sowas in die Richtung zu versuchen (statt json2nameValue()):
{my %matches;
while (
$EVENT =~ /.Id...([A-F0-9]{10})...Temperature..([\d]+\.[\d]+)/g)
 { $matches->{Temperature_$1} = $2; };
)
return \%matches}
Wenn du Glück hast, liefert das die Temperatur dann jeweils unter der ID zurück
(Kann aber sein, dass das FHEM lahmlegt, das ist erst mal Pseudocode als  Gedankenansatz...)
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN
svn:MySensors, WeekdayTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline Guzzi-Charlie

  • Full Member
  • ***
  • Beiträge: 133
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #4 am: 14 Oktober 2019, 13:51:22 »
Ok, Danke Dir erstmal für die Hinweise.

Ich werde das dann mal versuchen. Ich weiß aber noch nicht ob ich das diese Woche noch schaffe. Wir fahren am Donnerstag in Urlaub.

Sollte ich nicht weiterkommen dann melde ich mich nochmal und evtl. verschiebe ich dann den Beitrag in die MQTT-Sektion.

Gruß
- Raspberry PI 3+: (Cuno V2 mit 2x KS300, JeeLink mit 13x EC3000
- Stromzähler: 38x DRS155M (B+G E-Tech) bisher noch nicht in FHEM
- LAN: Intertechno LAN-Gateway mit 28x RMF-R1 (Rohrmotor24)
- WLAN: 32x Shelly, 12x Gosund SP111, 10x D1-Mini, 15x Sonoff Basic
- DECT: 4x DECT200

Offline sukram

  • New Member
  • *
  • Beiträge: 7
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #5 am: 15 Oktober 2019, 01:06:40 »
Guten Abend miteinander,

anscheinend bin ich nicht ganz der einzige mit dieser Konfiguration (D1 mini + DS18B20 Sensoren + Tasmota).

Ich habe den Pseudocode mal angepasst und in die readingsList eingebaut, bekomme aber noch keine neuen Readings rein. Anscheinend bin ich um die Zeit zu blöd für Perl.

Mein Device stand jetzt:
define MQTT2_DVES_30CD68 MQTT2_DEVICE DVES_30CD68
attr MQTT2_DVES_30CD68 DbLogExclude .*
attr MQTT2_DVES_30CD68 IODev myBroker
attr MQTT2_DVES_30CD68 alias Heizungssensor
attr MQTT2_DVES_30CD68 autocreate 1
attr MQTT2_DVES_30CD68 readingList DVES_30CD68:tele/sonoff/LWT:.* LWT\
DVES_30CD68:cmnd/sonoff/POWER:.* POWER\
DVES_30CD68:tele/sonoff/INFO1:.* { json2nameValue($EVENT) }\
DVES_30CD68:tele/sonoff/INFO2:.* { json2nameValue($EVENT) }\
DVES_30CD68:tele/sonoff/INFO3:.* { json2nameValue($EVENT) }\
DVES_30CD68:tele/DVES_30CD68/LWT:.* LWT\
DVES_30CD68:cmnd/DVES_30CD68/POWER:.* POWER\
DVES_30CD68:tele/DVES_30CD68/INFO1:.* { json2nameValue($EVENT) }\
DVES_30CD68:tele/DVES_30CD68/INFO2:.* { json2nameValue($EVENT) }\
DVES_30CD68:tele/DVES_30CD68/INFO3:.* { json2nameValue($EVENT) }\
DVES_30CD68:tele/DVES_30CD68/STATE:.* { json2nameValue($EVENT) }\
DVES_30CD68:stat/DVES_30CD68/RESULT:.* { json2nameValue($EVENT) }\
DVES_30CD68:tele/DVES_30CD68/SENSOR:.* { my $matches;; while ($EVENT =~ m/.Id...([A-F0-9]{10})...Temperature..([\d]+\.[\d]+)/g) { $matches->{Temperature_$1}=$2;; };; return $matches;; }\

attr MQTT2_DVES_30CD68 room Systemstatus
attr MQTT2_DVES_30CD68 verbose 5

define FileLog_MQTT2_DVES_30CD68 FileLog ./log/MQTT2_DVES_30CD68-%Y%m%d.log MQTT2_DVES_30CD68
attr FileLog_MQTT2_DVES_30CD68 DbLogExclude .*
attr FileLog_MQTT2_DVES_30CD68 logtype text
attr FileLog_MQTT2_DVES_30CD68 nrarchive 31
attr FileLog_MQTT2_DVES_30CD68 room Systemstatus

setstate FileLog_MQTT2_DVES_30CD68 active
setstate FileLog_MQTT2_DVES_30CD68 2019-10-15 00:52:42 linesInTheFile 1730

setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 BME280_Humidity 55.6
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 BME280_Pressure 996.2
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 BME280_Temperature 20.6
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-1_Id 03079779B4DB
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-1_Temperature 22.1
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-2_Id 03079779E867
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-2_Temperature 35.8
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-3_Id 03079779E87A
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-3_Temperature 54.0
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-4_Id 031697796E31
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-4_Temperature 37.8
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-5_Id 03189779BEFB
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-5_Temperature 20.6
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-6_Id 031997791288
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-6_Temperature 22.9
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-7_Id 03199779462C
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-7_Temperature 21.1
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-8_Id 03199779510C
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 DS18B20-8_Temperature 22.6
setstate MQTT2_DVES_30CD68 2019-10-11 19:46:22 FallbackTopic cmnd/DVES_30CD68_fb/
setstate MQTT2_DVES_30CD68 2019-10-11 19:46:22 GroupTopic sonoffs
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 Heap 24
setstate MQTT2_DVES_30CD68 2019-10-11 19:46:22 Hostname TASMOTA-Sensor01
setstate MQTT2_DVES_30CD68 2019-10-11 19:46:22 IPAddress 10.102.1.246
setstate MQTT2_DVES_30CD68 2019-10-14 22:23:19 LWT Online
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 LoadAvg 19
setstate MQTT2_DVES_30CD68 2019-10-11 19:46:22 Module Generic
setstate MQTT2_DVES_30CD68 2019-10-14 22:23:19 POWER
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 PressureUnit hPa
setstate MQTT2_DVES_30CD68 2019-10-11 19:46:22 RestartReason Power on
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 Sleep 50
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 SleepMode Dynamic
setstate MQTT2_DVES_30CD68 2019-10-11 22:19:25 TelePeriod 30
setstate MQTT2_DVES_30CD68 2019-10-15 00:15:43 TempUnit C
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 Time 2019-10-14T23:52:42
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 Uptime 3T04:36:31
setstate MQTT2_DVES_30CD68 2019-10-11 19:46:22 Version 6.6.0(sensors)
setstate MQTT2_DVES_30CD68 2019-10-11 19:46:22 WebServerMode Admin
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 Wifi_AP 1
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 Wifi_BSSId xx:xx:xx:xx:xx:xx
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 Wifi_Channel 10
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 Wifi_Downtime 0T00:00:04
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 Wifi_LinkCount 1
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 Wifi_RSSI 100
setstate MQTT2_DVES_30CD68 2019-10-15 00:52:42 Wifi_SSId xxxxxx

Das Systemlog dazu (verbose 5 für das Gerät oben):
2019.10.15 00:52:42 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/STATE => { json2nameValue($EVENT) }
2019.10.15 00:52:43 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/SENSOR => { my $matches; while ($EVENT =~ m/.Id...([A-F0-9]{10})...Temperature..([\d]+\.[\d]+)/g) { $matches->{Temperature_$1}=$2; }; return $matches; }
2019.10.15 00:53:12 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/STATE => { json2nameValue($EVENT) }
2019.10.15 00:53:12 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/SENSOR => { my $matches; while ($EVENT =~ m/.Id...([A-F0-9]{10})...Temperature..([\d]+\.[\d]+)/g) { $matches->{Temperature_$1}=$2; }; return $matches; }
2019.10.15 00:53:42 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/STATE => { json2nameValue($EVENT) }
2019.10.15 00:53:43 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/SENSOR => { my $matches; while ($EVENT =~ m/.Id...([A-F0-9]{10})...Temperature..([\d]+\.[\d]+)/g) { $matches->{Temperature_$1}=$2; }; return $matches; }
2019.10.15 00:54:12 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/STATE => { json2nameValue($EVENT) }
2019.10.15 00:54:13 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/SENSOR => { my $matches; while ($EVENT =~ m/.Id...([A-F0-9]{10})...Temperature..([\d]+\.[\d]+)/g) { $matches->{Temperature_$1}=$2; }; return $matches; }
2019.10.15 00:54:42 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/STATE => { json2nameValue($EVENT) }
2019.10.15 00:54:43 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/SENSOR => { my $matches; while ($EVENT =~ m/.Id...([A-F0-9]{10})...Temperature..([\d]+\.[\d]+)/g) { $matches->{Temperature_$1}=$2; }; return $matches; }
2019.10.15 00:55:12 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/STATE => { json2nameValue($EVENT) }
2019.10.15 00:55:13 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/SENSOR => { my $matches; while ($EVENT =~ m/.Id...([A-F0-9]{10})...Temperature..([\d]+\.[\d]+)/g) { $matches->{Temperature_$1}=$2; }; return $matches; }
2019.10.15 00:55:42 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/STATE => { json2nameValue($EVENT) }
2019.10.15 00:55:43 4: MQTT2_DEVICE_Parse: MQTT2_DVES_30CD68 tele/DVES_30CD68/SENSOR => { my $matches; while ($EVENT =~ m/.Id...([A-F0-9]{10})...Temperature..([\d]+\.[\d]+)/g) { $matches->{Temperature_$1}=$2; }; return $matches; }

Wie man sieht, sieht man nix.  Keine Fehlermeldung, aber auch keine Angaben, dass die Perl Expression überhaupt ausgewertet wurde.

Habe ich beim übertragen der Zeile einen Fehler eingebaut?
Hier nochmal die betreffende Zeile, wie ich sie im fhemweb Editor eingegeben habe:
DVES_30CD68:tele/DVES_30CD68/SENSOR:.* { my $matches; while ($EVENT =~ m/.Id...([A-F0-9]{10})...Temperature..([\d]+\.[\d]+)/g) { $matches->{Temperature_$1}=$2; }; return $matches; }
Meine Änderungen: Zeilenumbrüche raus, "m" beim Pattern ergänzt, % durch $ ersetzt (hier gab es sonst Perl Error: "Global symbol $matches requires explicit package name (did you forget to declare "my $matches"?)", überflüssige ) vor dem return entfernt.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8152
  • eigentlich eher user wie "developer"
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #6 am: 15 Oktober 2019, 07:28:30 »
Es sollte schon "%matches" sein, wir benötigen einen Hash als Rückgabe.

Evtl. mal anders initialisieren:

my %matches = ();
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN
svn:MySensors, WeekdayTimer, AttrTemplate => {mqtt2, mysensors, httpmod}

Offline sukram

  • New Member
  • *
  • Beiträge: 7
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #7 am: 15 Oktober 2019, 08:34:01 »
Guten Morgen.

Leider bekomme ich das auch mit der anderen Initialisierung nicht "rein", ändere ich alle drei Stellen von "$matches" nach "%matches", bekomme ich folgenden Fehler:
Can't use a hash as a reference at (eval 21148) line 1.
Lasse ich die Stelle innerhalb der Schleife als "$matches->...", dann bekomme ich den Fehler von weiter oben:
Global symbol "$matches" requires explicit package name (did you forget to declare "my $matches"?) at (eval 21253) line 1.
Scheint, als ob ich mich doch noch mal tiefer in Perl einlesen muss...

Offline sukram

  • New Member
  • *
  • Beiträge: 7
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #8 am: 16 Oktober 2019, 20:53:04 »
Guten Abend,

ich habe es zum laufen bekommen.

Folgender Code in der ReadingsList (Device und Topic bitte anpassen) erzeugt je DS18x20 Sensor ein Reading nach dem Schema "Temperatur_12-stellige-ID: nn,n"
DVES_30CD68:tele/DVES_30CD68/SENSOR:.* { my %ret; while ($EVENT =~ /.Id...([A-F0-9]{12})...Temperature..([\d]+\.[\d]+)./g) { $ret{"Temperatur_".$1}=$2; }; return \%ret; }
Ausserdem "autocreate" (wieder) auf 1 stellen, damit neue Readings angelegt werden.

Wenn man noch andere Sensoren (I2C, SPI etc) angeschlossen hat oder die "alten" Readings weiter laufen lassen will, muss die bisherige "SENSORS" Zeile in der ReadingsList drin bleiben!

Der Grund für den Hash/reference Fehler ist hier beschrieben:
https://stackoverflow.com/questions/6265673/perl-using-a-hash-as-a-reference-is-deprecated

Nachdem der Code fehlerfrei übernommen wurde, musste nur noch der Regex angepasst werden, im Detail die ID auf 12 stellen.

Schönen Abend noch!
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Guzzi-Charlie

  • Full Member
  • ***
  • Beiträge: 133
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #9 am: 16 Oktober 2019, 21:02:50 »
Hi,
das wäre ja Klasse, wenn das so klappt. Werde ich sofort ausprobieren wenn ich aus dem Urlaub zurück bin. Wie weiter oben schon geschrieben fahre ich Morgen Früh für zwei Wochen in Urlaub.

Vielen Dank schonmal.

Grüße
- Raspberry PI 3+: (Cuno V2 mit 2x KS300, JeeLink mit 13x EC3000
- Stromzähler: 38x DRS155M (B+G E-Tech) bisher noch nicht in FHEM
- LAN: Intertechno LAN-Gateway mit 28x RMF-R1 (Rohrmotor24)
- WLAN: 32x Shelly, 12x Gosund SP111, 10x D1-Mini, 15x Sonoff Basic
- DECT: 4x DECT200

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8152
  • eigentlich eher user wie "developer"
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #10 am: 17 Oktober 2019, 09:21:12 »
@sukram: Sehr cool, dass das zum Laufen gebracht hast.

Hab's eben in einer ersten Fassung als attrTemplate eingecheckt, ist ab morgen via update verfügbar; sofern noch was angepaßt werden muß, bitte melden.
Evtl. wäre es noch super, wenn man zwischen den "ID"-Temperatur-Werten und anderen Dingen, die via JSON reinkommen unterscheiden könnte und dann nur einen Code zum auspacken verwendet... Aber das ist mir jetzt für den Moment auch "zu fancy"...
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN
svn:MySensors, WeekdayTimer, AttrTemplate => {mqtt2, mysensors, httpmod}
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline Guzzi-Charlie

  • Full Member
  • ***
  • Beiträge: 133
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #11 am: 03 November 2019, 19:49:05 »
@sukram:
So ich hab es auch gerade an einem meiner 11 D1-Mini's ausprobiert. Hat sofort funktioniert.

Ein super großes Dankeschön für Deine Arbeit  :) :) :)

Morgen werde ich noch den wichtigsten Test machen (weswegen ich überhaupt das Thema eröffnet hatte), nämlich was passiert wenn ein Sensor ausfällt? Normalerweise sollte dann nur der fehlende Sensor nicht mehr geloggt werden, es aber keine Verschiebung der Sensoren mehr geben.

Eine Frage habe ich aber noch:
Nachdem der Code fehlerfrei übernommen wurde, musste nur noch der Regex angepasst werden, im Detail die ID auf 12 stellen.
Was meinst Du damit? Das verstehe ich nicht. Bisher habe ich nur den Code in die Readinglist eingetragen und kurz "autocreate" auf "1" gestellt damit er die neuen Readings anlegt. Damit scheint schon alles zu funktionieren. Oder was muß ich noch tun?

Gruß
- Raspberry PI 3+: (Cuno V2 mit 2x KS300, JeeLink mit 13x EC3000
- Stromzähler: 38x DRS155M (B+G E-Tech) bisher noch nicht in FHEM
- LAN: Intertechno LAN-Gateway mit 28x RMF-R1 (Rohrmotor24)
- WLAN: 32x Shelly, 12x Gosund SP111, 10x D1-Mini, 15x Sonoff Basic
- DECT: 4x DECT200

Offline sukram

  • New Member
  • *
  • Beiträge: 7
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #12 am: 04 November 2019, 23:33:40 »
Guten Abend,

ich hatte nur kurz beschrieben, was ich an dem Code geändert habe, damit das funktioniert. Du hast alles richtig gemacht!

Den Ausfall von Sensoren habe ich schon (unfreiwillig) probiert, bis auf den fehlenden werden alle anderen stabil weitergeloggt.

So, nun gute Nacht.

Offline Guzzi-Charlie

  • Full Member
  • ***
  • Beiträge: 133
Antw:Eindeutige Zuordnung der Sensor-ID von 1-Wire Sensoren zum Reading
« Antwort #13 am: 05 November 2019, 00:10:29 »
Ok, alles klar.

Der Test mit dem Ausfall eines Sensors (einer der vorderen 1-7, natürlich nicht der letzte) war auch erfolgreich. Es wird weiter richtig geloggt und nichts mehr verschoben. Alles perfekt.

Nochmals vielen Dank für die Lösung dieses Problems.

Gruß
- Raspberry PI 3+: (Cuno V2 mit 2x KS300, JeeLink mit 13x EC3000
- Stromzähler: 38x DRS155M (B+G E-Tech) bisher noch nicht in FHEM
- LAN: Intertechno LAN-Gateway mit 28x RMF-R1 (Rohrmotor24)
- WLAN: 32x Shelly, 12x Gosund SP111, 10x D1-Mini, 15x Sonoff Basic
- DECT: 4x DECT200