Genauerer Batteriestatus auslesbar?

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

Moderatoren: jmaus, Co-Administratoren

Baxxy
Beiträge: 2094
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 183 Mal
Danksagung erhalten: 296 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von Baxxy » 24.02.2020, 22:33

tescher hat geschrieben:
24.02.2020, 21:57
Hab die Heizkörper hinzugefügt - aber fluppt iwie nicht.
Du musst schon etwas präziser sein. Meine Heizkörper haben auch keine Batterie. :lol:
Also genaue Gerätebezeichnung bitte. Dann kann ich mal schauen.

Grüße
Baxxy
Grüße
Baxxy

Baxxy
Beiträge: 2094
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 183 Mal
Danksagung erhalten: 296 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von Baxxy » 24.02.2020, 22:43

trevyn hat geschrieben:
24.02.2020, 11:56
Ich habe für sowas ein Gewerk, in das alle batteriebetriebenen Geräte kommen. Dann kann man auch fein über dieses Gewerk iterieren und muss nicht alle Geräte einzeln im Script versorgen.
Das ist natürlich die bessere Variante. Ich habe meine Variante mal für einen Sensor gemacht und irgendwann kamen immer mehr dazu. Leider sind meine Scriptkenntnisse nicht so sehr ausgeprägt und bei Iteration und ForEach-Schleifen muss ich passen. Vielleicht postest du ja mal ein Script-Schipselchen dann kann ich noch was lernen. :)

Grüße
Baxxy
Grüße
Baxxy

Benutzeravatar
tescher
Beiträge: 37
Registriert: 25.12.2019, 01:26
Hat sich bedankt: 3 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von tescher » 24.02.2020, 22:52

Hat sich erledigt. Läuft wieder, da Semikolon versemmelt ... :mrgreen:

Baxxy
Beiträge: 2094
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 183 Mal
Danksagung erhalten: 296 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von Baxxy » 24.02.2020, 22:55

tescher hat geschrieben:
24.02.2020, 22:52
Hat sich erledigt. Läuft wieder, da Semikolon versemmelt ...
Passiert mir auch gerne mal. :wink:
Grüße
Baxxy

Hütte
Beiträge: 622
Registriert: 08.02.2017, 11:08
Hat sich bedankt: 19 Mal
Danksagung erhalten: 59 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von Hütte » 25.02.2020, 09:03

Baxxy hat geschrieben:
24.02.2020, 22:43
...
Das ist natürlich die bessere Variante. Ich habe meine Variante mal für einen Sensor gemacht und irgendwann kamen immer mehr dazu. Leider sind meine Scriptkenntnisse nicht so sehr ausgeprägt und bei Iteration und ForEach-Schleifen muss ich passen. Vielleicht postest du ja mal ein Script-Schipselchen dann kann ich noch was lernen. :)

Grüße
Baxxy

Code: Alles auswählen

var BatDev = dom.GetObject("Batteriespannung"); 
var item; 
var device;
string itemID; string text = ""; string channel_name; string batvalue; string sysvarname = "";

! Durch alle angemeldeten Geräte laufen
foreach(itemID, BatDev.EnumUsedIDs()){
  !Gerätedetails & Schnittstelle holen
  item = dom.GetObject(itemID);
  device = dom.GetObject(item.Device());
!  WriteLine(item);
!  WriteLine(device);
  sysvarname = "VAR_"#device#"_VOLT";
  
!  WriteLine(sysvarname);
    channel_name = dom.GetObject(item.DPByHssDP("OPERATING_VOLTAGE"));
!    WriteLine(channel_name);
    if(channel_name){
      batvalue = dom.GetObject(channel_name).Value();
      (dom.GetObject(ID_SYSTEM_VARIABLES).Get(sysvarname)).State(batvalue);
 
      ! Text zusammensetzen
!      text = text#"Spannung an "#item.Name()#": "#batvalue.ToString(1)#" V\n";
  }
}
!WriteLine(text);
Ich habe bei mir für jedes Gerät, das die genaue Batteriespannung liefert eine SV angelegt. Wenn das Gerät "ABC" heißt, dann heißt die zugehärige SV "VAR_ABC_VOLT" und ist vom Typ Zahl. Und diese Geräte habe ich alle einem separatem Gewerk "Batteriespannung" zugeordnet.
Zeitgetriggert wird dieses Script ausgeführt und schreibt dann die jeweilige Spannung in die zugehörige SV.
Ich benutzt die SV später in Mediola, um dann auf der Seite, die mir den Batteriestatus der jeweiligen Geräte anzeigt, die Icons entsprechend Statusregeln auszugeben.

Die auskommentierten Zeilen dienen nur dazu, wenn ich das Script teste. Dann werden sie aktiviert und die Texte werden ausgegeben. Kann man eleganter lösen, indem man am Anfang noch eine boolsche Variable, z.B. "debug" definiert, sie dann standardmäßig im Script auf false setzt, bei den "WriteLine"-Zeilen diese Variable prüft und nur wenn sie wahr ist, wird der Text ausgegeben. Dann muss man nur an einer einzigen Stelle was anpassen, um beim Script testen die Ausgaben angezeigt zu bekommen.

Aber hier kannst du sehen, wie du vorgehen mußt, wenn du durch ein Gerwerk iterierst. Und die Zwischenausgaben sind hilfreich, um beim Testen zu sehen, ob auch alles so gefunden wird, wie du erwartest.

Baxxy
Beiträge: 2094
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 183 Mal
Danksagung erhalten: 296 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von Baxxy » 25.02.2020, 22:02

Hütte hat geschrieben:
25.02.2020, 09:03
Aber hier kannst du sehen, wie du vorgehen mußt, wenn du durch ein Gerwerk iterierst. Und die Zwischenausgaben sind hilfreich, um beim Testen zu sehen, ob auch alles so gefunden wird, wie du erwartest.
Vielen Dank für das Beispielscript und deine Erklärungen. So langsam bekomme ich den Durchblick. Mal schauen was ich da draus mache. :)

Grüße
Baxxy
Grüße
Baxxy

Baxxy
Beiträge: 2094
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 183 Mal
Danksagung erhalten: 296 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von Baxxy » 25.02.2020, 22:24

Baxxy hat geschrieben:
25.02.2020, 22:02
Mal schauen was ich da draus mache.
Kurz und schnell...
Batteriestatus_SV.JPG
Batteriestatus_SV.JPG (23 KiB) 711 mal betrachtet
Gefällt mir! :D

Grüße
Baxxy
Grüße
Baxxy

mskrause
Beiträge: 129
Registriert: 13.10.2018, 20:02
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von mskrause » 26.02.2020, 12:45

Ich möchte allen Interessenten noch dieses Script von alchy zeigen:
viewtopic.php?p=485390#p485390

selbiges nutze ich seit langer Zeit und funktioniert zuverlässig

Grüße
Marco

Benutzeravatar
tescher
Beiträge: 37
Registriert: 25.12.2019, 01:26
Hat sich bedankt: 3 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von tescher » 25.03.2020, 17:49

Hat hier vllt. noch jemand 'ne Idee, warum das Script nicht läuft?
Fehler werden bei der Überprüfung nicht angezeigt ...

Code: Alles auswählen

!- Batteriestatus Devices Telegram Benachrichtigung
string chatid = "xxxxxxxxxxxxxxx"; ! chat_id des Empfängers
string botAPI = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; ! API des eingerichteten Bots

!- Fensterkontakte und Thermostate
real FTK01 = (dom.GetObject(ID_CHANNELS)).Get("FTK-01:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);
real FTK02 = (dom.GetObject(ID_CHANNELS)).Get("FTK-02:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);
real FTK03 = (dom.GetObject(ID_CHANNELS)).Get("FTK-03:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);
real FTK04 = (dom.GetObject(ID_CHANNELS)).Get("FTK-04:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);
real HKT01 = (dom.GetObject(ID_CHANNELS)).Get("HKT-01:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);
real HKT02 = (dom.GetObject(ID_CHANNELS)).Get("HKT-02:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);
real HKT03 = (dom.GetObject(ID_CHANNELS)).Get("HKT-03:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);
real HKT04 = (dom.GetObject(ID_CHANNELS)).Get("HKT-04:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);

string nachricht = "<b>*Batteriestatus*</b>
----- <b>FTK + Thermostate</b> -----
FTK WZ:   "# FTK01 #"V
FTK SZ:   "# FTK02 #"V
FTK AZ:   "# FTK03 #"V
FTK BZ:   "# FTK04 #"V
HZ WZ:    "# HKT01 #"V
HZ SZ:    "# HKT02 #"V
HZ AZ:    "# HKT03 #"V
HZ BZ:    "# HKT04 #"V";

(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:1.CMD_EXEC")).State("extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -d text='"#nachricht.ToUTF8()#"' -d chat_id="#chatid#" -d parse_mode=html");
Meine Fensterkontakte heissen FTK-01 bis FTK-04 und die Heizkörperthermostate HKT-01 bis HKT-04. Ich steh' grad auf'm Schlauch ...
Danke vorab.

Baxxy
Beiträge: 2094
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 183 Mal
Danksagung erhalten: 296 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von Baxxy » 25.03.2020, 18:33

tescher hat geschrieben:
25.03.2020, 17:49
Fehler werden bei der Überprüfung nicht angezeigt ...
Da wird ja auch nur die Syntax vom Script überprüft, aber nicht ob z.B. deine Geräte oder die entsprechenden Datenpunkte vorhanden sind.
Also entweder stimmt mal wieder etwas mit der Benamung nicht oder der Datenpunkt ist bei einem (oder mehreren) Geräten nicht vorhanden.

Grüße
Baxxy
Grüße
Baxxy

Antworten

Zurück zu „RaspberryMatic“