Daten aus CCU auslesen für externe Verwendung (zb. IPS)
Moderator: Co-Administratoren
Daten aus CCU auslesen für externe Verwendung (zb. IPS)
Nachdem ja seitens IPS (derzeit) nicht geplant ist HomeMatic zu unterstützen (siehe: http://www.ipsymcon.de/forum/showthread.php?t=3702 ) ich aber trotzdem dieses System verwenden werde, suche ich nach einer möglichkeit verschiedene Daten aus der CCU zu lesen.
Ist es möglich die Werte der Wandthermostate zb. in eine Datei zu schreiben und diese zb. mittels FTP von der CCU zu lesen?
lg
tom
Ist es möglich die Werte der Wandthermostate zb. in eine Datei zu schreiben und diese zb. mittels FTP von der CCU zu lesen?
lg
tom
- a.krypthul
- Beiträge: 41
- Registriert: 27.01.2008, 13:51
- Danksagung erhalten: 1 Mal
Re: Daten aus CCU auslesen für externe Verwendung (zb. IPS)
Hi tomtom,
that´s easy
you have to start a tcl-script from a web-ui program periodically:
(put it under /etc/config/ then it will stay there after reboot or put it under /var/ = gone after reboot
don´t forget to change the file attribute to executable:
using telnet or some ftp-client allow that too (e.g. filezilla)
Activate the script in the web-ui - and there it goes
the file will look like
Remark:
I would highly recommend to store the log-data in the ram of the CCU (/var/) not in the flash (/etc/config/) not to shorten the lifetime of the flash memory, which is of course by some thousand write-cycles, you won´t reach that manually - but it can be done easily by programs)
Bye
Alex
that´s easy
you have to start a tcl-script from a web-ui program periodically:
- - condition time periodical (e.g. every 5 minutes)
- activity "script" with the following line:
"system.Exec("/etc/config/rega DAA0245873:1 TEMPERATURE /var/log/testfile.dat Y");"
- call the script "rega" located in "etc/config/" with parameters e.g.
DAA0245893:1 - weather sensor
TEMPERATURE - what info do you want - HEATERS have other params
/var/log/testfile.dat - the logfile where to write in
Y - append the logfile -> growing or not -> only one line
(put it under /etc/config/ then it will stay there after reboot or put it under /var/ = gone after reboot
Code: Alles auswählen
#!/bin/tclsh
load tclrega.so
proc readvalue {p1 p2 p3 p4} {
# build rega-script to query data
set cmd ""
append cmd "var id = \"$p1\";"
append cmd "var type = \"$p2\";"
append cmd "string sLastTime = \"\";"
append cmd "integer iSeconds = 0;"
append cmd "var obj = dom.GetObject(\"BidCos-RF.\" # id # \".\" # type );"
append cmd "var devs = type # \"@\" # id # \" = \" # obj.State();"
append cmd "if(obj)"
append cmd " {"
append cmd " if( obj.IsTypeOf( OT_CHANNEL ) )"
append cmd " {"
append cmd " sLastTime = obj.LastDPActionTime();"
append cmd " iSeconds = obj.LastDPActionTimeSeconds();"
append cmd " }"
append cmd " if( obj.IsTypeOf( OT_DP ) )"
append cmd " {"
append cmd " sLastTime = obj.Timestamp();"
append cmd " iSeconds = obj.TimestampSeconds();"
append cmd " }"
append cmd " if( obj.IsTypeOf( OT_PROGRAM ) )"
append cmd " {"
append cmd " sLastTime = obj.ProgramLastExecuteTime();"
append cmd " iSeconds = obj.ProgramLastExecuteTimeSeconds();"
append cmd " }"
append cmd " if( iSeconds == 0 )"
append cmd " {"
append cmd " sLastTime = \"\";"
append cmd " }"
append cmd " else"
append cmd " {"
append cmd " sLastTime = sLastTime.Format(\"%d.%m.%Y %H:%M:%S\");"
append cmd " }"
append cmd " }"
# execute rega-script
array set result [rega_script "$cmd" ]
# get data from rega-script
set data $result(devs)
set ltime $result(sLastTime)
# write to file
if { $p4 == "Y" } then {
set fhandle [open $p3 a]
} else {
set fhandle [open $p3 w]}
puts $fhandle [concat $ltime $data]
close $fhandle
}
set objID [lindex $argv 0]
set objData [lindex $argv 1]
set filename [lindex $argv 2]
set fileappend [lindex $argv 3]
readvalue $objID $objData $filename $fileappend
Code: Alles auswählen
chmod 007 /etc/config/rega
Activate the script in the web-ui - and there it goes
the file will look like
Code: Alles auswählen
12.03.2008 18:10:01 TEMPERATURE@DAA0245873:1 = 20.200000
12.03.2008 18:11:01 TEMPERATURE@DAA0245873:1 = 20.200000
12.03.2008 18:12:01 TEMPERATURE@DAA0245873:1 = 20.200000
12.03.2008 18:13:01 TEMPERATURE@DAA0245873:1 = 20.200000
12.03.2008 18:14:01 TEMPERATURE@DAA0245873:1 = 20.200000
12.03.2008 18:15:01 TEMPERATURE@DAA0245873:1 = 20.200000
12.03.2008 18:16:01 TEMPERATURE@DAA0245873:1 = 20.200000
12.03.2008 18:17:01 TEMPERATURE@DAA0245873:1 = 20.300000
12.03.2008 18:18:01 TEMPERATURE@DAA0245873:1 = 20.300000
I would highly recommend to store the log-data in the ram of the CCU (/var/) not in the flash (/etc/config/) not to shorten the lifetime of the flash memory, which is of course by some thousand write-cycles, you won´t reach that manually - but it can be done easily by programs)
Bye
Alex
-
- Beiträge: 710
- Registriert: 09.03.2007, 16:38
- System: sonstige
- Wohnort: Eichwalde bei Berlin
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 24 Mal
- Kontaktdaten:
Re: Daten aus CCU auslesen für externe Verwendung (zb. IPS)
Hi Alex
für die IPS-User ist das zumindest erst einmal eine erste Lösung ...
aber du hast folgendes geschrieben :
-----------------
First of all a little bit about the HomeMatic basic-communication to understand the solution:
Internally HM-software uses " a kind of" rpc-calls (remote procedure calls) to communicate between
- the "logic-processor (system)"
- the "wired controller"
- the "wireless controller"
ec.ec.
-----------------
was erst einmal heisst, Daten können nur auf "Anstoß" von aussen erhalten werden.
IPS lebt aber gerade davon "jedes Ereignis mitzubekommen" und das sofort.
Gibt es keinerlei Möglichkeit oder welche gibt es , daß jedes in der HM Zentrale eintreffende
Ereignis sofort nach "außen" gegeben wird , ohne ein Polling ?
Gruss
Marco
für die IPS-User ist das zumindest erst einmal eine erste Lösung ...
aber du hast folgendes geschrieben :
-----------------
First of all a little bit about the HomeMatic basic-communication to understand the solution:
Internally HM-software uses " a kind of" rpc-calls (remote procedure calls) to communicate between
- the "logic-processor (system)"
- the "wired controller"
- the "wireless controller"
ec.ec.
-----------------
was erst einmal heisst, Daten können nur auf "Anstoß" von aussen erhalten werden.
IPS lebt aber gerade davon "jedes Ereignis mitzubekommen" und das sofort.
Gibt es keinerlei Möglichkeit oder welche gibt es , daß jedes in der HM Zentrale eintreffende
Ereignis sofort nach "außen" gegeben wird , ohne ein Polling ?
Gruss
Marco
Gruss Marco Pniok
http://www.piotek-smarthome.de
Systemhaus für SmartHome mit HomeMatic, HomeMatic IP, PioTek, CUxD, IP-Symcon, Symbox Pro, Shelly, Eltako, free@home, PEHA, Synco Living.
http://www.piotek-smarthome.de
Systemhaus für SmartHome mit HomeMatic, HomeMatic IP, PioTek, CUxD, IP-Symcon, Symbox Pro, Shelly, Eltako, free@home, PEHA, Synco Living.
- a.krypthul
- Beiträge: 41
- Registriert: 27.01.2008, 13:51
- Danksagung erhalten: 1 Mal
Re: Daten aus CCU auslesen für externe Verwendung (zb. IPS)
Hi Marco,
the different engines communicate via IP-ports, that means, there is tcp and udp-traffic on the localhost-address 127.0.0.1
The simplest way now, is to sniff these tcp/udp packets by a process running on the CCU - this process has to inform the "external client" about the events (interpret them) or redirect the raw packets to the "external client" (who interprets them).
This is not only theory:
if you look at the "hmbinrpc" application: kaju is so kind to host it on his homematic-blog site, you will find a part "tcplog".
Included are two programs for the CCU and a calling script as an example.
The programs are:
tcpdump - the packetsniffer
socat - used to redirect the ascii-output of tcpdump to a definable tcp-port
(if you don´t know these great tools - try google)
The .Net application acts as the "external client" which shows in realtime the traffic on the CCU (the traffic is filtered of course - to get rid of the tons of html-stuff from the web-gui)
You don´t need the .Net application- there is a little application "netcat" for windows - (the older brother of socat) you can it use in a command-shell on your pc (dos-box) to connect to the CCU-port socat is offering.
If you have further question - just ask
Alex
there are possibilities:mpcc hat geschrieben: Gibt es keinerlei Möglichkeit oder welche gibt es , daß jedes in der HM Zentrale eintreffende
Ereignis sofort nach "außen" gegeben wird , ohne ein Polling ?
the different engines communicate via IP-ports, that means, there is tcp and udp-traffic on the localhost-address 127.0.0.1
The simplest way now, is to sniff these tcp/udp packets by a process running on the CCU - this process has to inform the "external client" about the events (interpret them) or redirect the raw packets to the "external client" (who interprets them).
This is not only theory:
if you look at the "hmbinrpc" application: kaju is so kind to host it on his homematic-blog site, you will find a part "tcplog".
Included are two programs for the CCU and a calling script as an example.
The programs are:
tcpdump - the packetsniffer
socat - used to redirect the ascii-output of tcpdump to a definable tcp-port
(if you don´t know these great tools - try google)
The .Net application acts as the "external client" which shows in realtime the traffic on the CCU (the traffic is filtered of course - to get rid of the tons of html-stuff from the web-gui)
You don´t need the .Net application- there is a little application "netcat" for windows - (the older brother of socat) you can it use in a command-shell on your pc (dos-box) to connect to the CCU-port socat is offering.
If you have further question - just ask
Alex
-
- Beiträge: 710
- Registriert: 09.03.2007, 16:38
- System: sonstige
- Wohnort: Eichwalde bei Berlin
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 24 Mal
- Kontaktdaten:
Re: Daten aus CCU auslesen für externe Verwendung (zb. IPS)
thank you Alex
gehe ich dann richtig in der Annahme,
- daß solch eine Information eines Clients in der CCU gar nicht vorgesehen ist ?
- daß Software wie homeputer CL "nur" über die xmlrpc Schnittstelle kommuniziert ?
- daß damit eine "echte" Visualisierung gar nicht gegeben ist und nur z.b mit der von
Dir vorgeschlagenen Lösung derzeit machbar ist ?
Gruss Marco
gehe ich dann richtig in der Annahme,
- daß solch eine Information eines Clients in der CCU gar nicht vorgesehen ist ?
- daß Software wie homeputer CL "nur" über die xmlrpc Schnittstelle kommuniziert ?
- daß damit eine "echte" Visualisierung gar nicht gegeben ist und nur z.b mit der von
Dir vorgeschlagenen Lösung derzeit machbar ist ?
Gruss Marco
Gruss Marco Pniok
http://www.piotek-smarthome.de
Systemhaus für SmartHome mit HomeMatic, HomeMatic IP, PioTek, CUxD, IP-Symcon, Symbox Pro, Shelly, Eltako, free@home, PEHA, Synco Living.
http://www.piotek-smarthome.de
Systemhaus für SmartHome mit HomeMatic, HomeMatic IP, PioTek, CUxD, IP-Symcon, Symbox Pro, Shelly, Eltako, free@home, PEHA, Synco Living.
- a.krypthul
- Beiträge: 41
- Registriert: 27.01.2008, 13:51
- Danksagung erhalten: 1 Mal
Re: Daten aus CCU auslesen für externe Verwendung (zb. IPS)
@mpcc
to be honest: I don´t know ! I have the same docu (official functionality) like all others
Alex
to be honest: I don´t know ! I have the same docu (official functionality) like all others
Alex
-
- Beiträge: 710
- Registriert: 09.03.2007, 16:38
- System: sonstige
- Wohnort: Eichwalde bei Berlin
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 24 Mal
- Kontaktdaten:
Re: Daten aus CCU auslesen für externe Verwendung (zb. IPS)
ok Alex
aber mit deinen Programmierkenntnissen kannst du ja viel mehr erkennen
Nächstes Problem :
welches auch gerade hier : http://homematic-forum.de/forum/viewtop ... 7739#p7385 angefangen wird zu diskutieren.
Wir brauchen und sicherlich alle anderen User auch , die Möglichkeit die Anwesenheit festzustellen.
Das kann man sicherlich später über Bewegungsmelder und Taster ec. machen, aber so richtig gefällt
mir das nicht. Für unsere Kunden und alle Hausautomatisierer haben wir schon länger was im Kopf ,
was sich vielleicht jetzt realisieren lässt.
Die CCU scheint bei einem Reboot die bisher angemeldeten Komponenten abzufragen. Dabei scheint sie
nur deren Existenz zu prüfen.
Wenn Sie das kann , dann muss es auch Befehle geben um Geräte nicht zu schalten ec. sondern nur auf
Ihre Existenz hin zu prüfen.
Jetzt wäre es natürlich traumhaft, wenn wir jedem Familienmitglied an den Schlüsselbund einen kleinen
Schlüsselbund-Handsender "verpassen" und die CCU1 regelmäßig prüfen lassen ob dieser Sender existiert !
Das geht zwar auf die Batterien, aber der Effekt ist dies natürlich wert. Verlässt jemand das Haus und
der Sender gerät außer Reichweite, kann die Anwesenheitsvariable des Familienmitglieds auf false gesetzt
werden und entsprechende Aktionen auslösen. Natürlich auch umgekehrt.
Wir bräuchten also ein Programm auf der CCU, welches die Anwesenheit eines oder mehrerer Sender
in bestimmten Zeitintervallen prüft und eine zugeordnete Variable setzt.
Gruss Marco
aber mit deinen Programmierkenntnissen kannst du ja viel mehr erkennen
Nächstes Problem :
welches auch gerade hier : http://homematic-forum.de/forum/viewtop ... 7739#p7385 angefangen wird zu diskutieren.
Wir brauchen und sicherlich alle anderen User auch , die Möglichkeit die Anwesenheit festzustellen.
Das kann man sicherlich später über Bewegungsmelder und Taster ec. machen, aber so richtig gefällt
mir das nicht. Für unsere Kunden und alle Hausautomatisierer haben wir schon länger was im Kopf ,
was sich vielleicht jetzt realisieren lässt.
Die CCU scheint bei einem Reboot die bisher angemeldeten Komponenten abzufragen. Dabei scheint sie
nur deren Existenz zu prüfen.
Wenn Sie das kann , dann muss es auch Befehle geben um Geräte nicht zu schalten ec. sondern nur auf
Ihre Existenz hin zu prüfen.
Jetzt wäre es natürlich traumhaft, wenn wir jedem Familienmitglied an den Schlüsselbund einen kleinen
Schlüsselbund-Handsender "verpassen" und die CCU1 regelmäßig prüfen lassen ob dieser Sender existiert !
Das geht zwar auf die Batterien, aber der Effekt ist dies natürlich wert. Verlässt jemand das Haus und
der Sender gerät außer Reichweite, kann die Anwesenheitsvariable des Familienmitglieds auf false gesetzt
werden und entsprechende Aktionen auslösen. Natürlich auch umgekehrt.
Wir bräuchten also ein Programm auf der CCU, welches die Anwesenheit eines oder mehrerer Sender
in bestimmten Zeitintervallen prüft und eine zugeordnete Variable setzt.
Gruss Marco
Gruss Marco Pniok
http://www.piotek-smarthome.de
Systemhaus für SmartHome mit HomeMatic, HomeMatic IP, PioTek, CUxD, IP-Symcon, Symbox Pro, Shelly, Eltako, free@home, PEHA, Synco Living.
http://www.piotek-smarthome.de
Systemhaus für SmartHome mit HomeMatic, HomeMatic IP, PioTek, CUxD, IP-Symcon, Symbox Pro, Shelly, Eltako, free@home, PEHA, Synco Living.
Re: Daten aus CCU auslesen für externe Verwendung (zb. IPS)
Hallo Marco,
das was Du da mit den Handsendern vor hast wird nicht möglich sein. Die Handsender sind ja "reine" Seder, die in der übrigen Zeit ja nicht auf Empfang sind. Sie warten immer nur nach dem Betätigen einer Taste auf eine Bestätigung vom Aktor oder der Zentrale. Dies ist ja auch der Grund dafür, dass zum Übertragen von Konfigurationsdaten immer die Anlern-Taste gedrückt werden muss.
Ansonsten finde ich die Idee auch sehr gut, habe selbst auch noch keine vernünftige Lösung für die Anwesenheitserkennung gefunden.
Grüße
Nereus
das was Du da mit den Handsendern vor hast wird nicht möglich sein. Die Handsender sind ja "reine" Seder, die in der übrigen Zeit ja nicht auf Empfang sind. Sie warten immer nur nach dem Betätigen einer Taste auf eine Bestätigung vom Aktor oder der Zentrale. Dies ist ja auch der Grund dafür, dass zum Übertragen von Konfigurationsdaten immer die Anlern-Taste gedrückt werden muss.
Ansonsten finde ich die Idee auch sehr gut, habe selbst auch noch keine vernünftige Lösung für die Anwesenheitserkennung gefunden.
Grüße
Nereus
-
- Beiträge: 710
- Registriert: 09.03.2007, 16:38
- System: sonstige
- Wohnort: Eichwalde bei Berlin
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 24 Mal
- Kontaktdaten:
Re: Daten aus CCU auslesen für externe Verwendung (zb. IPS)
Hallo Nereus
richtig ! du hast recht !
Müssen wir leider begraben die Variante. Wir hatten das ganze schon mal mit FS20
direkt bei ELV versucht (Sonderprogrammierung) worauf man allerdings nicht eingegangen
ist.
Es bliebe also auch hier nur die Variante, daß z.b. ein Handsender aller 5 min seine Existenz
meldet. Was eigentlich beim verwendeten Atmel Prozessor kein Problem sein sollte .....
Gruss
Marco
richtig ! du hast recht !
Müssen wir leider begraben die Variante. Wir hatten das ganze schon mal mit FS20
direkt bei ELV versucht (Sonderprogrammierung) worauf man allerdings nicht eingegangen
ist.
Es bliebe also auch hier nur die Variante, daß z.b. ein Handsender aller 5 min seine Existenz
meldet. Was eigentlich beim verwendeten Atmel Prozessor kein Problem sein sollte .....
Gruss
Marco
Gruss Marco Pniok
http://www.piotek-smarthome.de
Systemhaus für SmartHome mit HomeMatic, HomeMatic IP, PioTek, CUxD, IP-Symcon, Symbox Pro, Shelly, Eltako, free@home, PEHA, Synco Living.
http://www.piotek-smarthome.de
Systemhaus für SmartHome mit HomeMatic, HomeMatic IP, PioTek, CUxD, IP-Symcon, Symbox Pro, Shelly, Eltako, free@home, PEHA, Synco Living.
-
- Beiträge: 710
- Registriert: 09.03.2007, 16:38
- System: sonstige
- Wohnort: Eichwalde bei Berlin
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 24 Mal
- Kontaktdaten:
Re: Daten aus CCU auslesen für externe Verwendung (zb. IPS)
Ergänzung :
es könnte doch gehen Nereus ?
Schau dir dazu mal das hier an , was ich gerade untersucht habe : http://www.ipsymcon.de/forum/showthread.php?t=4631
Ich weiss zwar noch nicht , welche HM's das sind die da selbstständig eingelesen wurden, was ich aber
gelegentlich mal herausbekommen will
Gruss
Marco
es könnte doch gehen Nereus ?
Schau dir dazu mal das hier an , was ich gerade untersucht habe : http://www.ipsymcon.de/forum/showthread.php?t=4631
Ich weiss zwar noch nicht , welche HM's das sind die da selbstständig eingelesen wurden, was ich aber
gelegentlich mal herausbekommen will
Gruss
Marco
Gruss Marco Pniok
http://www.piotek-smarthome.de
Systemhaus für SmartHome mit HomeMatic, HomeMatic IP, PioTek, CUxD, IP-Symcon, Symbox Pro, Shelly, Eltako, free@home, PEHA, Synco Living.
http://www.piotek-smarthome.de
Systemhaus für SmartHome mit HomeMatic, HomeMatic IP, PioTek, CUxD, IP-Symcon, Symbox Pro, Shelly, Eltako, free@home, PEHA, Synco Living.