FHEM Forum

Verschiedenes => Bastelecke => MySensors => Thema gestartet von: Sidey am 23 September 2019, 23:03:40

Titel: Automatisches Anlegen von Readings
Beitrag von: Sidey am 23 September 2019, 23:03:40

Ich habe bei einer Mysensors Definition Temperaturwerte von child 7 auf das reading temperature gemappt:

attr MYSENSOR_UNO mapReading_temperature 7 temperature

Manchmal muss ich den sensor resetten, da er abschmiert.
Ob es damit 1:1 zuammenhängt weiss ich noch nicht, aber irgendwann bekomme ich keine Werte mehr auf dem Reading temperature, weil Zusätzlich ein mapping auf das reading temperature7 angelegt wird:

attr MYSENSOR_UNO mapReading_temperature7 7 temperature

Krieg ich das der Definition irgendwie abgewöhnt?

Grüße Sidey

Titel: Antw:Automatisches Anlegen von Readings
Beitrag von: HomeAuto_User am 24 September 2019, 06:38:02
Moin Moin,
ob es mit deinem Problem zusammenhängt weiß ich nicht aber mir kommt es ähnlich vor, wie der Sachverhalt

- stateformat und ein Leerzeichen an bestimmter Stelle. (Beispiel:  { ReadingsTimestamp($name, "state", 0) ." - ". ReadingsVal($name, "state", "none");} ) Dies erzeugt unter Umständen ebenso ein neues Reading wenn man das Leerzeichen nicht via Unicode definiert weil im ,,Hintergrund" dann an einer falschen Stelle getrennt wird.

Versuche mal, das Leerzeichen mit Unicode zu ersetzen.


Gesendet von iPhone mit Tapatalk Pro
Titel: Antw:Automatisches Anlegen von Readings
Beitrag von: Beta-User am 24 September 2019, 16:07:13
Hmm, wird etwas dauern, bis ich mich da unter den Code von Norbert mal drunterlegen kann...

Wenn jemand eine schnelle konkrete Idee hat, was da wo zu ändern ist, um das nebenwirkungsfrei zu beseitigen, wäre ich nicht unglücklich ;) .
Titel: Antw:Automatisches Anlegen von Readings
Beitrag von: Beta-User am 30 September 2019, 15:16:29
@HomeAuto_User:
Bezieht sich das mit stateFormat explizit auf MySensors oder ist das eine allgemeine Feststellung?

Ich habe das stateFormat eben mit einer einigermaßen akutellen Testinstallation (strawberryPerl) sowohl an einem MQTT2_DEVICE wie einem MYSENSORS_DEVICE ausgetestet und konnte da keine Probleme feststellen, kann aber auch OS-spezifisch sein.

Aus dem MySensors-Code werde ich da an der Stelle leider nicht schlau bzw. kann keine Auffälligkeiten erkennen; wenn es der "Umbenennungs-Teil" wäre (ReadingFrom Comment), müßte das alte ReadingMapping gelöscht werden, das Verhalten scheint also wenn, dann schon seit Urzeiten so zu sein.

Sonst jemand eine Idee?
Titel: Antw:Automatisches Anlegen von Readings
Beitrag von: Sidey am 30 September 2019, 22:50:41
Durch diesen Programmierstiel blicke ich leider auch nicht durch. Meiner geht leider anders.

Ich hab das Verhalten nachgestellt und kann folgende Logs dazu anbieten:

2019.09.30 22:42:46 4: MYSENSORS_DEVICE MYSENSOR_UNO: ignoring C_SET-message no reading-mapping for childId 7, type temperature

2019.09.30 22:42:46 4: MYSENSORS Read: Rx: fr=228 ci=007 c=001(C_SET         ) st=000(V_TEMP          ) ack=0 '21.50'

2019.09.30 22:42:46 4: MYSENSORS/RAW: /228;7;1;0;0;21.50


Das readingMapping existiert, wird aber wohl nicht gefunden.

Ich hatte mir das im Code auch schon mal angesehen und nicht gefunden, an welcher Stelle
$hash->{readingMappings}
mit Inhalt gefüllt wird.

Grüße Sidey
Titel: Antw:Automatisches Anlegen von Readings
Beitrag von: HomeAuto_User am 30 September 2019, 22:52:18
Zitat von: Beta-User am 30 September 2019, 15:16:29
@HomeAuto_User:
Bezieht sich das mit stateFormat explizit auf MySensors oder ist das eine allgemeine Feststellung?

Hallo,
meine Aussage bezieht sich auf die allgemeine Feststellung.

Sobald

- stateformat und ein Leerzeichen an bestimmter Stelle. (Beispiel:  { ReadingsTimestamp($name, "state", 0) ." - ". ReadingsVal($name, "state", "none");} ) erzeugt es Umständen ebenso ein neues Reading wenn man das Leerzeichen nicht via Unicode definiert weil im ,,Hintergrund" dann an einer falschen Stelle getrennt wird.

Das Verhalten konnte ich nun schon an mindestens 2 Systemen nachvollziehen.


Gesendet von iPad mit Tapatalk Pro
Titel: Antw:Automatisches Anlegen von Readings
Beitrag von: Sidey am 30 September 2019, 23:19:49
Hi,

ich habe es mal ein bisschen analysiert.
Es fehlt der Eintrag in radingMappings. Ich habe es mit der childID 5 ausprobiert.
Der Eintrag

G_counter fehlt in dem Hash.
Ich habe das attribut neu gesetzt. Danach war der Eintrag vorhanden.

Wieso der Eintrag irgendwann verschwinde habe ich nicht herausgefunden.

'readingMappings' => {
                                 '5' => {
                                          '17' => {
                                                    'name' => 'power5'
                                                  },
                                          '24' => {
                                                    'name' => 'G_counter'
                                                  },
                                          '18' => {
                                                    'name' => 'energy5'
                                                  },
                                          '56' => {
                                                    'name' => 'power_factor5'
                                                  }
                                        }
                               },
Titel: Antw:Automatisches Anlegen von Readings
Beitrag von: Beta-User am 04 Oktober 2019, 10:04:12
Hallo zusammen,

Danke erst mal für die Rückmeldungen.

Leider habe ich keine Idee, warum die Mappings verloren gehen könnten - der einzige Fall, in dem das Modul das Mapping absichtlich zerstört, ist die Anforderung des Users, die Kommentare auszuwerten (aber auch da müßte nach meinem Codeverständnis auch sowohl eine Nutzeranforderung vorliegen wie auch die Node einen Kommentar senden, damit überhaupt was in die Richtung passiert!). Glaube also kaum, dass das die Ursache ist, kann mich aber täuschen...
Sonst tappe ich echt im Dunkeln, zumal das hier ein Einzelfall zu sein scheint, sorry.

Was die Sache mit dem Leerzeichen angeht, sollte man das Rudi mal mitteilen (er liest hier eher nicht mit), denn das dürfte dann aus fhem.pl kommen (https://svn.fhem.de/trac/browser/trunk/fhem/fhem.pl#L4605).