[gelöst] Datentypen in 10_EIB-pm ergänzt

Begonnen von Andi291, 02 März 2015, 20:37:09

Vorheriges Thema - Nächstes Thema

Andi291

@Aliate:

Hallo Aliate,

also in DEM log landen die Meldungen definitiv nur, wenn das globale verbose >= 5 ist. Eine gerätesensitive Auswertung passiert meiner Meinung nach nicht. Eine Idee hab ich allerdings.
Bei den Geräten, welche Dich interessieren, konfigurierst Du ein zusätzliches FileLog. Dort lässt Du alle relevanten Devices reinschreiben - damit erhälst Du ein zeitsynchrones Log über alle genannten Devices. Was halt fehlt, sind Ausgaben vom FHEM selbst. Diese müsstet Du manuell mit dem FHEMLog mergen, wenn erforderlich...

define rtr_ankleide_heizen EIB 8/2/40
attr rtr_ankleide_heizen IODev tul
#...
#logfile 1
define FileLog_rtr_ankleide_solltemp FileLog ./trace/rtr/rtr_schlafzimmer_%Y-%m.log rtr_ankleide_solltemp
#logfile 2
define FileLog_mein_zweites_log ./trace/rtr/biglog.log rtr_ankleide_solltemp


Hab ich Dich richtig verstanden? Wenn nein, was wäre Dein genauer Usecase?




@Anton:

Hallo Anton,

ah - jetzt weiß ich, was Du meinst :-) Mea culpa - natürlich verbose und nicht loglevel. Das Attribut LogLevel habe ich nie benutzt, immer nur verbose.

Die Änderungen aus dem von Dir genannten Thread (Event on Change reading) sind bereits enthalten!

Das mit dem Prozent...würde ich eher ungern umsetzen wollen. Damit müsste man ja noch einen Wert cachen, bewerten und dann ggf. erst ausgeben. Kannst Du in den von Dir betroffenen Telegrammen nicht "Sender"-seitig was machen?
Also ich kann bei allen meinen KNX-Devices, welche Analogwerte senden, eine Schwelle zum Senden einstellen...



Frohe Ostergrüße - Andreas

MiWe58

Hallo,

darf ich euch nochmals auf meinen Beitrag vom 22.3. aufmerksam machen?

Hat der beschriebene Effekt auch etwas mit Datentypen zu tun?
Sind die beim Lesen zu erwarteten Datentypen irgendwo einzustellen?

Meine bisherigen Recherchen haben mich leider noch nicht ans Ziel gebracht.

Für Tipps oder Unterstützung bis ich sehr dankbar.

Gruß

Michael
Devices: RasPi V, HomeMatic, PICCU, Modbus, Heliotherm-Wärmepumpe, SMA PV-Anlage, Easee Laderoboter
Steuerung: Rollos, Beleuchtung, Heizung-Heliotherm, Heizung-Heizkreise, PV-Anlage-Eigenverbrauch, Alarm, Zugang, Wasser

Andi291

Hallo Michael,

aber sicher darfst Du :-) Gut so, denn das hatte ich verdrängt.

Hast Du das Verhalten nur mit "meiner" Version der 10_EIB oder auch mit einer anderen?

Kannst Du vielleicht einen Trace mit der ETS ziehen? Alternativ: Kannst Du bitte global verbose auf 5 setzen, und einen Auszug Deiner Logdatei posten? Dann fräs ich mal durch...

MiWe58

Hallo Andi,

vielen Dank für Deine schnelle Reaktion. Anbei das Logfile

Gruß
Michael
Devices: RasPi V, HomeMatic, PICCU, Modbus, Heliotherm-Wärmepumpe, SMA PV-Anlage, Easee Laderoboter
Steuerung: Rollos, Beleuchtung, Heizung-Heliotherm, Heizung-Heizkreise, PV-Anlage-Eigenverbrauch, Alarm, Zugang, Wasser

Andi291

Hallo Michael,

sicher, dass der Datentyp ein DPT9 ist? Hier Dein Logauszug:

2015.04.03 16:24:22.816 4: EIB parse 42120000 for WP_TempVorlauf model: tempsensor dpt: HASH(0x2849320)
2015.04.03 16:24:22.817 4: EIB parse 42120000 for WP_TempVorlauf model: tempsensor dpt: dpt9 unit: °C
2015.04.03 16:24:22.817 5: EIB dpt9 parse 42120000 = 1108475904 sign: 1 mant: 0 exp: 0 translated: 0

Rechenvorschrift:

      my $fullval = hex($value);
      my $sign = 1;
      $sign = -1 if(($fullval & 0x8000)>0);
      my $exp = ($fullval & 0x7800)>>11;
      my $mant = ($fullval & 0x07FF);
      $mant = -(~($mant-1)&0x07FF) if($sign==-1);
      
      $transval = (1<<$exp)*0.01*$mant;


Bei Deinem Input spielt sich alles in den Bytes 3 und 4 ab. DPT9/Tempsensor arbeiten mit Byte 0 und 1.
-> Gemäß den Rechenvorschriften passt der Inhalt nicht zu einer DPT9!

Hast Du evtl. die Möglichkeit, Dir das mit dem Busmonitor von der ETS mal anzusehen?

Ganz auf Doof: versuch mal statt tempsensor den dpt14...könnte ein 4-Byte-Float sein...

MiWe58

Hallo Andi,

BINGO! das war es ganz offensichtlich. dpt14 funktioniert

Damit kann ich nun offenbar 5 Werte aus meiner Wärmepumpe auslesen. Alle werden richtig angezeigt. Das habe ich mit dem online Monitoring direkt auf dem KNX-Gateway überprüft.

Habe ich die bisherigen Meldungen richtig verstanden, dass es noch nicht möglich ist über das EIB-Modul auch Werte zu schreiben?
Ich möchte nach bestimmten Regeln Soll-Werte in der Heizung dynamisch anpassen.

Gruß und herzlichen Dank schon einmal

Michael
Devices: RasPi V, HomeMatic, PICCU, Modbus, Heliotherm-Wärmepumpe, SMA PV-Anlage, Easee Laderoboter
Steuerung: Rollos, Beleuchtung, Heizung-Heliotherm, Heizung-Heizkreise, PV-Anlage-Eigenverbrauch, Alarm, Zugang, Wasser

Andi291

Hallo Michael,

das ist korrekt.

Die Codierung für dpt9 geht wie folgt:

# 2byte signed float
sub encode_dpt9 {
    my $state = shift;
    my $data;

    my $sign = ($state <0 ? 0x8000 : 0);
    my $exp  = 0;
    my $mant = 0;

    $mant = int($state * 100.0);
    while (abs($mant) > 2047) {
        $mant /= 2;
        $exp++;
    }
    $data = $sign | ($exp << 11) | ($mant & 0x07ff);
    return $data
}


Für DPT14-Implenentierung, bzw. Testen fehlt mir gerade die Zeit. Wenn Du das als Denkanstoß nimmst, müsste es klappen :-)

MiWe58

Noch einmal eine Frage zu den Formaten:

in meinem Gateway kann ich zu den einzelnen Werten die folgenden Formate einstellen:

Boolean
float
signed
unsigned

Nicht alle Formate für alle Werte (ist ja auch klar)

float scheint dpt14 zu sein
kannst Du noch ein Tipp für die anderen Formate geben?

Gruß
Michael
Devices: RasPi V, HomeMatic, PICCU, Modbus, Heliotherm-Wärmepumpe, SMA PV-Anlage, Easee Laderoboter
Steuerung: Rollos, Beleuchtung, Heizung-Heliotherm, Heizung-Heizkreise, PV-Anlage-Eigenverbrauch, Alarm, Zugang, Wasser

aliate

Zitat von: Andi291 am 03 April 2015, 16:06:24
@Aliate:

Hallo Aliate,

also in DEM log landen die Meldungen definitiv nur, wenn das globale verbose >= 5 ist. Eine gerätesensitive Auswertung passiert meiner Meinung nach nicht. Eine Idee hab ich allerdings.
Bei den Geräten, welche Dich interessieren, konfigurierst Du ein zusätzliches FileLog. Dort lässt Du alle relevanten Devices reinschreiben - damit erhälst Du ein zeitsynchrones Log über alle genannten Devices. Was halt fehlt, sind Ausgaben vom FHEM selbst. Diese müsstet Du manuell mit dem FHEMLog mergen, wenn erforderlich...

define rtr_ankleide_heizen EIB 8/2/40
attr rtr_ankleide_heizen IODev tul
#...
#logfile 1
define FileLog_rtr_ankleide_solltemp FileLog ./trace/rtr/rtr_schlafzimmer_%Y-%m.log rtr_ankleide_solltemp
#logfile 2
define FileLog_mein_zweites_log ./trace/rtr/biglog.log rtr_ankleide_solltemp


Hab ich Dich richtig verstanden? Wenn nein, was wäre Dein genauer Usecase?



Top Andi, das ist für mich eine gute Lösung :)

Vielen Dank für Deine Hilfe, schön dass hier im KNX-Bereich wieder etwas los ist ;)

Allen zusammen schöne Osterfeiertage

Gruß Hermann

antonwinden

Zitat von: Andi291 am 03 April 2015, 16:06:24
@Anton:

Hallo Anton,

ah - jetzt weiß ich, was Du meinst :-) Mea culpa - natürlich verbose und nicht loglevel. Das Attribut LogLevel habe ich nie benutzt, immer nur verbose.

Die Änderungen aus dem von Dir genannten Thread (Event on Change reading) sind bereits enthalten!

Das mit dem Prozent...würde ich eher ungern umsetzen wollen. Damit müsste man ja noch einen Wert cachen, bewerten und dann ggf. erst ausgeben. Kannst Du in den von Dir betroffenen Telegrammen nicht "Sender"-seitig was machen?
Also ich kann bei allen meinen KNX-Devices, welche Analogwerte senden, eine Schwelle zum Senden einstellen...



Frohe Ostergrüße - Andreas
hab ich gar nicht bemerkt das event-on-change schon drinnen ist.
hab leider 2 knx teile wo ich keine schwelle einstellen kann - wobei es eigentlich nur eines betrifft (beim anderen reicht event-on-change-update) und da hat der hersteller gemeint er berücksichtigt das bei der nächsten version des app programms des devices...
also auch kein problem
danke und frohe ostern
anton

p.s. jetzt wäre einchecken angesagt ;-)
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

antonwinden

Hallo Andi,
was überdrüber wäre die implementierung von event-on-change-reading denn damit würden gleichbleibende werte nicht das logfile zumüllen.
frohe ostern
anton
KNX, Raspberry, Denon 3313, Philips TV, Xtrend9X00 und viel Optimismus...

MiWe58

Zitat von: antonwinden am 04 April 2015, 09:01:36
hab ich gar nicht bemerkt das event-on-change schon drinnen ist....

Hallo Anton,
auch ich suche nac der Möglichkeit von "event-on-Change", weil mir das logfile sonst voll geschrieben wird.

Wo hast Du es gefunden bzw. wie implementiert?
Bei mir steht es bei der Auswahl von "attr" nicht zur Verfügung

Gruß
Michael
Devices: RasPi V, HomeMatic, PICCU, Modbus, Heliotherm-Wärmepumpe, SMA PV-Anlage, Easee Laderoboter
Steuerung: Rollos, Beleuchtung, Heizung-Heliotherm, Heizung-Heizkreise, PV-Anlage-Eigenverbrauch, Alarm, Zugang, Wasser

Andi291

Hallo,

geht grundsätzlich ganz leicht - der Code ist in meinem File schon drin, aber nicht aktiv. Hier die Details:
http://forum.fhem.de/index.php/topic,32716.0.html

In der Version am Anfang des Postes einfach die Zeilen 308, 309, 310, 311, 362, 363, 366, 367 auskommentieren, und das Attribut setzen - fertig.

Warum ich das NICHT will / von der Funktion nicht begeistert bin:
Bei mir reagiere ich fast auf jedes Kommando - oft auf den Trigger, und nicht den Inhalt. Ich müsste jetzt also überall readings-Gruppen anlegen, um meine Events haben zu können.
In meiner Anlage habe ich mit dem Datenaufkommen kein Problem - weil ich meine Geräte nur senden lasse, wenn sich der Wert ändert, oder ich den Trigger wirklich haben will.

MiWe58

Hallo Andi,

welchen Editor nutzt Du, damit Dir die Zeilennummern angezeigt werden?

Gruß
Michael
Devices: RasPi V, HomeMatic, PICCU, Modbus, Heliotherm-Wärmepumpe, SMA PV-Anlage, Easee Laderoboter
Steuerung: Rollos, Beleuchtung, Heizung-Heliotherm, Heizung-Heizkreise, PV-Anlage-Eigenverbrauch, Alarm, Zugang, Wasser

MiWe58

Zitat von: Andi291 am 04 April 2015, 11:16:50
Warum ich das NICHT will / von der Funktion nicht begeistert bin:
Bei mir reagiere ich fast auf jedes Kommando - oft auf den Trigger, und nicht den Inhalt. Ich müsste jetzt also überall readings-Gruppen anlegen, um meine Events haben zu können.
In meiner Anlage habe ich mit dem Datenaufkommen kein Problem - weil ich meine Geräte nur senden lasse, wenn sich der Wert ändert, oder ich den Trigger wirklich haben will.

Hallo Andi,

das scheint für DEINE Anlage so OK zu sein. Mein Eindruck ist, dass das leider nicht allgemeingültig ist.
Leider kann ich mein Gerät nicht so konfigurieren, dass es nur Änderungen sendet.
Es sendet ständig.
Ich werde mich auch mit dem Hersteller in Verbindung setzen. Vielleicht kann er dort etwas machen. Ich ja schließlich einer der Pilotanwender.

Gruß
Michael
Devices: RasPi V, HomeMatic, PICCU, Modbus, Heliotherm-Wärmepumpe, SMA PV-Anlage, Easee Laderoboter
Steuerung: Rollos, Beleuchtung, Heizung-Heliotherm, Heizung-Heizkreise, PV-Anlage-Eigenverbrauch, Alarm, Zugang, Wasser