72_FRITZBOX: Sperren/Entsperren von Netzwerkgeräten / DECT Telefonen u weiteres

Begonnen von JoWiemann, 25 Januar 2021, 10:30:32

Vorheriges Thema - Nächstes Thema

mcp

Hi Jörg,

Zitat von: JoWiemann am 11 Januar 2023, 22:01:01
bitte ruf doch mal set <FritzBox> tr064Command "WANDSLInterfaceConfig:1" "wandslifconfig1" "GetInfo" auf und poste mir die Rückgabe. Dann habe ich eventuell ein Hinweis worauf ich prüfen muss.

von der Box:

Service='WANDSLInterfaceConfig:1'   Control='wandslifconfig1'   Action='GetInfo'
----------------------------------------------------------------------
{
  GetInfoResponse => {
    NewATURCountry => '0400',
    NewATURVendor => '41564d00',
    NewDataPath => 'Fast',
    NewDownstreamAttenuation => '220',
    NewDownstreamCurrRate => '63735',
    NewDownstreamMaxRate => '64471',
    NewDownstreamNoiseMargin => '60',
    NewDownstreamPower => '514',
    NewEnable => '1',
    NewStatus => 'Up',
    NewUpstreamAttenuation => '220',
    NewUpstreamCurrRate => '31996',
    NewUpstreamMaxRate => '32111',
    NewUpstreamNoiseMargin => '90',
    NewUpstreamPower => '510'
  }
}


von einem Repeater:

Service='WANDSLInterfaceConfig:1'   Control='wandslifconfig1'   Action='GetInfo'
----------------------------------------------------------------------
{
  UPnPError => {
    errorCode => '401',
    errorDescription => 'Invalid Action'
  }
}


Zitat
Anbei auch eine neue Beta, bei der ich das unterdrücken der box_ Readings überarbeitet habe. box_fwVersion, box_Model und box_oem lässt sich nicht mehr unterdrücken, da ich diese Infos brauche und im Moment kein Internal aufmachen möchte.
box_ipv6Extern und box_ipv6Prefix sollten bei Dir nicht mehr auftauchen (hoffentlich).
Ach ja, und ein , Readings habe ich gerade auch bekommen, kann es aber nicht mehr reproduzieren  :(

danke dir, teste ich :)

--
ciao, Marc
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

RalfRog

Zitat von: JoWiemann am 11 Januar 2023, 22:01:01
...
Ach ja, und ein , Readings habe ich gerade auch bekommen, kann es aber nicht mehr reproduzieren  :(
...
Ich lass meine 7590 mit 7.29 und VERSION 07.50.0 auf verbose 4 mal bis zum Auftreten unbehelligt laufen.


Der Fehler ([FritzBox6591: TR064_Cmd.5828] - ERROR: TR064 error 401:Invalid Action) bei sTaN liegt vielleicht an der CableBox die hat ja kein DSL.
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

mcp

Zitat von: JoWiemann am 11 Januar 2023, 22:01:01
Anbei auch eine neue Beta...


    push @readoutCmdArray, [ "box_fwVersion", "ctlmgr_ctl r logic status/nspver" ] ...


ist doppelt drin (für Shell), war's vorher aber auch schon :)

Nun am Ende anders, ist aber irrelevant da kommentiert:


+      push @readoutCmdArray, [ "box_fwVersion", "ctlmgr_ctl r logic status/nspver" ];
+      push @readoutCmdArray, [ "box_fwVersion", "ctlmgr_ctl r logic status/nspver" ]; #unless(grep { /^(box_fwVersion)$/ } @reading_list);



anyway, box_fwVersion ist aber immer noch doppelt drin, 1x in FRITZBOX_API_Check_Run() und 1x in FRITZBOX_Readout_Run_Web()

aber vielleicht hat das ja auch irgendeinen tieferen Sinn den ich (noch) nicht sehe :)

--
ciao, Marc
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

mcp

Hi Jörg,

hast Du irgendeinen Tip wie ich via lua/$whatever einen FritzOS Update Check initiieren kann?

bei der Box geht das mit tr064 so:


get FRITZBox tr064Command UserInterface:1 userif X_AVM-DE_CheckUpdate


Hab' mir dafür ein cmdalias gebaut.

bei einem Repeater kommt immer:


{
  UPnPError => {
    errorCode => '402',
    errorDescription => 'Invalid Args'
  }
}


müsste doch bestimmt auch irgendwie mit LUA funktionieren.

Hab' mal mit den Browser DEV Tools geschaut was die GUI selbst macht und das manuell via luaQuery abgesetzt, kommt als Rückmeldung 0, passiert aber weiter nichts.

Was mich aber zu meinem eigentlichen Feature-Wunsch bringt:

- Update verfügbar? manuell abfragbar via neuem set checkUpdate oder so (vielleicht später auch mit einem InternalTimer 1x am Tag oder $Interval_Update_Check oder so)
  - wenn ja: welche Version (z.B. via tr064Command UserInterface:1 userif GetInfo)
    - evtl. dann sogar direkt mit einem Reading als ahref auf die Release Notes

Ausgabe von 'tr064Command UserInterface:1 userif GetInfo' sieht dann so aus:

für eine Box:

        {
          GetInfoResponse => {
            NewPasswordRequired => '0',
            NewPasswordUserSelectable => '1',
            NewUpgradeAvailable => '1',
            NewWarrantyDate => '0001-01-01T00:00:00',
            'NewX_AVM-DE_DownloadURL' => 'http://download.avm.de/fritzbox/fritzbox-7590/deutschland/fritz.os/FRITZ.Box_7590-07.50.image',
            'NewX_AVM-DE_InfoURL' => 'http://download.avm.de/fritzbox/fritzbox-7590/deutschland/fritz.os/info_de.txt',
            'NewX_AVM-DE_LaborVersion' => '',
            'NewX_AVM-DE_UpdateState' => 'UpdateAvailable',
            'NewX_AVM-DE_Version' => '154.07.50'
          }
        }


für einen Repeater:

        {
          GetInfoResponse => {
            NewPasswordRequired => '0',
            NewPasswordUserSelectable => '1',
            NewUpgradeAvailable => '1',
            NewWarrantyDate => '0001-01-01T00:00:00',
            'NewX_AVM-DE_DownloadURL' => 'http://download.avm.de/fritzwlan/fritzwlan-repeater-1750e/deutschland/fritz.os/FRITZ.Repeater_1750E-07.30.image',
            'NewX_AVM-DE_InfoURL' => 'http://download.avm.de/fritzwlan/fritzwlan-repeater-1750e/deutschland/fritz.os/info_de.txt',
            'NewX_AVM-DE_LaborVersion' => '',
            'NewX_AVM-DE_UpdateState' => 'UpdateAvailable',
            'NewX_AVM-DE_Version' => '134.07.30'
          }
        }


auf die Update-Checks und Info Mail von den Systemen selbst kann man sich nicht verlassen.

Das v7.50 Update für die Box ist ja schon länger raus, ebenso das v7.30er für die Repeater ... angeblich checken die Systeme das auch täglich, ist aber mehr oder weniger ein Glücksspiel ob/wann das passiert und ob es auch angezeigt wird, daher sowas lieber in FHEM :)

--
ciao, Marc
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

mcp

Zitat von: JoWiemann am 11 Januar 2023, 22:01:01
Anbei auch eine neue Beta ...
ok, nun poppt ständig das hier auf (weil Du das entsprechend im Code geändert hast :))


2023.01.11 22:43:32 2: FRITZBOX [FRITZBox: Readout_Run_Web.2507] - ERROR: box_vdsl_upStreamRate Curl-> {
  GetInfoResponse => {
  NewATURCountry => '0400',
  NewATURVendor => '41564d00',
  NewDataPath => 'Fast',
  NewDownstreamAttenuation => '220',
  NewDownstreamCurrRate => '63735',
  NewDownstreamMaxRate => '64471',
  NewDownstreamNoiseMargin => '60',
  NewDownstreamPower => '514',
  NewEnable => '1',
  NewStatus => 'Up',
  NewUpstreamAttenuation => '220',
  NewUpstreamCurrRate => '31996',
  NewUpstreamMaxRate => '32111',
  NewUpstreamNoiseMargin => '90',
  NewUpstreamPower => '510'
  }
}


nix VDSL, weil hab' ich nicht :)

ich setze vorerst mal verbose 1 damit Ruhe ist.



disableBoxReadings   box_vdsl_downStreamRate,box_vdsl_upStreamRate


wie gesagt, nur nach einem Neustart sind diese wieder zu sehen. 1x disableBoxReadings neu gesetzt oder deletereading auf die o.g. und sie kommen bis zum FHEM Restart auch nicht mehr wieder.

P.S.: das Komma tauchte gerade wieder auf :D (Auslöser: box_fwVersion doppelt / siehe Post #302) - innerhalb Sekunden reproduzierbar wenn man das DEF 1x neu setzt (modify)

--
ciao, Marc
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

JoWiemann

Zitat von: mcp am 11 Januar 2023, 22:18:01

    push @readoutCmdArray, [ "box_fwVersion", "ctlmgr_ctl r logic status/nspver" ] ...


ist doppelt drin (für Shell), war's vorher aber auch schon :)

Nun am Ende anders, ist aber irrelevant da kommentiert:


+      push @readoutCmdArray, [ "box_fwVersion", "ctlmgr_ctl r logic status/nspver" ];
+      push @readoutCmdArray, [ "box_fwVersion", "ctlmgr_ctl r logic status/nspver" ]; #unless(grep { /^(box_fwVersion)$/ } @reading_list);



anyway, box_fwVersion ist aber immer noch doppelt drin, 1x in FRITZBOX_API_Check_Run() und 1x in FRITZBOX_Readout_Run_Web()

aber vielleicht hat das ja auch irgendeinen tieferen Sinn den ich (noch) nicht sehe :)

--
ciao, Marc

Hallo Marc,

das Modul holt sich die FirtzBox Firmwareversion in unterschiedlichen Prozessen:

1. FRITZBOX_API_Check_Run: hier wird die Firmwareversion über einen WebService Aufruf geholt, der keine SessionID und somit keine User Credentials benötigt. Dieser Aufruf findet nur beim Define und bei drei get Aufrufen statt. Hat also nichts mit dem regelmäßigen Abholen von Daten zu tun.

2. FRITZBOX_Readout_Run_Shell: Dieses Readout wird benutzt, wenn Fhem auf einer Fritzbox, z.B. in der freien Firmware Freetz, läuft. Ich weiß im Moment nicht, ob das noch von jemandem genutzt wird.

3. FRITZBOX_Readout_Run_Web: Dieses Readout wird genutzt, wenn Fhem auf irgendeinem Server läuft, was wohl die Standard-Umgebung ist. Hier werden die umfangreichsten Informationen gesammelt. Dies geschieht über mehrere API's, die AVM zur Verfügung stellt.

Somit hat das mehrfache Vorkommen schon seinen Sinn.

In wie weit dass tatsächlich ursächlich, wie es bei Dir so aussieht, ist, bin ich gerade am Testen. Bisher konnte ich Deine Vorgehensweise zur Erzeugung des Fehlers bei mir noch erfolgreich nachstellen. Das was Du machst funktioniert bei mir ohne , Reading.

In der aktuellen Beta habe ich, wie geschrieben, das Abklemmen der Readings box_model, box_oem und box_fwversion herausgenommen, da ich mich damit wichtiger Informationen zur Steuerung beraubt habe. War ein echtes Eigentor. Keine Ahnung, was ich da genommen hatte.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Zitat von: mcp am 11 Januar 2023, 22:46:08
ok, nun poppt ständig das hier auf (weil Du das entsprechend im Code geändert hast :))


2023.01.11 22:43:32 2: FRITZBOX [FRITZBox: Readout_Run_Web.2507] - ERROR: box_vdsl_upStreamRate Curl-> {
  GetInfoResponse => {
  NewATURCountry => '0400',
  NewATURVendor => '41564d00',
  NewDataPath => 'Fast',
  NewDownstreamAttenuation => '220',
  NewDownstreamCurrRate => '63735',
  NewDownstreamMaxRate => '64471',
  NewDownstreamNoiseMargin => '60',
  NewDownstreamPower => '514',
  NewEnable => '1',
  NewStatus => 'Up',
  NewUpstreamAttenuation => '220',
  NewUpstreamCurrRate => '31996',
  NewUpstreamMaxRate => '32111',
  NewUpstreamNoiseMargin => '90',
  NewUpstreamPower => '510'
  }
}


nix VDSL, weil hab' ich nicht :)

ich setze vorerst mal verbose 1 damit Ruhe ist.


Hallo Marc,

ich bin etwas irritiert, da ja grundsätzlich eine Response mit Daten kommt, allerdings die Formatierung anders ist. Gibt doch bitte einmal bei Dir ein:

get <FritzBox> tr064Command  "WANDSLInterfaceConfig:1" "wandslifconfig1" "GetInfo" und poste mir das Ergebnis.
Sorry hattest Du ja schon...

Bei mir sind in der Response die Datenfelder mit ' ' geklammert. Also Dein GetInfoResponse => ist bei mir ein 'GetInfoResponse' =>.

Ob der Name der beiden Readings richtig ist, können wir diskutieren. Welchen Verbindungstyp hast Du denn im Einsatz?

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Hallo,

anbei eine neue Beta die folgende Fehler korrigiert:

ok, nun poppt ständig das hier auf (weil Du das entsprechend im Code geändert hast :))
2023.01.11 22:43:32 2: FRITZBOX [FRITZBox: Readout_Run_Web.2507] - ERROR: box_vdsl_upStreamRate Curl-> {

für einen Repeater werden die Readings: box_vdsl_downStreamRate, box_vdsl_upStreamRate nicht mehr abgerufen.

Und ja, das mit dem Komma habe ich noch nicht gefunden  >:( >:( >:(

Und heute ist Freitag der 13te.

Grüße Jörg

Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

mcp

Zitat von: JoWiemann am 13 Januar 2023, 10:51:03
...
Ob der Name der beiden Readings richtig ist, können wir diskutieren. Welchen Verbindungstyp hast Du denn im Einsatz?

peinlich LOL - Sorry, wie ich grade sehe hab ich doch VDSL ::)
Zumindest zeigt mir die Box das an:
Verbindungstyp: VDSL2 17a G.Vector (ITU G.993.5)

Worin besteht denn der Unterschied zwischen den ,,normalen" box_dsl_blaStream und box_vdsl_blaStream Readings in diesem Fall?
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

RalfRog

Zitat von: JoWiemann am 13 Januar 2023, 11:48:38
...
Und ja, das mit dem Komma habe ich noch nicht gefunden  >:( >:( >:(

Und heute ist Freitag der 13te.
....

Hallo
Ich lass die 0.7.50 auf der Kommasuche noch laufen. Bisher ist seit 2023.01.11 14 Uhr nicts gekommen.

Wenn bis morgen abend nichts gekommen ist, ändere ich noxh einmal an den BoxReadings etwas.

Gruß Ralf
FHEM auf Raspi 2B mit nanoCUL, HM-MOD-RPI-PCB und über LAN MAX!Cube mit a-culFW (Stack 868 + 433)
HM- Fensterkontakte, UP-Schalter, Bewegungsmelder und ein Rauchmelder

mcp

Moin Jörg,

Zitat von: JoWiemann am 13 Januar 2023, 10:36:47
...
In wie weit dass tatsächlich ursächlich, wie es bei Dir so aussieht, ist, bin ich gerade am Testen. Bisher konnte ich Deine Vorgehensweise zur Erzeugung des Fehlers bei mir noch erfolgreich nachstellen. Das was Du machst funktioniert bei mir ohne , Reading.
Merkwürdig.

Sobald ich FHEM neu starte, dauert es keine 20 Sekunden und das Komma Reading ist da, sowohl auf dem Fritzbox Device als auch auf den 4 Repeater Devices.

Wenn ich die manuell lösche oder disable Box readings erneut setze, sind die weg, bis entweder Neustart oder modify DEF. Soweit ich das sehe macht er beim erneuten modify DEF wieder einen API Check (wie auch nach einem Neustart) und dann taucht das Komma Reading auf.

Zitat
In der aktuellen Beta habe ich, wie geschrieben, das Abklemmen der Readings box_model, box_oem und box_fwversion herausgenommen, da ich mich damit wichtige Informationen zur Steuerung beraubt habe. War ein echtes Eigentor. Keine Ahnung, was ich da genommen hatte.
;D Passiert. Manchmal macht das Gehirn schon komische Sachen. Ich sag nur ,,ich hab kein VDSL" ;)
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

JoWiemann

Zitat von: mcp am 13 Januar 2023, 11:55:25
Worin besteht denn der Unterschied zwischen den ,,normalen" box_dsl_blaStream und box_vdsl_blaStream Readings in diesem Fall?

HM, war ein Hinweis aus dem Forum mit irgendwas Brutto/Netto. Ich hatte das einfach umgesetzt ohne mich intensiver damit zu beschäftigen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Zitat von: mcp am 13 Januar 2023, 12:06:28
Wenn ich die manuell lösche oder disable Box readings erneut setze, sind die weg, bis entweder Neustart oder modify DEF. Soweit ich das sehe macht er beim erneuten modify DEF wieder einen API Check (wie auch nach einem Neustart) und dann taucht das Komma Reading auf.

Hm, das mit Neustart und ändern define ist ein guter Hinweis. Auf dem Weg habe ich gerade das , auch bekommen.

Spannend ist, dass in fhem.save folgende Zeile auftaucht:
setstate FritzBox 2023-01-13 12:08:48 , 0

Woher das fhem.save diese Zeile bekommt? Keine Ahnung. Ok, dann werde ich mich mal auf Forschungsreise begeben.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

mcp

Zitat von: JoWiemann am 13 Januar 2023, 12:10:29
HM, war ein Hinweis aus dem Forum mit irgendwas Brutto/Netto. Ich hatte das einfach umgesetzt ohne mich intensiver damit zu beschäftigen.
Ok, hab die Nachricht dazu gefunden.

NewDownstreamCurrRate / NewUpstreamCurrRate ist die aktuelle Datenrate, NewDownstreamMaxRate/NewUpstreamMaxRate ist die Leitungskapazität.

Insofern wäre ich für eine Umbenennung der Readings.

Warum die bei mir nicht gefunden werden liegt wohl daran, daß du im Code nach 'bla' suchst, die Ausgaben bei mir aber ohne ' sind:


Service='WANDSLInterfaceConfig:1'   Control='wandslifconfig1'   Action='GetInfo'
----------------------------------------------------------------------
{
  GetInfoResponse => {
    NewATURCountry => '0400',
    NewATURVendor => '41564d00',
    NewDataPath => 'Fast',
    NewDownstreamAttenuation => '220',
    NewDownstreamCurrRate => '63735',
    NewDownstreamMaxRate => '64126',
    NewDownstreamNoiseMargin => '60',
    NewDownstreamPower => '514',
    NewEnable => '1',
    NewStatus => 'Up',
    NewUpstreamAttenuation => '220',
    NewUpstreamCurrRate => '31996',
    NewUpstreamMaxRate => '32111',
    NewUpstreamNoiseMargin => '90',
    NewUpstreamPower => '510'
  }
}


dann müsste man wohl beide Fälle mit einbauen oder die Regex erweitern.
Maintainer: 98_vitoconnect.pm
Raspberry Pi 4B, 4 GB RAM, 32 GB SD Karte
Raspbian Bullseye 32-bit, FHEM up2date

JoWiemann

Zitat von: mcp am 13 Januar 2023, 13:32:10
dann müsste man wohl beide Fälle mit einbauen oder die Regex erweitern.

Habe ich in der Beta von heute gemacht.

Und nun noch frohe Kunde. Das , Reading habe ich gefunden.

Und nun was passiert ist:

Beim Auswählen aus einer DropDown-Liste für Attribute werden die ausgewählten Elemente in einen String Komma separiert geschrieben.

zB. box_rateDown,box_rateUp,box_vdsl_downStreamRate,box_vdsl_upStreamRate

Um nun die Readings zu löschen bau ich mit split ein Array auf arbeite das mit foreach ab:

my @reading_list = split("(,|\\|)", $aVal);

Der Fehler lag nun im RegEx für split. (Keine Ahnung, was ich mir dabei gedacht habe)

Jedenfalls habe ich so ein Array erhalten, dass folgende Werte hatte:
, <= man achte auf diesen Wert
box_rateDown
box_rateUp
box_vdsl_downStreamRate
box_vdsl_upStreamRate

Nun kommt etwas, dass ich bisher nicht wusste. Ich lösche ein Attribut aus der internen Liste mit:

readingsDelete($hash, $_) if exists $hash->{READINGS}{$_}{VAL};     # Habe ich irgendwo abgeschaut

Jetzt passiert folgendes. Da das Array-Element im HASH nicht existiert, wird es im HASH, da ja auf {VAL} geprüft wird, wohl einfach angelegt. Was dann dazu führt, dass dann auf einmal ein entsprechendes Attribut existiert.

Ändert man die Code Zeile auf:
readingsDelete($hash, $_) if exists $hash->{READINGS}{$_};

Wird keine HASH Element angelegt, da ja auf {$_} geprüft wird.

So, und jetzt seit Ihr dran.

Grüße Jörg und eine Version im Fhem Git. Für Eilige im Anhang.
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM