FHEM - Hausautomations-Systeme > KNX/EIB

Error seit dem Update

<< < (2/5) > >>

erwin:
Hi Matthias,

--- Zitat ---... warum das Device gelöscht wurde. Ist hier etwas in dem Modul eingebaut, ...
--- Ende Zitat ---
.. gelöscht ist der falsche Ausdruck, richtig wäre: Bei einem FHEM Start werden ALLE devices neu definiert, jene bei denen die Syntax nicht stimmt werden nicht definiert und ein Log Eintrag geschrieben.
wenn du dann ein save oder update machst, werden alle DEFINIERTEN devices in der fhem.cfg file gesichert.
damit ist das device mit der falschen syntax endgültig weg! - so funkt. die FHEM Logik. - das modul selbst löscht keine definitionen.
Auf die verschärfte syntax hab ich im 1.Beitrag hingewiesen... die war notwendig, weil es sonst im Betrieb Probleme gibt.
in deinem Beispiel:  listenonly wurde als IO-deviceNamen verwendet, den gabs ganz sicher nicht in deinem system - und damit  kann deine definition nicht funktionieren (zumindest nichts senden). Nachdem du aber nur empfangen wolltest, hat das zufällig funktioniert!
Wie schon geschrieben: die IO-device angabe im define ist in 99,9% der Anwendungen unnötig und kontraproduktiv- Details dazu in der cmd-ref
In der nächsten version hab ich einen zus. Log Eintrag gebaut für solche Fälle...
l.g.erwin

baerm:
Hallo Erwin,
danke für die Erklärung. Damit ist es für mich nachvollziehbar, was genau passiert ist.
Ich habe noch eine Frage. Ich habe seit dem Umstieg auf die neue Version habe ich folgende Meldung bei jeder Temp Änderung:


--- Code: ---2021.09.11 22:01:30 3: KNX_checkAndClean: value= Aussen 16.3°C 16.3°C was casted to Aussen 16.3°C
--- Ende Code ---

Vielleicht habe ich nicht die eleganteste Implementierung, aber ich setze mittels DOIF und dem set Befehl einen Text auf meinen MDT Displays. Was machen ich hier falsch? KNX_0104010:WERT enhält ja den gewüschten Wert 16.3 ohne Einheit.


--- Code: --- set KNX_0005035 Aussen [KNX_0104010:WERT]°C
--- Ende Code ---

und hier das List des  KNX_0104010:


--- Code: ---Internals:
   DEF        1/4/10:dpt9.001
   DEVNAME    KNX_0104010
   FIRSTGADNAME g1
   FUUID      5dd44886-f33f-e2c0-6fae-144a1f8fd6c7663e
   FVERSION   10_KNX.pm:0.248910/2021-08-29
   FVERSIONE  04.67 18-08-2021
   GETSTRING 
   IODev      KNX
   KNX_MSGCNT 2924
   KNX_RAWMSG C01164w0140a065e
   KNX_TIME   2021-09-11 22:05:23
   LASTInputDev KNX
   MSGCNT     2924
   NAME       KNX_0104010
   NOTIFYDEV  global,KNX_0104010
   NR         602
   NTFY_ORDER 50-KNX_0104010
   SETSTRING 
   STATE      16.30 &deg;C
   TYPE       KNX
   GADDETAILS:
     g1:
       CODE       0140a
       GROUP      1/4/10
       MODEL      dpt9.001
       NO         1
       OPTION     listenonly
       RDNAMEGET  getG1
       RDNAMEPUT  putG1
       RDNAMESET  setG1
       SETLIST    :slider,-274,6710,670760
   GADTABLE:
     0140a      g1
   READINGS:
     2021-09-11 21:51:39   IODev           KNX
     2021-09-11 22:05:23   WERT            16.3
     2021-09-11 22:05:23   getG1           16.30 &deg;C
     2021-09-11 22:05:23   last-sender     1.1.100
     2021-09-11 22:05:23   state           16.30 &deg;C
Attributes:
   IODev      KNX
   alias      Aussentemperatur
   event-on-change-reading .*
   group      Heizung
   icon       temp_temperature
   room       Favoriten,KNX,WPM
   userReadings WERT {sprintf("%.1f",ReadingsNum($name,"state",0))}
--- Ende Code ---

lg,
Matthias

erwin:
Ich kann das nicht reproduzieren,
ich gehe aber nicht davon aus, das es mit dem KNX-display zu tun hat.
ich nehme an, dieses ist mit dpt16 definert. (das KNX_0005035).
1)mach mal folgenden cmd auf der cmd-line:

--- Code: ---set KNX_0005035 Aussen 123,45°C
--- Ende Code ---
und check das Log auf die Meldung... evtl. auch ein list von diesem device
2)kommt bei der Log Meldung wirklich:
..value= Aussen 16.3°C 16.3°C was...

Alternativ kannst du auf die Einheit in den readings verzichten wenn du 1/4/10:dpt9 definierst, und damit auch kein Userreading mehr brauchst...
l.g. erwin

baerm:
Hi Erwin,
ja KNX_0005035 ist mit dpt16 definiert.

--- Code: ---Internals:
   DEF        0/5/35:dpt16
   DEVNAME    KNX_0005035
   FIRSTGADNAME g1
   FUUID      5db0acca-f33f-e2c0-ce26-675643cedb4bc3f0
   FVERSION   10_KNX.pm:0.248910/2021-08-29
   FVERSIONE  04.67 18-08-2021
   GETSTRING  g1:noArg
   IODev      KNX
   NAME       KNX_0005035
   NOTIFYDEV  global,KNX_0005035
   NR         548
   NTFY_ORDER 50-KNX_0005035
   SETSTRING  g1:multiple,>CLR<
   STATE      Aussen 123,45�
   TYPE       KNX
   GADDETAILS:
     g1:
       CODE       00523
       GROUP      0/5/35
       MODEL      dpt16
       NO         1
       OPTION     
       RDNAMEGET  getG1
       RDNAMEPUT  putG1
       RDNAMESET  setG1
       SETLIST    :multiple,>CLR<
   GADTABLE:
     00523      g1
   READINGS:
     2021-09-09 11:11:16   IODev           KNX
     2021-09-12 22:12:26   last-sender     fhem
     2021-09-12 22:12:26   setG1           Aussen 123,45�
     2021-09-12 22:12:26   state           Aussen 123,45�
Attributes:
   IODev      KNX
   alias      Statustext 1
   icon       rc_INFO
   room       KG->Maschinenraum,KNX
--- Ende Code ---

bei
--- Code: ---set KNX_0005035 Aussen 123,45°C
--- Ende Code ---
kommt auch

--- Code: ---2021.09.12 22:12:26 3: KNX_checkAndClean: value= Aussen 123,45°C 123,45°C was casted to Aussen 123,45�
--- Ende Code ---

Ich habe jetzt probehalber auf dpt9 umgestellt und dann nicht das Userreading verwendet und es kommt auch wieder die Meldung:

--- Code: ---set KNX_0005035 Aussen [KNX_0104010]°C
--- Ende Code ---

Meldung:

--- Code: ---2021.09.12 22:26:40 3: KNX_checkAndClean: value= Aussen 16.00°C 16.00°C was casted to Aussen 16.00°
--- Ende Code ---
Das Userreading verwende ich übrigens auch um nur eine Kommastelle anzuzeigen.

Vielleicht helfen Dir diese Infos, oder sollte ich den loglevel mal hochsetzen und ein Output schicken?
lg,
Matthias

erwin:
Hi,

Problem gefunden!
mit der "old syntax" tritt das Problem auf:

--- Code: ---set KNX_0005035 Alarm 123.45°C
--- Ende Code ---
mit der "neuen syntax" nicht:

--- Code: ---set KNX_0005035 g1 Alarm 123.45°C
--- Ende Code ---

Wobei: die Log-Meldung an sich bedeutet noch keinen Fehler, kann immer wieder bei allen möglichen dpts auftauchen, wenn z.B. ein Maximum/Minimum einer Zahl überschritten wird... (z.B. set dpt5tst g1 256)
Nochwas: 16,43 ist in Perl nicht numerisch, 16.45 schon - nur falls du mit dem Wert noch rechnen willst....
Ich werds in der nächsten version fixen...
l.g. erwin

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln