Script für durchschnittliche RSSI_DEVICE und RSSI_PEER Werte

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

etofi
Beiträge: 106
Registriert: 26.06.2016, 09:59
System: CCU
Hat sich bedankt: 3 Mal
Danksagung erhalten: 16 Mal

Script für durchschnittliche RSSI_DEVICE und RSSI_PEER Werte

Beitrag von etofi » 15.11.2022, 20:29

Hallo zusammen,

ich baue mir gerade ein Script mit dem ich meine durchschnittlichen RSSI_DEVICE und RSSI_PEER Werte ermitteln will um zu schauen ob der Tausch der externen Antenne oder eine andere Position eine Auswirkung auf die Werte hat.
Ich würde das immer eine Woche laufen lassen um wirklich aussagekräftige Werte zu erhalten.

Anbei meine aktuelle Version:

Code: Alles auswählen

string item;
object devobj;
string devname;
string devtype; 
string chName;
integer iRSSID;
integer iRSSIP;
integer sRSSID;
integer sRSSIP;
integer iRSSIDObjekte;
integer iRSSIPDObjekte;

object rCH = dom.GetObject(ID_CHANNELS);

foreach (item, (dom.GetObject(ID_DEVICES)).EnumUsedIDs()) { ! Schleife über alle Objekte
    ! --- Geräte-Infos holen (Name, Typ, Schnittstelle)
    devobj 	= dom.GetObject(item); ! Objekt der ID
    devname = devobj.Name();
    devtype = devobj.HssType();
    chName 	= devname # ":0"; 
 

	if ( rCH.Get(chName).DPByHssDP("RSSI_DEVICE") ) {
		iRSSID =  rCH.Get(chName).DPByHssDP("RSSI_DEVICE").State()-256;
    
		if (iRSSID>-255) {
			iRSSIDObjekte = iRSSIDObjekte + 1;
			sRSSID = sRSSID + iRSSID;
		  }
	}
  

	if ( rCH.Get(chName).DPByHssDP("RSSI_PEER") ) {
		iRSSIP =  rCH.Get(chName).DPByHssDP("RSSI_PEER").State()-256;
    
		if (iRSSIP>-255) {
			iRSSIPDObjekte = iRSSIPDObjekte + 1;
			sRSSIP = sRSSIP + iRSSIP;
		  }
	}
	
	WriteLine(devname # " (" # devtype # ") " # iRSSID # " (" #  iRSSIDObjekte # ") " # iRSSIP # " (" #  iRSSIPDObjekte # ")");
}

WriteLine("Schnitt RSSI_DEVICE:" # sRSSID/iRSSIDObjekte);
WriteLine("Schnitt RSSI_PEER:" # sRSSIP/iRSSIPDObjekte);
Folgende Probleme bzw. Fragen sind jetzt allerdings aufgetaucht:
  1. Ist die Konstante die ich abziehen muss mit 256 korrekt?
  2. Kann es sein, dass über das Script nicht immer die Werte der CCU3 sondern auch die vom LAN Gateway ausgegeben werden wenn das Gerät auf Roaming gestellt ist?
Grüße
Eric

MichaelN
Beiträge: 9675
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 698 Mal
Danksagung erhalten: 1625 Mal

Re: Script für durchschnittliche RSSI_DEVICE und RSSI_PEER Werte

Beitrag von MichaelN » 15.11.2022, 20:38

Ich würde das mit CCU Historian tracken und dann die Werte als CSV ausgeben und mit Excel auswerten.
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 +++

etofi
Beiträge: 106
Registriert: 26.06.2016, 09:59
System: CCU
Hat sich bedankt: 3 Mal
Danksagung erhalten: 16 Mal

Re: Script für durchschnittliche RSSI_DEVICE und RSSI_PEER Werte

Beitrag von etofi » 15.11.2022, 20:41

MichaelN hat geschrieben:
15.11.2022, 20:38
Ich würde das mit CCU Historian tracken und dann die Werte als CSV ausgeben und mit Excel auswerten.
Coole Idee. Das hab ich ja auch laufen.
Schau ich mir gleich mal an.

etofi
Beiträge: 106
Registriert: 26.06.2016, 09:59
System: CCU
Hat sich bedankt: 3 Mal
Danksagung erhalten: 16 Mal

Re: Script für durchschnittliche RSSI_DEVICE und RSSI_PEER Werte

Beitrag von etofi » 16.11.2022, 19:47

Aber kann jemand trotzdem die 256 bestätigen?

etofi
Beiträge: 106
Registriert: 26.06.2016, 09:59
System: CCU
Hat sich bedankt: 3 Mal
Danksagung erhalten: 16 Mal

Re: Script für durchschnittliche RSSI_DEVICE und RSSI_PEER Werte

Beitrag von etofi » 16.11.2022, 20:07

MichaelN hat geschrieben:
15.11.2022, 20:38
Ich würde das mit CCU Historian tracken und dann die Werte als CSV ausgeben und mit Excel auswerten.
Leider habe ich ich CCU Historian nur für HmIP-RF Geräte RSSI Daten drin.
Das Script liefert die auch für normale Homematic Geräte.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Script für durchschnittliche RSSI_DEVICE und RSSI_PEER Werte

Beitrag von alchy » 16.11.2022, 20:27

etofi hat geschrieben:
16.11.2022, 19:47
Aber kann jemand trotzdem die 256 bestätigen?
Passt so, wobei dann die -255 eben noch KEIN Wert darstellen. und -256 gibt keinen Wert

Dein Script:

Code: Alles auswählen

Beregnung (HM-LC-Sw4-DR) -87 (1) -164 (1)
Display (HM-Dis-WM55) -255 (1) -53 (2)
Meine Anzeige in der Klickibunti
RSSI_etofi.jpg
RSSI_etofi.jpg (38.16 KiB) 315 mal betrachtet

oder mal schnell per eigenen Script über xmlrpc

Code: Alles auswählen

Beregnung RSSI Device: -87 RSSI Peer: -164 BidCos-RF
Display RSSI Device:  ???  RSSI Peer: -53 BidCos-RF

[EDIT]
und du solltest noch bestimmte Geräte "wegfiltern"
Alchy
Zuletzt geändert von alchy am 16.11.2022, 20:31, insgesamt 1-mal geändert.

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

etofi
Beiträge: 106
Registriert: 26.06.2016, 09:59
System: CCU
Hat sich bedankt: 3 Mal
Danksagung erhalten: 16 Mal

Re: Script für durchschnittliche RSSI_DEVICE und RSSI_PEER Werte

Beitrag von etofi » 17.11.2022, 07:11

alchy hat geschrieben:
16.11.2022, 20:27
Und du solltest noch bestimmte Geräte "wegfiltern"
Alchy
Das mach ich doch da ich nur Gerate in den Schnitt einrechne indem ich so filtere "iRSSID>-255".
Oder meinst Du was anderes?

etofi
Beiträge: 106
Registriert: 26.06.2016, 09:59
System: CCU
Hat sich bedankt: 3 Mal
Danksagung erhalten: 16 Mal

Re: Script für durchschnittliche RSSI_DEVICE und RSSI_PEER Werte

Beitrag von etofi » 17.11.2022, 07:20

Also sieht tatsächlich so aus als würde das Script bei Roaming immer nur die besseren Werte ausspucken

Ergebnisse aus RSSI Liste:
Screenshot 2022-11-17 at 07-17-19 RSSI List.png
Screenshot 2022-11-17 at 07-17-19 RSSI List.png (6.97 KiB) 279 mal betrachtet

Ergebnisse aus Script:

Schalter 4 Kanal Heizraum (HM-LC-Sw4-DR) -61 (12) -78 (53)

etofi
Beiträge: 106
Registriert: 26.06.2016, 09:59
System: CCU
Hat sich bedankt: 3 Mal
Danksagung erhalten: 16 Mal

Re: Script für durchschnittliche RSSI_DEVICE und RSSI_PEER Werte

Beitrag von etofi » 17.11.2022, 07:32

alchy hat geschrieben:
16.11.2022, 20:27
oder mal schnell per eigenen Script über xmlrpc

Code: Alles auswählen

Beregnung RSSI Device: -87 RSSI Peer: -164 BidCos-RF
Display RSSI Device:  ???  RSSI Peer: -53 BidCos-RF
Deine Script holt die Daten ja aus xmlrpc. Da sind immer nur die der CCU drin.
Das wäre genau das was ich brauche da ich ja nur die Antenne an der CCU verändere.
Kannst Du mir evtl. Dein Script geben mit dem Du die Werte aus der xmlrpc ausließt?
Wäre super.

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Script für durchschnittliche RSSI_DEVICE und RSSI_PEER Werte

Beitrag von alchy » 18.11.2022, 19:32

Per xmlrpc stehen die Werte stehe im Parameterset VALUES im Maintenancekanal :0
Ausgehend von meinem Beispiel oben und dem Aktor Beregnung
RSSI_etofi.jpg
RSSI_etofi.jpg (38.16 KiB) 231 mal betrachtet

Code: Alles auswählen

object oObj = dom.GetObject("Beregnung:0");
string ValueSet = xmlrpc.GetParamset(oObj.Interface(), oObj.Address(), "VALUES");
WriteLine(ValueSet #"\r");
So kriegst du die dann als struct
Nun könnte man das struct auseinandernehmen mit irgendwelchen Stringoperationen oder besser mit GetChildNode(), GetTetx() usw. um an die einzelnen Werte zu kommen oder man holt sich die Einzelwerte in dem Fall gleich mit xmlrpc.GetValue()

Code: Alles auswählen

object oObj = dom.GetObject("Beregnung:0");
string ValueDevice = xmlrpc.GetValue(oObj.Interface(), oObj.Address(), "RSSI_DEVICE");
string ValuePeer = xmlrpc.GetValue(oObj.Interface(), oObj.Address(), "RSSI_PEER");
if(ValueDevice == -65535){ValueDevice=" ??? ";} if(ValuePeer == -65535){ValuePeer=" ??? ";}
WriteLine(oObj.Name() # " RSSI Device: "#ValueDevice  #" RSSI Peer: "# ValuePeer );
Aber Achtung:
Nun haben aber ja nicht alle Geräte alles und manche haben auch Fabeleinträge. So z.B. virtuelle und / oder CUxD Geräte.
Aber das merkst du wenn du mit einzelnen Geräten spielst.

Wenn du noch Fragen hast musst du dich melden.
Wird aber ne wWeile dauern bis ich an einen Rechner komme und nicht mit dem Handy tipple....
Kann dann auch mal nach anderen "fertigeren" Versionen schauen.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Antworten

Zurück zu „HomeMatic allgemein“