Autor Thema: Modul 10_KNX.pm - support  (Gelesen 22197 mal)

Offline lichtimc

  • Full Member
  • ***
  • Beiträge: 115
    • davitech.casa
Antw:10_KNX.pm Neue Version - support
« Antwort #45 am: 18 November 2021, 18:03:08 »
Danke dir!  :)
lg

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 2959
  • Anti-Statement befreite Zone ;)
Antw:10_KNX.pm Neue Version - support
« Antwort #46 am: 17 Dezember 2021, 20:03:12 »
Ich hätte noch eine Idee eines Features, was sicher keine Eile hat aber mir heute in den Sinn kam. Es wäre cool, wenn man bei jedem Device angeben könnte, dass manche Werte des Device nach einem Neustart + eine Zeit X (selbst wählbar) abgerufen werden bzw. auf den Bus gesendet werden. Ich hatte heute länger FHEM auf Grund von Update und Backup ausgeschaltet und einige Zustände haben natürlich nicht gepasst und dabei kam mir die Idee.

Edit:
Und natürlich könnte man das mit Notify / Doif auch selbst umsetzen aber nativ wäre schöner :)
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Offline erwin

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 805
Antw:10_KNX.pm Neue Version - support
« Antwort #47 am: 18 Dezember 2021, 20:40:31 »
Die Idee find ich gut, ein Status vom KNX-Bus holen...
Ich habe noch keine Idee, wie realisieren, ich werde mal versuchen, eine Liste zu erstellen, mit allen GAD'S die das (theoretisch) unterstützen.
Das sind mal alle, die "get" in der def haben (sicher),... und auch alle, die kein "set" oder "listenonly" (nicht so sicher) haben...
Auf dieser Basis könnte man so was ähnliches wie ein notify machen, die mittels regex oder Attribut vom User die gewünschten devices weiter selektiert und das get ausführt....
Auslösen das Ganze dann - entweder ein paar Sekunden nach FHEM-start, oder per User command...

Ist das in etwa die Richtung, in die du gedacht hast ?
l.g. erwin

 
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzirl IP731, 1-Wire GW,...

Offline Amenophis86

  • Hero Member
  • *****
  • Beiträge: 2959
  • Anti-Statement befreite Zone ;)
Antw:10_KNX.pm Neue Version - support
« Antwort #48 am: 19 Dezember 2021, 00:06:32 »
Richtig, get und listenonly wären auch meine Favoriten.

Allerdings würde ich nicht alles auf einmal abfragen. Ich hatte zum Beispiel dran gedacht zwei Attribute pro Device. Attr1 = Die Zeit in Sekunden nach dem Start, wann der Status abgefragt werden soll
Attr2 = für welche GA es gilt, wenn zB mehr als eine GA pro Device definiert sind.

Man könnte die beiden auch zusammen fassen in einem und logisch in der Definition des Attr trennen.

Vorteil wäre, dass ich nicht direkt alles Abfrage und vielleicht den Bus überlaste. Es würde quasi pro Device ein internerTimer gestartet, der nach Ablauf die hinterlegte GA abfragt.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Offline GammaTwin

  • Full Member
  • ***
  • Beiträge: 160
Antw:10_KNX.pm Neue Version - support
« Antwort #49 am: 19 Dezember 2021, 11:23:40 »
Grüße,

ich habe mir dazu folgendes DOIF gebaut. Wichtiger Punkt war, dass ich die Telegramme pro Sekunde begrenzt habe. Sonst hat der Bus "busy" gemeldet.
Ein Voraussetzung für dieses DOIF ist, dass meine Devices alle mit nosuffix versehen sind.
Ich frage auch reine set-GAs und listenonly-GAs nicht ab.
Als Ergebnis bekommt man noch die Anzahl aller GAs und set, set/get, get, listenonly und vergessene nosuffix.

defmod di_KNX_Status_Aktualisierung DOIF ([$SELF:KNX_Aktualisierung] eq "on" and [?$SELF:KNX_Aktualisierung_Zustand] ne "WIP") {\
 fhem("set $SELF KNX_Aktualisierung_Zustand WIP");;\
 my @aKNXDevice=devspec2array("TYPE=KNX");;\
 my $iDevGesamt=0;;\
 my $iSleep=0;;\
 my $iAnzGAget=0;;\
 my $iAnzGAset=0;;\
 my $iAnzGAlistenonly=0;;\
 my $iAnzGAsetget=0;;\
 my $iNosuffix=0;;\
 my $TelegrammeProSek=5;;\
 foreach my $KNXDevice (@aKNXDevice) {\
  my $KNXDev=InternalVal($KNXDevice,'DEF','NIX');;\
  my @aKNXAdress=split(/ /,$KNXDev);;\
  my $iDev=0;;\
  foreach my $KNXAdress (@aKNXAdress) {\
   $iDev++;;\
   $iDevGesamt++;;\
   if ($KNXAdress !~ m/(\:set\:nosuffix|\:listenonly\:nosuffix)$/) {\
    fhem("sleep ".int($iSleep / $TelegrammeProSek).";; get $KNXDevice g$iDev",1);;\
$iSleep++;;\
fhem("sleep ".int($iSleep / $TelegrammeProSek).";; set $SELF AnzAbfrageIst $iSleep",1);;\
if ($KNXAdress =~ m/(\:get\:nosuffix)$/) {\
$iAnzGAget++;;\
} elsif ($KNXAdress !~ m/(\:nosuffix)$/) {\
$iNosuffix++;;\
} else { $iAnzGAsetget++;; };;\
   };;\
   if ($KNXAdress =~ m/(\:set\:nosuffix)$/) { $iAnzGAset++;; };;\
   if ($KNXAdress =~ m/(\:listenonly\:nosuffix)$/) { $iAnzGAlistenonly++;; };;\
  };;\
 };;\
 fhem("sleep ".int($iSleep / $TelegrammeProSek).";; set $SELF AnzGAget $iAnzGAget",1);;\
 fhem("sleep ".int($iSleep / $TelegrammeProSek).";; set $SELF AnzGAset $iAnzGAset",1);;\
 fhem("sleep ".int($iSleep / $TelegrammeProSek).";; set $SELF AnzGAlistenonly $iAnzGAlistenonly",1);;\
 fhem("sleep ".int($iSleep / $TelegrammeProSek).";; set $SELF AnzGAsetget $iAnzGAsetget",1);;\
 fhem("sleep ".int($iSleep / $TelegrammeProSek).";; set $SELF AnzNosuffixIst $iNosuffix",1);;\
 fhem("sleep ".int($iSleep / $TelegrammeProSek).";; set $SELF AnzAbfrageMax $iSleep",1);;\
 fhem("sleep ".int($iSleep / $TelegrammeProSek).";; set $SELF AnzAbfrageIst 0",1);;\
 fhem("sleep ".int($iSleep / $TelegrammeProSek).";; set $SELF AnzGA $iDevGesamt",1);;\
 fhem("sleep ".int($iSleep / $TelegrammeProSek).";; set $SELF KNX_Aktualisierung_Zustand bereit",1);;\
 fhem("sleep ".int($iSleep / $TelegrammeProSek).";; set $SELF KNX_Aktualisierung off",1);;\
} DOELSEIF ([$SELF:KNX_Aktualisierung] eq "off" and [?$SELF:KNX_Aktualisierung_Zustand] eq "WIP") (\
 sleep 1;; set $SELF KNX_Aktualisierung on\
) DOELSEIF ([$SELF:KNX_Aktualisierung] eq "on" and [?$SELF:KNX_Aktualisierung_Zustand:sec] > 1200) (\
 set $SELF KNX_Aktualisierung_Zustand bereit;; set $SELF KNX_Aktualisierung on\
)
attr di_KNX_Status_Aktualisierung do always
attr di_KNX_Status_Aktualisierung readingList KNX_Aktualisierung KNX_Aktualisierung_Zustand AnzAbfrageIst AnzAbfrageMax AnzGA AnzGAget AnzGAlistenonly AnzGAset AnzGAsetget AnzNosuffixIst
attr di_KNX_Status_Aktualisierung setList KNX_Aktualisierung:on,off KNX_Aktualisierung_Zustand:bereit,WIP
attr di_KNX_Status_Aktualisierung stateFormat state <br/> KNX_Aktualisierung_Zustand
attr di_KNX_Status_Aktualisierung userReadings ProzentAbfrage { if (ReadingsNum($NAME, 'AnzAbfrageMax', '') > 0) {int(100 * ReadingsNum($NAME, 'AnzAbfrageIst', '') / ReadingsNum($NAME, 'AnzAbfrageMax', ''))} else {0}}
attr di_KNX_Status_Aktualisierung webCmd KNX_Aktualisierung:ProzentAbfrage
attr di_KNX_Status_Aktualisierung widgetOverride ProzentAbfrage:slider,0,1,100

Offline erwin

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 805
Antw:10_KNX.pm Neue Version - support
« Antwort #50 am: 19 Dezember 2021, 18:16:46 »
Hi,
eine erste Version, zum Testen.

Realisiert als 99_..Utils.pm, falls ok würde ich das als subroutine in KNX.pm einbauen.
Funktion:
-- scannt die definitionen, sucht nach dem Internal "GETSTRING" - das sind alle die kein set oder listenonly haben!
-- jedes get (auch mehrfache vom selben device) wird mit 100 ms verzögerung gestartet.
-- returncode: ANzahl gesendeter "get's"

Aufruf:scanKNX() # All devices
scanKNX('device-A') # nur device-A
scanKNX('dev-A, dev-B,dev-X') # devices A,B,X
## es geht aber auch alles was mit devspec funktioniert, z.b:
scanKNX('room=Kueche')

Aus der FHEM-CMD line mit {scanKNX('dev')} aufrufen...
l.g.erwin
PS: verbesserte Version....
« Letzte Änderung: 20 Dezember 2021, 21:59:39 von erwin »
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzirl IP731, 1-Wire GW,...

Offline erwin

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 805
Antw:10_KNX.pm Neue Version - support
« Antwort #51 am: 07 Januar 2022, 15:37:04 »
Hi,
neue Version am SVN:

KNX_scan Utility - get devcie status from KNX-bus - detailed descripition -> cmdref
use a FHEM2FHEM device as IO-Device for KNX - description in wiki
minor corrections to cmd-ref
regards erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzirl IP731, 1-Wire GW,...

Offline GammaTwin

  • Full Member
  • ***
  • Beiträge: 160
Antw:10_KNX.pm Neue Version - support
« Antwort #52 am: 08 Januar 2022, 11:00:33 »
Grüße,

ich habe bestimmt einen Denkfehler.

Wenn ich folgendes in die FHEM-CMD line eingebe:
{KNX_scan()}
erhalte ich folgende Fehlermeldung:
Undefined subroutine &main::KNX_scan called at (eval 2110) line 1.

Offline erwin

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 805
Antw:10_KNX.pm Neue Version - support
« Antwort #53 am: 08 Januar 2022, 11:32:08 »
MMHHH,
sehr komisch, gestern hat's bei mir noch funktioniert, heute hab ich dasselbe Problem,
scheint als ob er die sub nicht findet...
Probiere bitte mal mit "vollständiger addressierung":
{FHEM::KNX::KNX_scan()}sorry erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzirl IP731, 1-Wire GW,...
Hilfreich Hilfreich x 1 Liste anzeigen

Offline GammaTwin

  • Full Member
  • ***
  • Beiträge: 160
Antw:10_KNX.pm Neue Version - support
« Antwort #54 am: 08 Januar 2022, 12:09:08 »
Probiere bitte mal mit "vollständiger addressierung":
{FHEM::KNX::KNX_scan()}

Funktioniert

Offline erwin

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 805
Antw:10_KNX.pm Neue Version - support
« Antwort #55 am: 08 Januar 2022, 14:04:23 »
Ok, passt! Danke!
Ich werde heute abend eine neue Version einchecken- morgen früh im update...
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzirl IP731, 1-Wire GW,...

Offline baerm

  • Full Member
  • ***
  • Beiträge: 120
Antw:10_KNX.pm Neue Version - support
« Antwort #56 am: 12 Januar 2022, 14:29:09 »
Hallo Erwin,
stehe auf der Leitung warum dies bei mir nicht geht. Was mache ich falsch?

ERROR evaluating {FHEM::KNX::KNX_scan('room=AUSSEN')}: Undefined subroutine &FHEM::KNX::KNX_scan called at (eval 3940) line 1.
lg,
Matthias

Offline erwin

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 805
Antw:10_KNX.pm Neue Version - support
« Antwort #57 am: 12 Januar 2022, 14:38:35 »
Hi Matthias,

geht auch nicht (mehr), mit der aktuellen version....
Jetzt ist es so wie ursprünglich gewollt  ;D .. und wie in der cmd-ref beschrieben...
{KNX_scan('room=AUSSEN')}l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzirl IP731, 1-Wire GW,...

Offline baerm

  • Full Member
  • ***
  • Beiträge: 120
Antw:10_KNX.pm Neue Version - support
« Antwort #58 am: 12 Januar 2022, 14:40:35 »
Hi Erwin,
hmm. Update und restart hatte ich gemacht..

2022.01.12 14:39:20 1:  ERROR evaluating {KNX_scan('room=AUSSEN')}: Undefined subroutine &main::KNX_scan called at (eval 378552) line 1.
lg,
Matthias

Offline erwin

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 805
Antw:10_KNX.pm Neue Version - support
« Antwort #59 am: 12 Januar 2022, 15:49:21 »
Was ergibt ein: version 10_KNX ?
Wenn nicht so wie hier, dann war was mit dem update faul...
10_KNX.pm 25438 2022-01-08 18:16:22Z erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzirl IP731, 1-Wire GW,...