Status Aktor-Firmware Update abfragen

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

regedit
Beiträge: 55
Registriert: 11.11.2018, 23:24
Hat sich bedankt: 6 Mal
Danksagung erhalten: 14 Mal

Status Aktor-Firmware Update abfragen

Beitrag von regedit » 30.12.2022, 11:28

Moin,
gibt es eine Möglichkeit per Script abzufragen ob der Upload eines Firmwareupdates abgeschlossen ist? (Also der Update-Button angezeigt wird...)

EDIT: Mögliche Lösung:
viewtopic.php?f=65&t=77314&start=10#p750516
.
.
Dateianhänge
Screenshot 2022-12-30 at 11-22-01 RaspberryMatic WebUI.png
Screenshot 2022-12-30 at 11-22-01 RaspberryMatic WebUI.png (2.96 KiB) 881 mal betrachtet
Zuletzt geändert von regedit am 02.01.2023, 11:15, insgesamt 1-mal geändert.

MichaelN
Beiträge: 9655
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 697 Mal
Danksagung erhalten: 1617 Mal

Re: Status Aktor-Firmware Update abfragen

Beitrag von MichaelN » 30.12.2022, 12:06

Du könntest den DutyCycle auswerten. Ist der längere Zeit wieder auf normal Niveau, dann ist die Übertragung wahrscheinlich beendet.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Status Aktor-Firmware Update abfragen

Beitrag von jp112sdl » 30.12.2022, 12:28

Code: Alles auswählen

object dev = dom.GetObject(ID_DEVICES).Get("GERÄTENAME");

if (dev) {
  string metaData = dev.MetaData("DEVDESC");
  string data;
  foreach (data, metaData.Split(",")) {
    if (data.Substr(0,21) == "FIRMWARE_UPDATE_STATE") {
      WriteLine(data);
    }
  }
}
GERÄTENAME durch den Namen des Geräts ersetzen.

Wenn als Ergebis

Code: Alles auswählen

FIRMWARE_UPDATE_STATE:"READY_FOR_UPDATE"
steht, sollte das Update übertragen sein und der Button erscheinen.

Weitere mögliche Rückgabewerte siehe hier:
https://github.com/eq-3/occu/blob/maste ... #L133-L181

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

mbhomie007
Beiträge: 347
Registriert: 13.02.2018, 19:23
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 127 Mal
Danksagung erhalten: 20 Mal

Re: Status Aktor-Firmware Update abfragen

Beitrag von mbhomie007 » 30.12.2022, 12:32

Könnte man auch einen Fortschrittsbalken in Prozent integrieren?
Ist das überhaupt möglich das abzufragen? :(
Raspberry Pi 3 Model B Plus Rev 1.3 mit RPI-RF-MOD Funkmodul

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Status Aktor-Firmware Update abfragen

Beitrag von jp112sdl » 30.12.2022, 12:35

mbhomie007 hat geschrieben:
30.12.2022, 12:32
Könnte man auch einen Fortschrittsbalken in Prozent integrieren?
Nein
mbhomie007 hat geschrieben:
30.12.2022, 12:32
Ist das überhaupt möglich das abzufragen?
Den Übertragungsfortschritt an sich nicht.
Nur dass noch eine Übertragung stattfindet (DELIVER_FIRMWARE_IMAGE)

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

regedit
Beiträge: 55
Registriert: 11.11.2018, 23:24
Hat sich bedankt: 6 Mal
Danksagung erhalten: 14 Mal

Re: Status Aktor-Firmware Update abfragen

Beitrag von regedit » 31.12.2022, 09:46

Danke,
scheint bei mir aber nicht zu gehen. Kann es daran liegen, dass ich ne Beta-Firmware hochlade?

Auß_Briefkasten
FIRMWARE_UPDATE_STATE:"UP_TO_DATE"

Auß_Garage_Unterverteilung
FIRMWARE_UPDATE_STATE:"UP_TO_DATE"

Code: Alles auswählen

[ADDRESS:"001F18xxxxxxxx",AES_ACTIVE:1,AVAILABLE_FIRMWARE:"0.0.0",CHILDREN:{"001F18xxxxxxxx:0","001F18xxxxxxxx:1","001F18xxxxxxxx:2","001F18xxxxxxxx:3","001F18xxxxxxxx:4","001F18xxxxxxxx:5","001F18xxxxxxxx:6"},DIRECTION:0,FIRMWARE:"1.0.16",FIRMWARE_UPDATE_STATE:"UP_TO_DATE",FLAGS:1,GROUP:"",INDEX:0,INTERFACE:"",LINK_SOURCE_ROLES:"",LINK_TARGET_ROLES:"",PARAMSETS:{"MASTER","SERVICE"},PARENT:"",PARENT_TYPE:"",RF_ADDRESS:xxxxxxx,ROAMING:0,RX_MODE:4,SUBTYPE:"FCI6",TEAM:"",TEAM_CHANNELS:{},TEAM_TAG:"",TYPE:"HmIP-FCI6",UPDATABLE:true,VERSION:1]
Dateianhänge
Screenshot 2022-12-31 at 09-43-59 RaspberryMatic WebUI.png
Screenshot 2022-12-31 at 09-43-59 RaspberryMatic WebUI.png (16.81 KiB) 743 mal betrachtet

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Status Aktor-Firmware Update abfragen

Beitrag von jp112sdl » 31.12.2022, 10:11

Möglicherweise wieder eine Diskrepanz zwischen ReGaDom Metadaten und Schnittstellenprozess

Was kommt, wenn du das ausführtst?

Code: Alles auswählen

string snr="000457098CEFA9";
string a;
system.Exec ("(echo 'load tclrpc.so; puts [xmlrpc http://127.0.0.1:2010/ getDeviceDescription [list string "#snr#"]]'|tclsh)",&a);
WriteLine(a);
snr oben noch durch die von deinem Gerät (001F18xxxxxxxx) anpassen

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

regedit
Beiträge: 55
Registriert: 11.11.2018, 23:24
Hat sich bedankt: 6 Mal
Danksagung erhalten: 14 Mal

Re: Status Aktor-Firmware Update abfragen

Beitrag von regedit » 31.12.2022, 10:43

Das scheint zu klappen

Code: Alles auswählen

ADDRESS 001F1xxxxxxFF9 AES_ACTIVE 1 AVAILABLE_FIRMWARE 1.0.18 CHILDREN {001F1xxxxxxFF9:0 001F1xxxxxxFF9:1 001F1xxxxxxFF9:2 001F1xxxxxxFF9:3 001F1xxxxxxFF9:4 001F1xxxxxxFF9:5 001F1xxxxxxFF9:6} DIRECTION 0 FIRMWARE 1.0.16 
FIRMWARE_UPDATE_STATE DO_UPDATE_PENDING FLAGS 1 GROUP {} INDEX 0 INTERFACE {} LINK_SOURCE_ROLES {} LINK_TARGET_ROLES {} PARAMSETS {MASTER SERVICE} PARENT {} PARENT_TYPE {} RF_ADDRESS 76xxxxx ROAMING 0 RX_MODE 4 SUBTYPE FCI6 TEAM {} TEAM_CHANNELS {} TEAM_TAG {} TYPE HmIP-FCI6 UPDATABLE 1 VERSION 1

ADDRESS 001F1xxxxxxAD0 AES_ACTIVE 1 AVAILABLE_FIRMWARE 1.0.18 CHILDREN {001F1xxxxxxAD0:0 001F1xxxxxxAD0:1 001F1xxxxxxAD0:2 001F1xxxxxxAD0:3 001F1xxxxxxAD0:4 001F1xxxxxxAD0:5 001F1xxxxxxAD0:6} DIRECTION 0 FIRMWARE 1.0.16 
FIRMWARE_UPDATE_STATE DELIVER_FIRMWARE_IMAGE FLAGS 1 GROUP {} INDEX 0 INTERFACE {} LINK_SOURCE_ROLES {} LINK_TARGET_ROLES {} PARAMSETS {MASTER SERVICE} PARENT {} PARENT_TYPE {} RF_ADDRESS 65xxxxx ROAMING 0 RX_MODE 4 SUBTYPE FCI6 TEAM {} TEAM_CHANNELS {} TEAM_TAG {} TYPE HmIP-FCI6 UPDATABLE 1 VERSION 1

jp112sdl
Beiträge: 12108
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 848 Mal
Danksagung erhalten: 2148 Mal
Kontaktdaten:

Re: Status Aktor-Firmware Update abfragen

Beitrag von jp112sdl » 31.12.2022, 10:54

regedit hat geschrieben:
31.12.2022, 10:43
Das scheint zu klappen
Dann kannst du die Ausgabe ja dann weiterverarbeiten

Code: Alles auswählen

string snr="000457098CEFA9";
string a;
system.Exec ("echo 'load tclrpc.so; puts [xmlrpc http://127.0.0.1:2010/ getDeviceDescription [list string "#snr#"]]'|tclsh",&a);
string s;
boolean found;
foreach (s, a.Split(" ")) {
  if (found == true) {
    break;
  }
  if (s == "FIRMWARE_UPDATE_STATE") {
    found=true;
  }
}

if (s == "DO_UPDATE_PENDING") {
  ...
}
Gibt vielleicht noch einen besseren Weg als mit dem foreach (z.B. die Shell-Ausgabe mit awk gleich auf das Nötigste zu reduzieren), aber da fehlt mir grad die Zeit zum Reindenken

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

regedit
Beiträge: 55
Registriert: 11.11.2018, 23:24
Hat sich bedankt: 6 Mal
Danksagung erhalten: 14 Mal

Re: Status Aktor-Firmware Update abfragen

Beitrag von regedit » 01.01.2023, 11:44

Danke, hab mich mal an einem anderen Code-Schnipsel von dir bedient.
Ich lass das Prog alle 8h laufen. Es durchläuft alle Geräte, wenn bei einem das Update übertragen ist, lasse ich mir eine Nachricht schicken.
Werde in ein paar Tagen berichten ob es klappt.

Code: Alles auswählen

string out;
string err;
string o;
string fw;

foreach (o, devices.Get().EnumIDs()) {
  var dev = dom.GetObject(o);
  var name = dev.Name();
  var addr = dev.Address();
  var iface = dom.GetObject(dev.Interface());
  
  ! WriteLine(iface);
  if ((iface.Name()=="HmIP-RF") || (iface.Name()=="BidCos-RF")) {
    system.Exec("echo 'load tclrpc.so; puts [xmlrpc http://127.0.0.1:2010/ getDeviceDescription [list string "#addr#"]]'|tclsh", &out, &err);
    string s;
    boolean found;
    foreach (s, out.Split(" ")) {
      if (found == true) {
        ! WriteLine(name # ": " # s);
        ! if (s != "UP_TO_DATE") {
        !   WriteLine(name # ": " # s);
        ! }
        if (s == "DO_UPDATE_PENDING") {
          fw = "Update hochgeladen: " # name;
          ! WriteLine(name # ": " # s);
        }
        break;
      }
      if (s == "FIRMWARE_UPDATE_STATE") {
        found=true;
      }
    }
  }
}

if (fw) {
  ! Update ist übertragen, sende Nachricht ... ...
  WriteLine(fw);
}

Antworten

Zurück zu „RaspberryMatic“