Genauerer Batteriestatus auslesbar?

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

Moderatoren: jmaus, Co-Administratoren

Benutzeravatar
tescher
Beiträge: 78
Registriert: 25.12.2019, 01:26
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Genauerer Batteriestatus auslesbar?

Beitrag von tescher » 23.02.2020, 02:58

Huhu ...

in unserer bescheidenen Behausung werkeln folgende Komponenten:
  • 1x Raspberry Pi3+ mit dem aktuellsten Raspberry-Matic-Image
  • 4x Heizkörperthermostat (HmIP-eTRV-B)
  • 2x Fensterkontakt - optisch (HMIP-SWDO)
  • 1x Fensterkontakt - magnetisch (HmIP-SWDM)
Die Meldungen der Fensterkontakte lasse ich mir per Telegram auf's Handy schicken. Das klappt gut.
Jeden Morgen bekomme ich auch von einem Script die Meldung "Keine leeren Batterien" geschickt. Und genau das ist die Krux ...

Kann man das präziser machen? Ich weiss ja nicht, ob die Batterien noch 75% haben, oder nur noch 15% ...

Geht da was??

Es wäre schön - sofern es möglich ist, dass wir das evtl. hinbekommen :D

Xel66
Beiträge: 14149
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 583 Mal
Danksagung erhalten: 1497 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von Xel66 » 23.02.2020, 09:21

Ein Blick in die zum Download verfügbare Dokumentation zu den Datenpunkten würde die Frage auflösen. Wenn es nur einen Datenpunkt gibt, der nur 1/0, ja/nein, true/false abbilden kann, weil dieser Zustand intern im Aktor aus der Batteriespannung gebildet wird, dann lässt sich das auch nicht höher auflösen. Auch Scripte haben nur Zugriff auf vorhandene Datenpunkte. Alle anderen Aktoren/Sensoren mit Übermittlung der Batteriespannung (z.B. Thermostate) bilden diesen Wert als Fließkommawert ab. Dort (und nur dort) könnte man mit einer Präzisierung ansetzen. Aber eine prozentuale Angabe ist dort auch schwierig. Primärzellen "geben" ihren Ladezustand nur über die zu messende Spannung (in Verhältnis zu Betriebsstrom aka Innenwiderstand) aus. So richtig schlauer bist Du nachher auch nicht.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Benutzeravatar
Baxxy
Beiträge: 10789
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2208 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von Baxxy » 23.02.2020, 10:54

tescher hat geschrieben:
23.02.2020, 02:58
Kann man das präziser machen? Ich weiss ja nicht, ob die Batterien noch 75% haben, oder nur noch 15% ...
Geht da was??
Irgendwas geht immer. :wink: Ich lasse mir 1x wöchentlich die ausgelesene Spannung der Sensoren per Telegram schicken. Sieht z.B. so aus:
Spannung_Telegram.JPG
Spannung_Telegram.JPG (20.31 KiB) 2579 mal betrachtet
Könnte man theoretisch auch prozentual machen. Präzise würde ich es aber nicht nennen. Ich sehe das eher als Tendenz.

Grüße
Baxxy

Benutzeravatar
tescher
Beiträge: 78
Registriert: 25.12.2019, 01:26
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von tescher » 23.02.2020, 14:21

Hi @Baxxy,

das wäre doch schonmal 'ne Maßnahme.
Kannst Du mir verraten, wie ich das umsetzen könnte?

LG, Tom

Benutzeravatar
Baxxy
Beiträge: 10789
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2208 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von Baxxy » 23.02.2020, 14:42

tescher hat geschrieben:
23.02.2020, 14:21
Kannst Du mir verraten,
Klar. Ich lese per Script die Datenpunkte "OPERATING_VOLTAGE" von Kanal 0 der Sensoren aus und verpacke sie in eine Telegram Nachricht.
tescher hat geschrieben:
23.02.2020, 14:21
wie ich das umsetzen könnte?
Das hängt natürlich stark von deinen Fähigkeiten ab und auf welchem Wege (Email, Telegram, Pushover etc) dich die Info's erreichen sollen.

Grüße
Baxxy

Benutzeravatar
tescher
Beiträge: 78
Registriert: 25.12.2019, 01:26
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von tescher » 23.02.2020, 15:11

Das ist schonmal ein Gedankenanstoß.
Wenn ich scheitere, würde ich mich nochmal melden.
Herzlichen Dank.

Benutzeravatar
tescher
Beiträge: 78
Registriert: 25.12.2019, 01:26
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von tescher » 23.02.2020, 20:55

Da war ich wohl etwas zu "großkotzig" ...
Ich weiss nicht wirklich, wie ich es umsetzen soll.
Kannst Du mir vielleicht mal hier Dein Script mal hochladen? (https://paste.escher.cc)
Du kannst ja gerne die Telegram-Daten unkenntlich machen.
Herzlichen Dank vorab.

LG, Tom

Benutzeravatar
Baxxy
Beiträge: 10789
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2208 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von Baxxy » 23.02.2020, 23:32

tescher hat geschrieben:
23.02.2020, 20:55
Da war ich wohl etwas zu "großkotzig" ...
Ich weiss nicht wirklich, wie ich es umsetzen soll.
Ehrlichkeit kommt immer gut. Daher hier die etwas gekürzte Version. :)

Code: Alles auswählen

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

!- Klimasensoren
real klaussen = (dom.GetObject(ID_CHANNELS)).Get("Klima Aussen Sensor: STHO:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);
real klinnen = (dom.GetObject(ID_CHANNELS)).Get("Klima Innen Sensor: STHD:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);
real klschupp = (dom.GetObject(ID_CHANNELS)).Get("Klima Schuppen Sensor: STHD:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);

string nachricht = "<b>*Batteriestatus*</b>
----- <b>Klima-Sensoren</b> -----
Aussen:         "# klaussen #"V
Innen:            "# klinnen #"V
Schuppen:    "# klschupp #"V";

(dom.GetObject(ID_DATAPOINTS).Get("CUxD.CUX2801001:3.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");
Du musst nur die Namen von Kanal 0 der jeweiligen Sensoren eintragen. Sehen/ändern kann man die wenn man in der Geräteübersicht unten zuerst auf "Baumstruktur öffnen" klickt. Das sieht dann in meinem Beispiel so aus:
STHO_Benamung.JPG
Ich benutze zum versenden der Nachricht CUxD. Wenn du das auch so benutzen möchtest, und noch nicht eingerichtet hast, empfehle ich dir mal hier bei dtp's zPNP unter Vorraussetzungen nachzulesen.
Wie es ohne CUxD geht hat blackhole hier beschrieben.

Viel Erfolg!
Und wenn's nicht klappt einfach fragen.

Grüße
Baxxy

Benutzeravatar
tescher
Beiträge: 78
Registriert: 25.12.2019, 01:26
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von tescher » 24.02.2020, 00:02

Schon mal vielen Dank.
Irgendwas hakt aber noch ...

hier mal mein Script ...

Code: Alles auswählen

!- Batteriestatus Devices Telegram Benachrichtigung
string chatid = "-1943856452609"; ! chat_id des Empfängers
string botAPI = "1385647285:RFGTZHKcpQBXsUIeP5Zp1Byfjxg88t7l-y4"; ! API des eingerichteten Bots

!- Klimasensoren
real ftkbz = (dom.GetObject(ID_CHANNELS)).Get("Fensterkontakt Bad: FTK-BZ:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);
real ftksz = (dom.GetObject(ID_CHANNELS)).Get("Fensterkontakt Schlafzimmer: FTK-SZ:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);
real ftkwz = (dom.GetObject(ID_CHANNELS)).Get("Fensterkontakt Wohnzimmer: FTK-WZ:0").DPByHssDP("OPERATING_VOLTAGE").Value().ToString(1);

string nachricht = "<b>*Batteriestatus*</b>
----- <b>FTK + Thermostate</b> -----
FTK Bad:       "# ftkbz #"V
FTK SZ:        "# ftksz #"V
FTK WZ:        "# ftkwz #"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");
die Telegram-Daten sind natürlich verfremdet.
Meine Fensterkontakte heissen FTK-BZ, FTK-SZ, FTK-WZ. Das hab ich angepasst, und noch das CUxD-Gerät auf kanal 1 statt 3 - korrekt, oder?

Ich versende meine TG's auch mit CUxD - das läuft schon länger.

Gruß, Tom

Benutzeravatar
Baxxy
Beiträge: 10789
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 604 Mal
Danksagung erhalten: 2208 Mal

Re: Genauerer Batteriestatus auslesbar?

Beitrag von Baxxy » 24.02.2020, 00:16

tescher hat geschrieben:
24.02.2020, 00:02
und noch das CUxD-Gerät auf kanal 1 statt 3 - korrekt, oder?
Das ist egal, der hat ja normalerweise 16 Kanäle. :)
tescher hat geschrieben:
24.02.2020, 00:02
Irgendwas hakt aber noch ...
Es sind aber alles HmIP-SWDO?
Mach mal einen Screenshot von der Benamung wenn die Baumstruktur offen ist.

Antworten

Zurück zu „RaspberryMatic“