Heizöltank auslesen und Preis nach Inhalt berechnen

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

maxxiger
Beiträge: 84
Registriert: 12.05.2016, 11:16
Hat sich bedankt: 21 Mal
Danksagung erhalten: 3 Mal

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von maxxiger » 10.03.2021, 18:01

matze-pe hat geschrieben:
26.08.2013, 09:11

Folgende Systemvariabeln habe ich mir angelegt:
Heizoeluebersicht
Heizoelbestand
Heizoelfreiraum
Heizoelprozent
Heizoelpreis
Heizoelgesamtpreis


CCU2:
Filezilla:
https://filezilla-project.org/ -> Ordner/Datei Struktur unter /usr/local/addons/heizoel/ anlegen -> Berechtigung der heizoel.tcl auf 755 setzen
Server: sftp://192.168.X.XX
User:root
Passwort: MuZhlo9n%8!G
Port: 22


http://www.homematic-inside.de/software/cuxdaemon -> Performance schonender Aufruf
CUxD Gerätetyp: System (28) erstellt


Script im Programm:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("tclsh /usr/local/addons/heizoel/heizoel.tcl");

Programm:
programm.JPG


heizoel.tcl

Code: Alles auswählen

load tclrega.so
# Heiölwerte Zeichenkette

set url http://192.168.x.x/xml     # IP-Adresse des Tanksensors, mit der XML Schnittstelle

exec /usr/bin/wget -q -O /usr/local/addons/heizoel/heizoel.xml $url

set f [open "/usr/local/addons/heizoel/heizoel.xml"]

set input [read $f]

close $f


# Werte aus XML Datei auslesen
# =============================
regexp "<tankLevel>(.*?)</tankLevel>" $input dummy tank  ; #Bestand in L
regexp "<tankPercent>(.*?)</tankPercent>" $input dummy prozent  ; #Prozentual


# Berechung auf 4 Tanks
# ======================
set alletanks [expr {$tank * 4}];
set freiraum [expr {4000-$alletanks}];


# Werte in Variabel schreiben
# =============================
set rega_cmd ""
append rega_cmd "var w0 = dom.GetObject('Heizoeluebersicht');"
append rega_cmd "w0.State('Bestand: $alletanks L ($prozent %)\nFreiraum: $freiraum L');"

append rega_cmd "var w1 = dom.GetObject('Heizoelbestand');"
append rega_cmd "w1.State('$alletanks');"

append rega_cmd "var w2 = dom.GetObject('Heizoelfreiraum');"
append rega_cmd "w2.State('$freiraum');"

append rega_cmd "var w3 = dom.GetObject('Heizoelprozent');"
append rega_cmd "w3.State('$prozent');"


rega_script $rega_cmd






Viele Grüße
Matze

Hallo Zusammen,

ich habe die gleiche Ausrüstung wie Matze und habe lt. seiner Anleitung (vielen Dank dafür!) versucht alles außer dem Preis (vorerst) in die lt. Anleitung angelegten Systemvariablen schreiben zu lassen.

Leider werden die Systemvariablen nicht befüllt. Auch nicht, wenn ich das Programm manuell starte/ausführe.

Ich habe die o.g. Systemvariablen (sh. Screenshot) angelegt.
Dann habe ich auf meiner CCU3 die Ordnerstruktur lt. obiger Anleitung angelegt und dem Ordner "heizoel" sowie der Datei "heizoel.tcl" die Berechtigung auf 755 gesetzt (sh. screenshot)
Dann habe ich ein CuxD Gerät, Typ System 28, erstellt und in der CCU3 aus dem Posteingang übernommen.
Dann habe ich in der Datei "heizoel.tcl", die auf der CCU3 im Ordner "heizoel" liegt die IP meiner Tecson-Box eingetragen (sh. screenshot)

Hat jemand eine Idee, woran es liegen könnte, dass meine Sysvariablen nicht befüllt werden? Liegt es vielleicht an der "CuxD-Adresse" meines in CuxD angelegten Gerätes? Oder liegt es evtl. daran, dass die xml meiner Tecson-Box anders aufgebaut ist?

Vielen Dank!
Dateianhänge
tecson_xml.PNG
xml-Datei meiner Tecson-Box
sysvariablen_angelegt.PNG
angelegte Systemvariablen
sysvariablen_angelegt.PNG (13.85 KiB) 979 mal betrachtet
skript_im_programm.PNG
Skript im Programm
skript_im_programm.PNG (4.92 KiB) 979 mal betrachtet
programm_heizoelabfrage.PNG
Programm "Heizoelabfrage"
leere_sysvariablen.PNG
leere/nicht befüllte Systemvariablen
leere_sysvariablen.PNG (15.66 KiB) 979 mal betrachtet
heizoel_tcl_datei.PNG
Datei "heizoel.tcl"
cuxd_geraet.PNG
mein CuxD-Gerät
berechtigung1.PNG
Berechtigung Ordner "heizoel"
berechtigung_heizoel_tcl_datei.PNG
Berechtigung Datei "heizoel.tcl"

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von matze-pe » 10.03.2021, 18:24

Die XML Datei wird nicht im Verzeichnis angezeigt, d.h. Sie wird nicht heruntergeladen und kann Verarbeitet werden.

Erstell die TCL Datei bitte einmal neu mit dem Editor „notepad++“, und Speicher daraus eine TCL Datei.
Manchmal passen manche Zeilenumbrüche nicht und die Datei ist fehlerhaft.


Gruß
Matze
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

maxxiger
Beiträge: 84
Registriert: 12.05.2016, 11:16
Hat sich bedankt: 21 Mal
Danksagung erhalten: 3 Mal

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von maxxiger » 11.03.2021, 21:37

matze-pe hat geschrieben:
10.03.2021, 18:24
Die XML Datei wird nicht im Verzeichnis angezeigt, d.h. Sie wird nicht heruntergeladen und kann Verarbeitet werden.

Erstell die TCL Datei bitte einmal neu mit dem Editor „notepad++“, und Speicher daraus eine TCL Datei.
Manchmal passen manche Zeilenumbrüche nicht und die Datei ist fehlerhaft.


Gruß
Matze
Hallo Matze,

vielen Dank für den Hinweis. Ich hatte die Datei vorher tatsächlich nur mit dem "normalen" Editor bearbeitet und die Dateiendung ".tcl" beim speichern manuell reingeschrieben.

Ich habe das nun nach Deinem Hinweis mit dem notepad++ gemacht und die Datei "Speichern unter" und als Dateityp "Tool Command Language file" (.tcl) gespeichert und anschließend mit FileZilla auf die CCU3 hochgeladen (sh. Screenshot). Danach habe ich das Programm auf der CCU3 (heizoelabfrage) manuell angestoßen.

Leider wird trotzdem keine der Variablen befüllt.

Liegt es vielleicht daran, dass der Aufbau meiner Tecson-xml sich von Deiner unterscheidet (ich habe 4 Tanksensoren)? Oder liegt es daran, dass die Adresse des CuxD-Geräts falsch ist und somit mit dem Programmlauf nichts aufgerufen wird?

Jedenfalls wird in dem Verzeichnis, in dem sich die "heizoel.tcl" befindet, keine xml-Datei angezeigt und die angelegten "Heizöl-Variablen" bleiben leer.

Hast Du eine Idee?

Vielen Dank!
Dateianhänge
ordner_heizoel.PNG
Ordner "heizoel" mit Datei "heizoel.tcl"
heizoel_tcl_datei_notepad++.PNG
Datei "heizoel.tcl" in notepad++

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von matze-pe » 13.03.2021, 10:42

Wenn du die URL im Browser öffnest, erscheint die XML Ausgabe?
Also bei dir http://192.168.178.110/xml ?

In Zeile 6 lädt er die XML Datei herunter, und das passiert schon nicht.

Nimm mal bitte die kommentierte Beschriftung "# IP-Adresse ..." in Zeile 4 weg, und entferne die Leerzeichen hinter der URL.
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

Antworten

Zurück zu „Projektvorstellungen“