Seite 1 von 2

Hoher DutyCycle und nicht endender Firmwareupload

Verfasst: 30.01.2024, 10:54
von FCBazi09
Hallo Gemeinde,
da ich in meinem System (CCU3 und zwei HAP`s mit aktueller RasperryMatic) durchaus nicht wenige Geräte verwende (z.Zt. 185 aktive Geräte)
habe ich ich natürlich immer wieder mit langen Firmwareuploads Ladezeiten und Upload Abbrüche Probleme.
Ich habe mir den AskSkinAnalyser Version 1.8.0 von der GitHub Seite heruntergeladen, da ich die Linux-Variante auf einem RPi4 nicht zum laufen brachte bin ich auf einen alten Windows 10 PC ausgewichen. Nach Installation und Konfiguration funktioniert soweit aucht das mithören des Datenverkehrs. Allerdings sehe ich nur Geräte mit einer sieben oder achtstelligen Nummer mit der ich keine Beziehung zu meinen Geräten in der CCU3 verbinden kann.
Hat jemand eine Idee was ich z.Zt. noch falsch konfiguriert habe.
Ich würde gerne anhand der Analyse meines Funkverkehrs Geräte identifizieren die Teil dieses Problems sind.

Re: Hoher DutyCycle und nicht endender Firmwareupload

Verfasst: 30.01.2024, 11:16
von Xel66
FCBazi09 hat geschrieben:
30.01.2024, 10:54
Hat jemand eine Idee was ich z.Zt. noch falsch konfiguriert habe.
Auf Deiner CCU fehlt noch ein Programm, welches die entsprechenden Gerätenamen in einer Sytemvariable (AskSinAnalyzerDevList) zusammenstellt und vermutlich die Konfiguration im Analyzer, der diese Informationen von der CCU abfragt.

Gruß Xel66

Re: Hoher DutyCycle und nicht endender Firmwareupload

Verfasst: 30.01.2024, 11:22
von Horst Henning
folgendes Skript in einem Programm z.B. 1x am Tag laufen lassen:

Code: Alles auswählen

string svDevList = "AskSinAnalyzerDevList";
string svAlarm   = "AskSinAnalyzerAlarm";

string HmIPBroadcastName           = "HmIP Multicast All Devices";
string HmIPRoutersName             = "HmIP Multicast All Routers";
string HmIPAccessControllersName   = "HmIP Multicast All AccessControllers";
string HmIPThermostatsName         = "HmIP Multicast All Thermostats";
string HmIPSmokeSensorsName        = "HmIP Multicast All Smoke Sensors";
string HmIPPermanentListenerName   = "HmIP Multicast All Permanent Listener";
string HmIPBurstListenerName       = "HmIP Multicast All Burst Listener";
string HmIPTripleBurstListenerName = "HmIP Multicast All Triple Burst Listener";
string HmRFBroadcastName           = "HMRF Broadcast";

object svObjects = dom.GetObject(ID_SYSTEM_VARIABLES);

!Alarmvariable anlegen
object alarmObj = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svAlarm);

if(!alarmObj) {      
  alarmObj = dom.CreateObject(OT_ALARMDP);
                                                                                                                               
  alarmObj.Name(svAlarm);                                                                     
  alarmObj.ValueType(ivtBinary);                                                               
  alarmObj.ValueSubType(istAlarm);                                                             
  alarmObj.ValueName0("nicht ausgelöst");                                   
  alarmObj.ValueName1("ausgelöst");                                      
  alarmObj.ValueUnit("");                                                                    
  alarmObj.AlType(atSystem);                                                                   
  alarmObj.AlArm(true);                                                                        
  alarmObj.AlSetBinaryCondition();                                                             
  alarmObj.State(false);                                                                       

  svObjects.Add(alarmObj.ID());

  dom.RTUpdate(0);                                                                          
  
  WriteLine("Alarm-Variable "#svAlarm#" angelegt.\n");                                                                                        
}  else {
  WriteLine("Alarm-Variable "#svAlarm#" existiert.\n");
}

!Systemvariable anlegen, falls sie nicht bereits existiert
object svObj = dom.GetObject(ID_SYSTEM_VARIABLES).Get(svDevList);

if (!svObj){
  svObj = dom.CreateObject(OT_VARDP);

  svObj.Name(svDevList);
  svObj.ValueType(ivtString);
  svObj.ValueSubType(istChar8859);

  svObj.DPInfo("used by AskSinAnalyzer");
  svObj.ValueUnit("");
  svObj.State("");
  svObj.Internal(false);
  svObj.Visible(false);

  svObjects.Add(svObj.ID());

  dom.RTUpdate(0);
  WriteLine("Variable "#svDevList#" angelegt.\n");
} else {
  WriteLine("Variable "#svDevList#" existiert.\n");
}

!phys. Zentralen-Adresse HmIP auslesen
string stdout;
string stderr;
system.Exec("echo $((0x`grep Adapter.1.Address /etc/config/hmip_address.conf|awk -F'\=' {'print $2'}`))", &stdout, &stderr);
WriteLine(stdout);

integer HmIPCentral = stdout.ToInteger();

!alle Geräteadressen, Seriennummer und Namen erfassen
integer tstamp = system.Date("%F %X").ToTime().ToInteger();
string sDevId;
string data;
string metaData;
string result = "{\"created_at\":"#tstamp#",\"devices\":["#
     "{\"address\":15728641,\"serial\":\"00000000000000\",\"name\":\""#HmIPBroadcastName#"\"},"#
     "{\"address\":15728642,\"serial\":\"00000000000000\",\"name\":\""#HmIPRoutersName#"\"},"#
     "{\"address\":15728643,\"serial\":\"00000000000000\",\"name\":\""#HmIPAccessControllersName#"\"},"#
     "{\"address\":15728644,\"serial\":\"00000000000000\",\"name\":\""#HmIPThermostatsName#"\"},"#
     "{\"address\":15728645,\"serial\":\"00000000000000\",\"name\":\""#HmIPSmokeSensorsName#"\"},"#
     "{\"address\":15728769,\"serial\":\"00000000000000\",\"name\":\""#HmIPPermanentListenerName#"\"},"#
     "{\"address\":15728770,\"serial\":\"00000000000000\",\"name\":\""#HmIPBurstListenerName#"\"},"#
     "{\"address\":15728771,\"serial\":\"00000000000000\",\"name\":\""#HmRFBroadcastName#"\"},"#
     "{\"address\":0,\"serial\":\"0000000000\",\"name\":\""#HmRFBroadcastName#"\"},";

foreach(sDevId, root.Devices().EnumUsedIDs())
{
  var dev= dom.GetObject(sDevId);
  if ( true == dev.ReadyConfig() )
  {
    metaData = dev.MetaData("DEVDESC");
    foreach (data, metaData.Split(",")) {
      if (data.Substr(0,10) == "RF_ADDRESS") {
        data = data.Replace("RF_ADDRESS:","");
        if (data != "0") {
	  string ser = dev.Address();
	  if ((HmIPCentral > 0) && (data == HmIPCentral)) { ser = "HmIP-RF"; }
          result = result # "{\"address\":" #data#",\"serial\":\""#ser#"\",\"name\":\""#dev.Name()#"\"},";
        }
      }
    }
  }
}
result = result # "]}";
result = result.Replace("},]","}]");


dom.GetObject(ID_SYSTEM_VARIABLES).Get(svDevList).State(result);
Write(result);

!Abfrage im Browser mit http://ccu2:8181/ret.exe?ret=dom.GetObject(ID_SYSTEM_VARIABLES).Get("AskSinAnalyzerDevList").Value()
Habe ich im Internet gefunden.

Re: Hoher DutyCycle und nicht endender Firmwareupload

Verfasst: 30.01.2024, 13:08
von MichaelN
Dein CarrierSense ist auch relativ hoch. Funkstörungen verbessern die Update Geschwindigkeit auch nciht.

Re: Hoher DutyCycle und nicht endender Firmwareupload

Verfasst: 30.01.2024, 13:13
von Baxxy
Eigentlich ist ja alles beim Projekt beschrieben, auch die Namensauflösung.
https://github.com/psi-4ward/AskSinAnal ... %A4tenamen

Re: Hoher DutyCycle und nicht endender Firmwareupload

Verfasst: 30.01.2024, 13:23
von MichaelN
Verrückt, was man alles so im Internet finden kann

Re: Hoher DutyCycle und nicht endender Firmwareupload

Verfasst: 30.01.2024, 14:15
von Horst Henning
MichaelN hat geschrieben:
30.01.2024, 13:23
Verrückt, was man alles so im Internet finden kann
?

bei mir folgende Situation: relativ häufige Kommunikationsstörungen bei bestimmten HM-Geräten (ca. 4 von 10), so gut wie überhaupt keine bei ca. 40 HmIP-Geräten.

Gelegentlich sehe ich, wenn ich auf die Startseite der CCU gehe, den Balken des DC für 1/2 Sekunde im roten Bereich (normal um 20%). Um das weiter einzugrenzen habe ich mir den CUL-Stick für AskSin gekauft, alles installiert. Funktioniert. Leider komme ich da nicht so recht weiter. Es gibt kein Gerät, dass sehr viel funkt. Erstaunlicherweise machen PS und PSM auch wenn sie nicht eingeschaltet sind einen relativ hohen DC.

Schön wäre wenn bei den einzelnen Geräten der DC über einen gewissen Zeitraum angezeigt würde. In Zahlen wird ja auch der Gesamt-DC nicht dargestellt. Oder gibt es etwas, was ich noch nicht gefunden habe, MichaelN?

Re: Hoher DutyCycle und nicht endender Firmwareupload

Verfasst: 30.01.2024, 15:27
von Matsch
Horst Henning hat geschrieben:
30.01.2024, 14:15
Gelegentlich sehe ich, wenn ich auf die Startseite der CCU gehe, den Balken des DC für 1/2 Sekunde im roten Bereich (normal um 20%).
Schon mal auf die naheliegende Idee gekommen, dass das Anzeigeelement kurz nach dem Öffnen der Seite nur noch nicht aktualisiert ist?
Trotzdem viel Spaß am rätseln.

Re: Hoher DutyCycle und nicht endender Firmwareupload

Verfasst: 30.01.2024, 15:45
von Horst Henning
Matsch hat geschrieben:
30.01.2024, 15:27
Schon mal auf die naheliegende Idee gekommen, dass das Anzeigeelement kurz nach dem Öffnen der Seite nur noch nicht aktualisiert ist?
Trotzdem viel Spaß am rätseln.
Logisch

also war er mal hoch. Sollte man das "Warum?" nicht bei den Aufzeichnungen von AskSin sehen? Oder wozu ist das gut?

Re: Hoher DutyCycle und nicht endender Firmwareupload

Verfasst: 30.01.2024, 15:56
von jp112sdl
Horst Henning hat geschrieben:
30.01.2024, 15:45
also war er mal hoch.
Nein. Das liegt am Javascript im Hintergrund, wenn der Balken noch nicht fertig initialisiert wurde.
Horst Henning hat geschrieben:
30.01.2024, 15:45
Sollte man das "Warum?" nicht bei den Aufzeichnungen von AskSin sehen?
Und wo nichts war, ist auch nichts zu sehen