[eingechecked, thread closed] Neues major release zum Test

Begonnen von Andi291, 14 April 2018, 00:23:42

Vorheriges Thema - Nächstes Thema

Andi291

Hallo Gemeinde!

Anbei ein neues Major-Release zum Test.

Es sind einige Bugfixes und die Feature-Requests aus dem Thread "Schnittstellenänderung" eingeflossen. Weiterhin habe ich die internen Datenstrukturen umgebaut, um das Modul übersichtlicher und performanter zu gestalten.
Zu den Kernänderungen gehört auch die Umgebaute Set-Syntax. Hierbei gilt, dass die Gruppenadressen nun grundsätzlich über Namen angesprochen werden. Die Qualifier (Value, ...) entfallen ersatzlos. Keine Sorge, der alte Pfad ist und bleibt noch drin.

Folgende Attribute sind deprecated - bitte dazu die Commandref und die darin enthaltenen Beispiele konsultieren: listenonly, readonly, slider, useSetExtensions.

Bitte testet fleißig und gebt mir Rückmeldung.

@Admins: kann man den Thread bitte oben anpinnen?

Danke!



JoeALLb

Danke!

Die neue Prüfung:
configfile: GAD 3/5/20 may be supplied only once per device.
hat gleich erfolgreich zugeschlagen und mir einen Fehler in meiner Konfiguration aufgedeckt.
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

EIB-Fan

Hallo Andi,

danke an dich für die Weiterentwicklung des Modules!  :)

Ich habe am Wochenende auf die neue KNX-Version umgestellt. Natürlich waren in der Konfiguration einige Änderungen notwendig ... 8)

Mir ist ein Punkt aufgefallen. Das Senden des Datums bricht immer wieder mit Fehler "invalid value: time" ab
set timedev date now

Werde natürlich weiter testen und Feedback geben.

Gruß Jens

JoeALLb

Allgemeiner Hinweis:
Da ich zum Anzeigen immer wieder entscheiden muss, welche Werte (-put -get oder -set) ich nutze,
verzichte ich mittlerweile in meiner ganzen Installation auf die Nutzung von -get,-put,-set.
Dies hat auch den riesen Vorteil, dass bei Set-Befehlen gleich der aktuelle Wert als Vorauswahl angezeigt wird.

Rudi hat mir dankenswerter Weise in fhem.pl eine Erweiterung eingearbeitet, die das Umschreibend avon in userReadings
relativ einfach macht. (Achtung, das geht nur in ganz aktuellen Versionen!)
Statt drei einzelnen Aufrufen ist nun folgendes möglich, um alle drei Arten auf ein Reading "zusammenzukopieren".

measured-temp:measured-temp-.* {   
  $eventValue;
},


Dies kann noch und folgendes ergänzt werden, wenn man zB nur bei Änderungen das Reading aktualisieren möchte und wenn man
zusätzlich noch nur den nummerischen Wert ohne "Unit" übernehmen möchte:

measured-temp:measured-temp-.* {   
  return  $eventValue ne ReadingsVal($name,$eventName,-10) ? ($eventValue =~ /(-?\d+(\.\d+)?)/)[0] : undef;
},


Vielleicht mag das einer in dem Zusammenhang mit nutzen...

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

JoeALLb

bei diesem Device bekomme ich
defmod knx.Test1 KNX 0/5/6:dpt9.001:measured-temp
attr knx.Test1 verbose 5
attr knx.Test1 webCmd :


diese Fehlermeldung im Log:
2018.04.16 15:26:26 5: parse: process message, device-name: knx.Test1, rd-name: , gadCode: 0050a, model:
2018.04.16 15:26:26 5: decode value: 00, gadName:
2018.04.16 15:26:26 5: decode model: , code: , value: 00
2018.04.16 15:26:26 2: decode model: , no valid model defined
2018.04.16 15:26:26 1: readingsUpdate(knx.Test1,last-sender,1/1/10) missed to call readingsBeginUpdate first.
2018.04.16 15:26:26 1: stacktrace:
2018.04.16 15:26:26 1:     main::readingsBulkUpdate            called by ./FHEM/10_KNX.pm (1128)
2018.04.16 15:26:26 1:     main::KNX_Parse                     called by fhem.pl (3746)
2018.04.16 15:26:26 1:     main::Dispatch                      called by ./FHEM/00_TUL.pm (289)
2018.04.16 15:26:26 1:     main::TUL_Parse                     called by ./FHEM/00_TUL.pm (270)
2018.04.16 15:26:26 1:     main::TUL_Read                      called by fhem.pl (3550)
2018.04.16 15:26:26 1:     main::CallFn                        called by fhem.pl (708)
2018.04.16 15:26:26 2: parse device hash (wpi): HASH(0x562abf1cb260) name: knx.Test1, message could not be decoded - see log for details


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

Andi291

#5
Moin!

@Jens: In der Doku korrigiert.
@Joe: Kann ich nicht nachvollziehen. Die Definition läuft 1a durch. Wann wird die Fehlermeldung ausgegeben?

Ich pinne die Version am ersten Post an...

Grüße, Andi

EDIT:
Kann es sein, dass bei Dir noch ein Autocreate-Device mit der Adresse 0/5/10 rumliegt? Das ist nämlich die Adresse der geparsten Nachricht.

JoeALLb

Zitat von: Andi291 am 16 April 2018, 21:12:42
@Joe: Kann ich nicht nachvollziehen. Die Definition läuft 1a durch. Wann wird die Fehlermeldung ausgegeben?

hm, wenn ich ein get measured-temp absetze,

Zitat von: Andi291 am 16 April 2018, 21:12:42
Kann es sein, dass bei Dir noch ein Autocreate-Device mit der Adresse 0/5/10 rumliegt? Das ist nämlich die Adresse der geparsten Nachricht.
Nein, nicht per autocreate. das ist ein normale Windarlarm, definiert über 0/5/10:dpt1.


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

Andi291

Abend Joe!

Sorry, ich kann es nicht nachvollziehen:


2018.04.17 19:31:20 5: parse: process message, device-name: knx.Test1, rd-name: measured-temp, gadCode: 00506, model: dpt9.001
2018.04.17 19:31:20 5: received hash (r): HASH(0x3a2ee88) name: knx.Test1, GET
2018.04.17 19:33:24 5: enter get knx.Test1: hash: HASH(0x3a2ee88), attributes: knx.Test1, measured-temp
2018.04.17 19:33:24 5: get knx.Test1: request value for GAD: 0/5/6, GAD-NAME: measured-temp
2018.04.17 19:33:24 5: exit get
2018.04.17 19:33:25 5: parse: process message, device-name: knx.Test1, rd-name: measured-temp, gadCode: 00506, model: dpt9.001


Kann es sein, dass Du noch irgendein put-Cmd Fragment rumliegen hast, welches den value nullt?

JoeALLb

Hallo Andi, meine Wetterstation antwortet auf die eine Anfrage mit mehreren verschiedenen antworten... Ich schau mir das gerade genauer an....
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

JoeALLb

#9
Hallo Andi, wie ist es gedacht, einer "funktion" mehrere GADs zuzuweisen?
Ich denke da im Moment an ein Sperrobjekt für Heizungsventile.

Jedes Ventil hat eine eigene SperrGAD, dann gibt es noch eine zentrale SperrGAD fürs ganze Haus.

Wie würdest Du das im Modul abbilden? 2 Unterschiedliche GADs und die Stati per funktion oder userreading "zusammenkopieren", oder
kann ich (vielleicht sogar jetzt schon?) 2 unterschiedliche GADs gleich benennen?

Edit:
Bin gerade über das Log aus zeile 647 gestossen, das bei jeder Ansicht des Devices angezeigt wird.
Da es "Unknown argument ..." heißt, bin ich von einem Fehler ausgegangen, wenn ich mir die Codekommentare ansehe, scheint es aber kein Fehler zu sein.
Kann/Sollte man hie rnicht den text ändern?
Zusätzlich musste ich mir den Devicenamen über folgendes mit anzeigen, um überhaupt zu sehen, welches Device denn diese Fehlermeldung überhaupt produziert.
"Unknown argument '$name : $arg1' [...]

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

Andi291

#10
Servus Joe!

Hab ich bei mir sinngemäß so gelöst (alte Syntax):

Im state steht immer nur der eigentliche Aktorstatus - meist zu bekommen per stateCmd und Einlesen von Status-get:

define licht_terasse KNX 5/4/18:dpt1.001:status 5/4/16:dpt1.001:auto 5/4/17:dpt1.001:manuell
attr licht_terasse IODev knxd
attr licht_terasse alias Licht Terasse
attr licht_terasse devStateIcon (on)|([Ee]in):general_an:Aus (off)|([Aa]us):general_aus:Ein
attr licht_terasse eventMap /on g3:Ein/off g3:Aus/
attr licht_terasse group Beleuchtung
attr licht_terasse icon light_outdoor
attr licht_terasse room Au&szligen
attr licht_terasse stateCmd {sprintf("%s", ReadingsVal($name,"status-get",""))}
attr licht_terasse webCmd Ein:Aus


Wenn mich der Übergangszustand interessiert - z.B. wg. Icon - nutze ich folgenden Weg:

define nas KNX 11/0/1:dpt1.001:status 11/0/0:dpt1.001:steuern 11/0/2:dpt1.001:reboot
attr nas IODev knxd

Und ja: Zeile 647 is blöd - bitte auskommentieren.

Was ist aus Deiner Wetterstation geworden?
attr nas alias NAS
attr nas devStateIcon status-on:general_an:Reboot status-off:general_aus:Ein steuern-.*:hourglass reboot-.*:hourglass
attr nas eventMap /on g2:Ein/off g2:Aus/on g3:Reboot/
attr nas group IT
attr nas icon it_nas
attr nas room System,Startseite
attr nas stateRegex /steuern-[sg]et:/steuern-/ /status-[sg]et:/status-/ /reboot-[sg]et:/reboot-/
attr nas webCmd Ein:Aus:Reboot


EDIT: Probier die neue Version - damit müsste last-Sender nun auch in den autocreate-devices ohne DPT eingetragen werden.

JoeALLb

Zitat von: Andi291 am 18 April 2018, 19:44:48
  Was ist aus Deiner Wetterstation geworden?
Beim Suchen danach bin ich eben über Zeile 647 gestolpert und hab mich nach der vermeindlichen Fehlersuche "verrannt".

Aber aktuell sieht es gut aus, obwohl ich noch seltsamkeiten bei DPT1 untersuchen möchte. DPT1.001 scheint dagegen zu funktionieren!
Aber ich bin noch nicht weiter, muss es nochmal prüfen.

Generell finde ich die Version toll, und einen Mega-Schritt gegenüber der bisherigen Version!
Besonders auch das angenäherte look and feel zu anderen typischen fhem-Modulen, besonders die Auflösung des eigenen Slider-Konzepts und das wegfallen des "value".
Schade finde ich leider wirklich, das Thema "-put,-get, -set",
denn dadurch lassen sich die neuen Gruppennamen nur "halbherzig" verwenden, Slider haben falsche Defaults beim Öffnen eines Devices, ...
Hier würde ich mir ein Attribut wünschen, um das zu deaktivieren.

Über folgenden simplen Patch habe ich das im Moment für mich gelöst, da ich die saubere Variante mit Attribut (und default bei nicht gesetztem Attribut auf (-put, -...) leider mit meinen Programmierkenntnissen nicht hinbekomme.

--- 10_KNX.org.pm Thu Apr 19 09:17:50 2018
+++ 10_KNX.pm Thu Apr 19 09:16:33 2018
@@ -71,7 +71,7 @@
#pattern for group-no
my $PAT_GNO = '[gG][1-9][0-9]?';
#pattern for GAD-Options
-my $PAT_GAD_OPTIONS = '(get)|(set)|(listenonly)';
+my $PAT_GAD_OPTIONS = '(get)|(set)|(listenonly)|(suffix)';
#pattern for forbidden GAD-Names
#my $PAT_GAD_NONAME = '((on)|(off)|(value)|(raw)|' . $PAT_GAD_OPTIONS . ')$';
#pattern for DPT
@@ -384,6 +384,12 @@
$rdNameSet = $gadName . "-set";
$rdNamePut = "";
}
+ elsif ($gadOption =~ m/(suffix)/i)
+ {
+ $rdNameGet = $gadName . "";
+ $rdNameSet = $gadName . "";
+ $rdNamePut = $gadName . "";
+ }
}
else
{


Übrigens: Der Klick in der englischen Commandref auf KNX funktioniert nicht. Ich muss immer auf das Modul darüber (KM273) klicken und dann runterscrollen.
Das entsteht wohl durch diesen Fehler:
/usr/bin/perl ./contrib/commandref_join.pl -noWarnings
*** EN KNX: nonempty line after =begin html ignored

und sorgt dafür,
dass diese Zeile
<p><a name="KNX"></a></p>
nicht mit aufgenommen wird. Somit fehlt das Sprungziel.

Was ich mir noch wünschen würde wäre ein DPT1 der nur 0 und 1 kennt.

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

Andi291

Abend!

Nervensäge :-)

Doku geht. Dein Flag heißt "nosuffix". Ich konnte mich durchringen, einen DPT außerhalb des KNX-Standard anzulegen. Er heißt 1.000 (für was auch immer Du den brauchst....).

Grüße, Andi

JoeALLb

#13
 :D
Ich nehme das jetzt mal für diesen Fall als Kompliment...
Bin am testen!
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

JoeALLb

Hallo Andi.
Das ist eine sehr gelungene Version! Das neue Feature ist genial, und ich wette fast dass das zu einem der beliebtesten Features werden wird ;-)

Ich bin noch intensiv am konfigurieren, da es sich um einen Neubau handelt, aber bisher bin ich sehr zufrieden!

Eine Ergänzung zu einem bisherigen Wunsch fällt mir auf:
Ich hatte mir die Funktion bzw. das Attribut "setList" aus dummi oder DOIF gewünscht, um leichter per widgetoverride Eintellungen konfigurieren zu können...

Vermutlich einfacher könnte man es gestalten, indem man in der Definition statt einer GAD einfach ein DUMMY erlaubt, um so dummy setter und getter zu ermöglichen.
Diesen kann man dann wunderbar direkt als eventmap oder aber auch über userReadings für verschiedenste Dinge nutzen.
Ich möchte zB 2 GADs gleichzeitig einen Wert schicken und löse das im Moment mit dem Definieren einer GAD in einer Linie, die es bei mir eigentlich nicht gibt.

ABER: Dieser Wunsch ist nicht für das Release relevant, aus meiner Sicht könnte man langsam über einen Checkin nachdenken.
Was ich jedoch NICHT getestet habe ist die Kompatiblität zum bisherigen Modul, da ich alles gleich auf die neuen Features aktualisiert habe unf G1, etc. nicht mehr nutze.
Probleme kann es definitig mit der Großskleinschreibung geben: Da dort Readings, wenn genutzt, plötzlich Großbuchstaben enthalten, werden Werte, stateCMDs, etc. eventuell nicht mehr aktualisiert, aber da kann man ja drauf hinwesien.

Tolle Version, herzlichen DANK!!!!!

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