dpt16 verdoppelt

Begonnen von MikeR, 16 Dezember 2018, 12:57:20

Vorheriges Thema - Nächstes Thema

MikeR

Hallo,

ich habe ein Problem mit dem KNX Datentyp dpt16...
Hintergrund: Ich benutze verschiedene Raspis mitz FHEM als "Datenzulieferer" und Bridges. Meine Hauptkomponente für die Homeautomation ist jedoch der KNX mit einem zentralen Element, nämlich dem GIRA Homeserver.

Nun das Problem: Ich nutze das Modul "PROPLANTA" für die Ermittlung der aktuellen Wettervorhersage. Wenn sich dort was ändert wird es auf den KNX-Bus gelegt.

Im Proplanta-Reading sieht alles gut aus:


weatherSchneefall2018-12-16 12:00:22

Das ist die Definition des KNX-Objektes:
defmod Aktuell_weather KNX 13/0/11:dpt16
attr Aktuell_weather IODev tul
attr Aktuell_weather answerReading 1


So schicke ich es auf den Bus:

WetterWiesbaden:weather:.* {

    my $WeatherText = ReadingsVal( 'WetterWiesbaden', 'weather', '');   
    fhem( "set Aktuell_weather string $WeatherText" );
}


Und das ist das Ergebnis:




DEF13/0/11:dpt16:001
...
STATESchneefall Sc

Im STATE wird der String dupliziert. Das man hinten nur noch Sc vom Duplikat sieht, liegt an der Längenbeschränkung von Textobjekten auf 16 Byte auf dem KNX.

Hat jemand eine Idee? Is bestimmt was ganz blödes was ich da mache?

LG
Mike

JoeALLb

#1
Wechsle auf die neue KNX-Config!
Answerreading ist alt!

nimm putCmd.

Leider fehlt auch die komplette Konfiguration des Devices. Du nutzt userReadings, aber was steht im stateFormat pder stateCmd?
Diese aktualisieren ja den "state" (somit ist hier eine Dopplung gut möglich!).
Wenn du dort nichts eingegeben hast, ist es logisch, dass state mehrfach "wechselt"! nämlich für jedes geänderte Reading!

Meine Tips also:
1) Nimm putCmd
2) definiere stateCmd.
3) lass das userReading weg... putCmd erledigt alles für dich.

sG Joe
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

MikeR

Komplette Device-Config:
define Aktuell_weather KNX 13/0/11:dpt16:001
attr Aktuell_weather IODev tul
attr Aktuell_weather answerReading 1
attr Aktuell_weather icon knxaddress
attr Aktuell_weather room _EIB/KNX,Wetter


Das ist eigentlich alles, und ich weiss das das vor ein paar Monaten noch ohne die Verdopplung geklappt hat.
Klar, wenn sich ein Objekt ändert, muss ich auf eine geänderte Schnittstelle eingehen, da bleibt mir nix anderes übrig.
Ansonsten versuche ich die FHEM-Seite minimalistisch zu halten, sprich nur Werte bei Änderung auf den Bus zu legen oder vom Bus abfragen zu lassen (z.B. wenn der Homeserver mal neu startet und ich ein komplettes WorkingSet lesen will), und alles andere an Processing mache ich auf der Homeserver-Seite. sonst wird es auch unübersichtlich.

Habe jetzt aber irgendwie noch nicht verstanden, wieso der Code
my $WeatherText = ReadingsVal( 'WetterWiesbaden', 'weather', '');   
fhem( "set Aktuell_weather string $WeatherText" );


dazu führt das im State des KNX-Objektes "Aktuell_weather" plötzlich sowas wie "Nebel Nebel" steht, wenn in dem Proplanta.Reading nur Nebel steht. Also speziell wenn gar kein State-Format gesetzt ist?

MIke

JoeALLb

Mit der alten Schreibweise

set Aktuell_weather string   und
attr Aktuell_weather answerReading 1

kenne ich mich nicht mehr aus. Daher kann ich dir so leider nicht weiterhelfen.

sG Joe.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270