Temperatur auslesen

Virtualisierte CCU für Raspberry Pi und Clones

Moderator: Co-Administratoren

RouvenE
Beiträge: 207
Registriert: 11.06.2013, 19:54

Temperatur auslesen

Beitrag von RouvenE » 31.08.2019, 18:33

Hallo,

betreibe eine piVCCU3 auf meinem Raspberry 4 und möchte nun die Temperatur auslesen und in einer Variable speichern - gem. Artikel von Technikkram.

Dazu wird der Befehl "vcgencmd measure_temp" verwendet, der unter piVCCU3 nicht funktioniert. Der Workaround lautet nun:

Code: Alles auswählen

string command = „cat /sys/class/thermal/thermal_zone0/temp | awk ‚// { printf substr($1, length($1) -5, 4)/100}'“;
Das Skript wäre angepasst auf:

Code: Alles auswählen

! CPU-Temperatur Raspberry Pi3 auslesen mit vcgencmd measure_temp
! (c) Werner Weber 10.2017
string command = "cat /sys/class/thermal/thermal_zone0/temp | awk ‚// { printf substr($1, length($1) -5, 4)/100}'“;
dom.GetObject ("CUxD.CUX2801001:6.CMD_SETS").State (command);
dom.GetObject ("CUxD.CUX2801001:6.CMD_QUERY_RET").State (1);
dom.GetObject ("Temperatur Raspberry Zahl").State (dom.GetObject ("CUxD.CUX2801001:6.CMD_RETS").State());
dom.GetObject ("Temperatur Raspberry").State (dom.GetObject ("Temperatur Raspberry Zahl").Value().ToString().Substr(0,5));
Die Skriptüberprüfung wirft aber bereits folgenden Fehler raus:

Code: Alles auswählen

Error 1 at row 3 col 145 near ^.CUX2801001:6.CMD_SETS").State (command);
dom.GetObject ("CUxD.CUX2801001:6.CMD_
Parse following code failed:
! CPU-Temperatur Raspberry Pi3 auslesen mit vcgencmd measure_temp
! (c) Werner Weber 10.2017
string command = "cat /sys/class/thermal/thermal_zone0/temp | awk ‚// { printf substr($1, length($1) -5, 4)/100}'“;
Habe den Code unter Windows und auch macOS korrekt reinkopiert... gibt es hierzu eine Lösung ? Welches Zeichen im Code ist falsch ?

rbeudel
Beiträge: 277
Registriert: 29.06.2018, 17:37
System: Alternative CCU (auf Basis OCCU)
Wohnort: Essen
Hat sich bedankt: 27 Mal
Danksagung erhalten: 14 Mal

Re: Temperatur auslesen

Beitrag von rbeudel » 31.08.2019, 18:58

Hallo,

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("cat /sys/class/thermal/thermal_zone0/temp", &stdout, &strerr);
var temp = stdout.ToFloat() / 1000;
dom.GetObject("Temperatur_PiVCCU").State(temp);
hat bei mir mit raspi3 und tinkerboard funktioniert.
Viele Grüße,
Ralf


Debmatic und Openhab 4 in Proxmox 8 VM debian x86_64 auf Intel NUC mit influxdb und Grafana zur Visualisierung

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: Temperatur auslesen

Beitrag von klassisch » 31.08.2019, 19:28

rbeudel hat geschrieben:
31.08.2019, 18:58
hat bei mir mit raspi3 und tinkerboard funktioniert.
Vielen Dank, beim Orange Pi Plus 2e unter armbian funktioniert das auch.

RouvenE
Beiträge: 207
Registriert: 11.06.2013, 19:54

Re: Temperatur auslesen

Beitrag von RouvenE » 31.08.2019, 20:02

Danke, scheint zu funktionieren...

lips1
Beiträge: 103
Registriert: 13.10.2012, 20:29
Hat sich bedankt: 3 Mal

Re: Temperatur auslesen

Beitrag von lips1 » 04.09.2019, 06:14

Hallo,
ich versuche auch die Temperatur unter piVCCU3 und raspi3 auszulesen. Habe dabei das gleiche Problem wie der original Post.
Der Patch für piVCCU geht nicht. Die alternative mit Exec aufruf geht. Ich möchte aber den Exec Aufruf nicht verwenden, wegen bekannter Probleme.
Gibt es keine Möglichkeit das sauber mit CUxD zu machen?

Danke.

Lips
Rasp 3 mit piVCCU3, HM-Wired/Funk, 103 Geräte

Benutzeravatar
deimos
Beiträge: 5396
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 957 Mal
Kontaktdaten:

Re: Temperatur auslesen

Beitrag von deimos » 04.09.2019, 08:02

Hi,

was spricht gegen system.Exec? Die Probleme damit sind doch schon länger Geschichte.

Viele Grüße
Alex

lips1
Beiträge: 103
Registriert: 13.10.2012, 20:29
Hat sich bedankt: 3 Mal

Re: Temperatur auslesen

Beitrag von lips1 » 06.09.2019, 20:42

Hallo,
ändlich WE und Zeit für Homematic.

Mein Kenntnisstand bezüglich system.Exec ist, das die Funktion nicht dokumentiert ist und zu Systemabstürzen führt.
Deshalb solle man diese Funktion nicht benutzen.
Habe ich da etwas verpasst?
Kann system.Exec bedenkenlos eingesetzt werden?

Lips
Rasp 3 mit piVCCU3, HM-Wired/Funk, 103 Geräte

Benutzeravatar
deimos
Beiträge: 5396
Registriert: 20.06.2017, 10:38
System: Alternative CCU (auf Basis OCCU)
Wohnort: Leimersheim
Hat sich bedankt: 121 Mal
Danksagung erhalten: 957 Mal
Kontaktdaten:

Re: Temperatur auslesen

Beitrag von deimos » 06.09.2019, 21:34

Hi,

dokumentiert ist sie weiterhin nicht und falsch genutzt kann system.exec schon zu Problemen führen, aber die kritischen Bugs sind behoben.
Man muss halt weiterhin beachten, dass der Aufruf solange blockiert, bis das aufgerufene Programm beendet ist und dadurch blockiert dann die gesamte Rega. Bei einem einfachen cat ist die Ausführung aber sehr schnell und damit unkritisch.

Daher bedenkenlos ja, aber gedankenlos auf keinen Fall.

Viele Grüße
Alex

klassisch
Beiträge: 3974
Registriert: 24.03.2011, 04:32
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 110 Mal
Danksagung erhalten: 71 Mal

Re: Temperatur auslesen

Beitrag von klassisch » 07.09.2019, 06:03

Habe die Temp-Auslesung jetzt 1 Woche über system.exec laufen. Allerdings recht konservativ mit Abfrageintervall 10min, was für den Normalbetrieb durchaus ausreicht. Läuft stabil.
Bei meinem langjährigen Betrieb der verschiedenen CCU-Versionen hatte ich die relativ größte Problemwahrscheinlichkeit bei offenen WebUIs. Das scheint die CCU nicht wirklich zu mögen. Hatte erst gestern Abend wieder versehentlich WebUI 2.5h geöffnet und die Temp war in dieser Zeit um 6° erhöht. Und wenn ich mehrere CWebUIs gleichzeitig längere Zeit offen hatte, kam es bei schon mal zu Aufhängern. Ansonsten gilt wie so oft: Wenn man mit den Spielereien aufhört, läuft das System stabil bis zurm nächsten Update.

Daimler
Beiträge: 9115
Registriert: 17.11.2012, 10:47
System: Alternative CCU (auf Basis OCCU)
Wohnort: Köln
Hat sich bedankt: 37 Mal
Danksagung erhalten: 283 Mal

Re: Temperatur auslesen

Beitrag von Daimler » 19.11.2019, 19:34

Hallo Gemeinde,

ich erlaube mir, diesen etwas älteren Fred noch einmal zu nutzen. :roll:

Folgendes Script (geklaut von Klassisch) funktioniert ja wunderbar mit dem pi, auf dem die CCU läuft.

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("cat /sys/class/thermal/thermal_zone0/temp", &stdout, &strerr);
var temp = stdout.ToFloat() / 1000;
dom.GetObject("Sysvari").State(temp);
Aber hat vielleicht jemand einen Tipp für einen, der Scripte nur kopieren kann? 8)
Wie kann ich die Temperatur von einem anderen pi in eine Sysvar holen, der anderen Zwecken dient und keine CCU-Installation hat?
Gruß Günter

pivccx mit 3.xx in Produktiv und Testsystem mit HM-, HM-W, HMIP- und HMIP-W Geräten, HPCx Studio 4.1,
L-Gateways, RS-L-Gateways, HAP, Drap, FHZ200x, vereinzelt noch FS2x-Komponenten.
HM / HM-IP: Zur Zeit knapp 300 Komponenten mit ??? Kanälen .

Ich übernehme für alle von mir gegebenen Hinweise, Tipps und Links keine Haftung! Das Befolgen meiner Tipps ist nur für Fachkundige gedacht und erfolgt auf eigene Gefahr!

Antworten

Zurück zu „piVCCU“