OWL USB - Leistungsmesser für Strom

Selbstbauten, IRTrans, Vellemann K8055 / VM110, ALLNET Ethernet System:
ALLNET ALL3006, ALL3015, ALL3028, ALL3029, ALL3075, ALL3076, ALL4000, ALL4039

Moderator: Co-Administratoren

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: OWL USB - Leistungsmesser für Strom

Beitrag von Tobias78 » 29.06.2013, 13:48

spaceduck hat geschrieben:Aber gern... :wink:

Anbei das Python Skript.
Hallo Spaceduck,
ich habe nun auch den OWL Intuition Gateway am laufen und würde mir gern den Verbrauch in Homeputer reinholen. Kann das Python Skript direkt auf der CCU laufen?
Hast Du jetzt schon positive Langzeiterfahrung gesammelt?
Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

spaceduck
Beiträge: 447
Registriert: 02.06.2010, 08:07
Hat sich bedankt: 1 Mal
Danksagung erhalten: 9 Mal

Re: OWL USB - Leistungsmesser für Strom

Beitrag von spaceduck » 30.06.2013, 08:18

Hallo Tobias,

Der owl läuft stabil und die angezeigten Werte passen im Vergleich zum Hauptzähler.
Die CCU hat meines Wissens keinen Python interpreter an board, damit wird das Script auch nicht laufen. Mit Homeputer kenn ich mich nicht aus. Aber Python gibts auch für Windows und da der Homeputer ja einen 7/24 Win PC benötigt solltest Du das Script wohl da laufen lassen.
Allerdings gibt das Script die Werte cacti konform aus. Evtl. musst Du die Ausgabe anpassen. Wie Du Die Werte dann in Homeputer bringst, damit kann ich leider nicht helfen.

Jan

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: OWL USB - Leistungsmesser für Strom

Beitrag von Tobias78 » 30.06.2013, 09:08

Hallo Jan,
Homeputer braucht zum Glück keinen 24/7 PC sondern es reicht eine CCU1 aus.
Hmm, mangels Servers müsste man irgendwie Dein Skript in ein TCL Skript umwandeln um die Werte dann über die CCU einlesen zu können. Da ich weder Python noch TCL Spreche, wird das ein schwieriges unterfangen.
Meine Werte passen jetzt zum Hauptzähler auf ~5% genau. Ich gebe allerdings vor, dass meine Netzspannung bei 265V liegen würde. Vorher (bei 230V Einstellung) waren die Werte immer reproduzierbar ~15% zu niedrig.
Weist Du eigentlich, was man auf der Owlintuition Webseite unter Einstellungen/Push eintragen kann/muss?
Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: OWL USB - Leistungsmesser für Strom

Beitrag von Tobias78 » 01.07.2013, 19:47

Hallo Forum,
mein Lieblingsinformatiker war so freundlich und hat mir das Python Skript in TCL konvertiert:

Code: Alles auswählen

#!/bin/tclsh
# sample receive buffer:
# "<electricity id='443719000861'><signal rssi='-52' lqi='13'/><battery level='100%'/><chan id='0'><curr units='w'>209.00</curr><day units='wh'>2412.21</day></chan><chan id='1'><curr units='w'>32.00</curr><day units='wh'>527.07</day></chan><chan id='2'><curr units='w'>32.00</curr><day units='wh'>1505.04</day></chan></electricity>"

package require udp

# A multicast demo.
proc udpEvent {chan} {
    set data [read $chan]
    set peer [fconfigure $chan -peer]
    puts "$peer [string length $data] '$data'"
    regexp {(<chan id='0'><curr units='w'>)([0-9]*\.?[0-9]+)} $data all first second
    puts "POWERCONSUMPTION: $second"
    # Send acknowledge to OWL and exit
    puts -nonewline $peer "ack"
    if {[string match "QUIT*" $data]} {
        close $chan
        set ::forever 1
    }
    return
}

set group 224.192.32.19
set port  22600
set s [udp_open $port]
fconfigure $s -buffering none -blocking 0
fconfigure $s -mcastadd $group -remote [list $group $port]
fileevent $s readable [list udpEvent $s]
set ::forever 0
vwait ::forever
exit
Die Nummer 224.192.32.19 muss wahrscheinlich durch die IP meines OW-Gateways ersetzt werden!? Der Port ist immer gleich? Mit welchem Befehl kann ich denn die Powerconsumption nun in eine Systemvariable schreiben?

Danke und Gruß,
Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: OWL USB - Leistungsmesser für Strom

Beitrag von Tobias78 » 01.07.2013, 19:58

Nachtrag:
Das TCL Skript habe ich nun über Telnet versucht zu starten. Ich bekomme allerdings die folgenden Fehlermeldungen.
tclerror.JPG
tclerror.JPG (19.58 KiB) 5573 mal betrachtet
Kann jemand helfen?
Danke und Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: OWL USB - Leistungsmesser für Strom

Beitrag von Tobias78 » 13.07.2013, 14:29

Hallo Forum,
ich kann nun Fortschritte vermelden:

Skript owl.tcl

Code: Alles auswählen

package require udp
load libudp1.0.8.so
load tclrega.so
proc udpEvent {chan} {
    set data [read $chan]
    set peer [fconfigure $chan -peer]
	set second ""
	set dayunits "0"
	set dayunitsEUR "0.00"
    set group [lindex [fconfigure $chan -remote] 0]
#    puts "$peer ($group) [string length $data] '$data' {[fconfigure $chan]}"
    # Debug - Print received packet
#    puts $data
    regexp {(<chan id='0'><curr units='w'>)([0-9]*\.?[0-9]+)} $data all first second
    puts "Aktueller Verbrauch: $second"
	regexp {(<day units='wh'>)([0-9]*\.?[0-9]+)} $data all first dayunits
	set dayunitsEUR [expr $dayunits/1000*0.22]
	puts "Gesamtverbrauch heute: $dayunits"
	puts "Gesamtkosten heute: $dayunitsEUR"
    # Set write value in CCU
    set rega_cmd ""
    append rega_cmd "var Strom0 = dom.GetObject('Aktueller_Stromverbrauch');"
	append rega_cmd "var Strom1 = dom.GetObject('K_Strom_heute');"
    append rega_cmd "Strom0.State('$second');"
    append rega_cmd "Strom1.State('$dayunitsEUR');"
    rega_script $rega_cmd
    return
	exit
}
set group1 224.192.32.19
set port  22600
set s [udp_open $port]
fconfigure $s -buffering none -blocking 0
fconfigure $s -mcastadd $group1 -remote [list $group1 $port]
fileevent $s readable [list udpEvent $s]
# Announce our presence and run
set ::forever 0
vwait ::forever
Ausgabe über telnet mit tclsh owl.tcl:
Ergebnis.JPG
Ergebnis.JPG (13.02 KiB) 5527 mal betrachtet
---und die passenden Systemvariablen:
aktueller_Stromverbrauch.JPG
aktueller_Stromverbrauch.JPG (16.05 KiB) 5528 mal betrachtet
k_Strom_heute.JPG
k_Strom_heute.JPG (15.2 KiB) 5528 mal betrachtet
Die TCL-Datei würde einmal gestaret werden und liefe dann endlos weiter. Bin mir jetzt nicht sicher ob sich das mit CUxD Systemexec Ersatz verträgt...

So rufe ich das Skript über ein WebUI Programm auf:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State("tclsh /usr/local/addons/owl/owl.tcl");
dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State();
Gruß, Tobias.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

Tobias78
Beiträge: 1464
Registriert: 27.06.2010, 01:01
Wohnort: Braunschweig
Hat sich bedankt: 4 Mal

Re: OWL USB - Leistungsmesser für Strom

Beitrag von Tobias78 » 19.07.2013, 22:23

So, nun funktioniert alles - sogar die Einbindung als "Zusatzsoftware". Aufruf per Skript war nicht zielführend.
Das lauffähige Ergebnis ist hier dokumentiert.
--------------------------------------------
Im Einsatz und empfehlenswert:
RaspberryMatic,IO.Broker, Homeputer Studio; CuXD; PocketControl, HomeStatus, Robonect, Alexa, io.Broker
------------------------------------------

Antworten

Zurück zu „Sonstige Hardware (Vellemann USB-Board, IRTrans, ALLNET)“