Batterieabfrage Script für IP funktioniert nicht

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
UKu
Beiträge: 30
Registriert: 13.01.2019, 16:16

Batterieabfrage Script für IP funktioniert nicht

Beitrag von UKu » 14.01.2019, 18:42

Hi,

das mitgelieferte Script funktioniert mit den "alten" Heizkörperthermostaten ohne Probleme. Lediglich steht anstelle des "Operating Voltage" eben "Battery State". Ist ja auch ein bekanntes Script hier aus dem Forum. Aber...
Mit meinen IP Geräten (Aussensensor (Temp/Feucht), Fensterkontakt und Thermostat) funktioniert es leider nicht. Es wird nichts ausgegeben. Ich benutze es für die IP Komponeneten so wie es unten zu sehen ist. Sie sind alle dem Gewerk "Batteriebetrieb IP" zugeordnet.

Was stimmt daran nicht?

Vielen Dank schon mal im voraus!

Code: Alles auswählen

var BatDev = dom.GetObject("Batteriebetrieb IP");
    var item;
    string itemID; string text = ""; string channel_name; string batvalue;

    ! Durch alle angemeldeten Geräte laufen
    foreach(itemID, BatDev.EnumUsedIDs()){
      !Gerätedetails & Schnittstelle holen
      item = dom.GetObject(itemID);
        channel_name = dom.GetObject(item.DPByHssDP("OPERATING_VOLTAGE"));
        if(channel_name){
          batvalue = dom.GetObject(channel_name).Value();
     
          ! Text zusammensetzen
          text = text#" "#item.Name()#": "#batvalue.ToString(1)#" V";
      }
    }
    WriteLine(text);

    (dom.GetObject(ID_SYSTEM_VARIABLES).Get("Batteriestatus IP")).State(text);

Bratmaxe
Beiträge: 1170
Registriert: 28.05.2015, 12:48
Wohnort: Willich

Re: Batterieabfrage Script für IP funktioniert nicht

Beitrag von Bratmaxe » 15.01.2019, 09:39

Soweit ich mich erinnere ist der Datenpunkt bei HM-IP "LOW_BAT" und nicht "Operating_Voltage".
Oder willst du den aktuellen Batterielevel auslesen?

Gruß Carsten

UKu
Beiträge: 30
Registriert: 13.01.2019, 16:16

Re: Batterieabfrage Script für IP funktioniert nicht

Beitrag von UKu » 15.01.2019, 10:21

Hi,

ja ich will die aktuelle Voltzahl haben.

Mir ist diesbezüglich noch etwas aufgefallen. Wenn man sich im Historian die Gewerkezuordnung anschaut gibt es zwischen den "alten" und den IP Geräten einen Unterschied. Wenn bei allen Kanälen (alte und IP) in der WEB UI das Gewerk zugeordnet wird, so erscheint bei den IP Geräten (Thermostat, TFK, Sensor Aussen) überall das Gewerk nur nicht bei den Datenpunkten. Bei den alten Geräten erscheint auch bei den Datenpunkten das Gewerk. Kann es vielleicht damit zusammen hängen?

alchy
Beiträge: 7927
Registriert: 24.02.2011, 01:34

Re: Batterieabfrage Script für IP funktioniert nicht

Beitrag von alchy » 15.01.2019, 19:11

So wird es reichlich schwierig für dich ein Ergebnis zu erzielen. EQ-3 ist da nicht so konsequent.

Während der Datenpunkt BATTERY_STATE bei BidCos-RF (wenn überhaupt vorhanden, denn die meisten RF Batteriegeräte haben den ja nicht) in der Regel auf Kanal 2 liegt (z.B. HM-TC-IT-WM-W-EU) ist es bei HmIP-RF dann recht konsequent der Kanal 0.
Dafür haben dann auch viele nicht Batterie IP Geräte trotzdem den den OPERATING_VOLTAGE Datenpunkt.
Nun wirst du Schwierigkeiten haben, Gewerke und Räume usw. zur Vorselektierung zu verwenden.
Am einfachsten sollte es sein ohne Vorselektierung durch Gewerke o.ä. durch alle Datenpunkte zu rennen und die passenden dann auszufiltern.


Alchy

.................... 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.

UKu
Beiträge: 30
Registriert: 13.01.2019, 16:16

Re: Batterieabfrage Script für IP funktioniert nicht

Beitrag von UKu » 15.01.2019, 20:00

Vielen Dank Alchy für die Info. Ich dachte mir so etwas. Fragte aber lieber nochmal nach, da ich nicht so der Experte bin und bei Scripten auch Anfänger bin.

Hast Du zufällig einen Link zu so einem Script. Gibt es doch bestimmt schon hier. Ideal wäre natürlich das Selektieren der Datenpunkte "BATTERY_STATE" und "OPERATING_VOLTAGE" in einem Script.

alchy
Beiträge: 7927
Registriert: 24.02.2011, 01:34

Re: Batterieabfrage Script für IP funktioniert nicht

Beitrag von alchy » 16.01.2019, 06:31

Ich wüsste nicht das es im Forum ein Script geben würde, vielleicht hab ich ja mal Lust auf einen 20Zeiler der die Geräte mit den Werten ausgibt.

Alchy

.................... 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.

UKu
Beiträge: 30
Registriert: 13.01.2019, 16:16

Re: Batterieabfrage Script für IP funktioniert nicht

Beitrag von UKu » 16.01.2019, 10:22

Moin Alchy,

ja das wäre toll. Mach mal wenn Du Zeit, Lust und Muse hast. Da wäre bestimmt nicht nur ich Dir dankbar.

Einen schönen Tag.

alchy
Beiträge: 7927
Registriert: 24.02.2011, 01:34

Re: Batterieabfrage Script für IP funktioniert nicht

Beitrag von alchy » 16.01.2019, 14:30

Zeit Lust und Muse? auch noch zeitgleich? :mrgreen:

So sollte es auf die Schnelle funktionieren:
Das Script liest zu seiner Laufzeit die Batteriewerte der Sensorne RF & IP aus und speichert eine Liste in einer Systemvariable, falls vorhanden.

Code: Alles auswählen

! Batteriewerte aller Geräte ausgeben und in Systemvariable speichern
! v0.3 (c) by Alchy
var svout = "Name deiner Speichervariable"; ! Name der SystemVariablen Typ Zeichenkette wo gespeichert werden soll
! ++++++ Finger weg ++++++++++
string sDevId; string sChnId; string sDPId;string slist;integer count = 0;
foreach (sDevId, root.Devices().EnumUsedIDs()) {
        object oDevice = dom.GetObject(sDevId);
          foreach(sChnId, oDevice.Channels()) {
            object oChannel = dom.GetObject(sChnId);
             foreach(sDPId, oChannel.DPs().EnumUsedIDs()) {
               object oDP = dom.GetObject(sDPId);
				if(oDP.TypeName() == "HSSDP") { 
					if (  (oDP.HssType() == "BATTERY_STATE") ||  (oDP.HssType() == "OPERATING_VOLTAGE") && (!oDP.Value() == 0.0 ) ) 
						{
						count = count + 1 ;
						slist = slist#count#". "#oDevice.Name() #" Batteriespannung : "#oDP.Value().ToString(1)#" V \r\n";
						}
				}
			}
		}
}
 if ( (dom.GetObject(ID_SYSTEM_VARIABLES)).Get(svout) ) { dom.GetObject(ID_SYSTEM_VARIABLES).Get(svout).State(slist); WriteLine(slist #" \r\t in Variable: " #svout #" eingetragen");}else{WriteLine("\tAchtung: Variable: " #svout #" : für den Wert:\n"#slist #"\n\t nicht vorhanden");}
Ist aber ein ziemlich sinnloses Unterfangen, da wie ich oben schrieb viele Batteriegeräte den Wert der Versorgungsspannung nicht bieten.
Außerdem ist es ja hoffentlich nur ein "Anzeigewunsch" Reagieren darauf ist doch eher Blödsinn. Da reagiere auf das Lowbat Flag mit Servicemeldung.

Alchy
Zuletzt geändert von alchy am 18.01.2019, 15:48, insgesamt 1-mal geändert.
Grund: neue Version mit alphabetischer Sortierung

.................... 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.

UKu
Beiträge: 30
Registriert: 13.01.2019, 16:16

Re: Batterieabfrage Script für IP funktioniert nicht

Beitrag von UKu » 16.01.2019, 19:13

Hi Alchy,

super Danke, das Du Zeit und Lust hattest und die Muse Dich geküsst hat. :lol:

Ja, ich benutze es nur für Anzeigezwecke.

...und läuft! Vielen Dank. :P

UKu
Beiträge: 30
Registriert: 13.01.2019, 16:16

Re: Batterieabfrage Script für IP funktioniert nicht

Beitrag von UKu » 16.01.2019, 21:12

Lieber Alchy 8) ,

Gibt es noch die Möglichkeit einer alphabetischen Sortierung der Liste? Ich weiß, wünsch Dir was.... Aber ich kann ja mal fragen. :wink: Du als führender Scriptprofi.

Ich habe in meinem Script die Nummerrierung und die "Batteriespannung" aus der Anzeige gelöscht. Das brauch ich nicht. Gibt aber bestimmt Andere die es behalten wollen.
Hintergrund für die Sortierung ist, das ich einmal OG Geräte und einmal EG Geräte habe. Wäre toll wenn die alle sortiert untereinander stehen.


...vielleicht küsst Dich die Muse nochmal... :D

Antworten

Zurück zu „HomeMatic allgemein“