Forum: Haus & Smart Home EMS > Adapter > NetIO > Raspi


von Florian R. (florianr)


Lesenswert?

Vielen Dank für deine baldige Antwort Ingo!

Ingo F. schrieb:
> Florian R. schrieb:
>> und jeweils das SERIALDEVICE sowie db-user und db-pass angepasst.
>
> jeweils ist bestimmt nicht gut. Such Die einen Ort für die
> Konfiguration aus.
> Ich fand es am besten in der einen Datei nichts anzugeben und Link zur
> Konfigdatei zu aktivieren und dort dann alles festzulegen.

Missverständnis. Wie in der Vorlage ist das SERIALDEVICE im 
ems-collector eingetragen und alle übrigen OPTIONS Parameter im 
ems-collector.conf. Nicht doppelt.

Aber was muss in Zeile 21 der /init.d/ems-collector rein? Der Pfad in 
dem die collectord liegt? Und in welchem Verzeichnis legt man die 
collectord am besten ab? Ich hab einfach zu wenig Erfahrung mit Linux, 
um hier sinnvolle Schlüsse zu ziehen.

von Jens H. (sevensworld)


Lesenswert?

Hi Danny,

vielen Dank für die Erweiterung.
Leider habe ich mit der Verwendung vom Github und Linux nicht so viel 
Erfahrung, weiß also gerade nicht so recht wie ich das Testen soll :(
Muss ich alles noch mal runter laden und das "make" neu ausführen oder 
muss ich den Inhalt der Dateien manuell ändern/aktualisieren ? oder 
beides ?

Gruß
Jens

von Danny B. (maniac103)


Lesenswert?

Jens H. schrieb:
> Leider habe ich mit der Verwendung vom Github und Linux nicht so viel
> Erfahrung, weiß also gerade nicht so recht wie ich das Testen soll :(
> Muss ich alles noch mal runter laden und das "make" neu ausführen oder
> muss ich den Inhalt der Dateien manuell ändern/aktualisieren ? oder
> beides ?

Ein 'git pull' im Collector-Verzeichnis sollte die Dateien 
aktualisieren. Danach musst du make nochmal ausführen, um die geänderten 
Dateien neu zu compilieren.

von Jens H. (sevensworld)


Lesenswert?

Ok, habe ich soweit erledigt.
Allerdings klappt irgendetwas noch nicht.

Den manuellen Aufruf (sudo collectord -u ems -p password -f -d 
tx-serial:/dev/ttyUSB0) habe ich von 'serial:' auf 'tx-serial:' 
geändert, aber der Aufruf klappt nicht, erst ohne den DB User und mit 
serial: klappt es. Die Daten werden auch angezeigt. Warum dann die 
unterschiedlichen Optionen in der Hilfe ?
1
pi@raspberrypi:~ $ sudo collectord -f -d all tx-serial:/dev/ttyUSB0
2
Exception: Target tx-serial:/dev/ttyUSB0 is invalid.
1
pi@raspberrypi:/ $ collectord 
2
Usage: collectord [options] <target>
3
4
Possible values for target:
5
  serial:<device>     Connect to serial device <device> without sending support (e.g. Atmega8)
6
  tx-serial:<device>  Connect to serial device <device> with sending support (e.g. EMS Gateway)
7
  tcp:<host>:<port    Connect to TCP address <host> at <port> (e.g. NetIO)
8
9
General options:
10
  -h [ --help ]                Show this help message
11
  -R [ --rc-type ] arg         Type of used room controller (rc30 or rc35)
12
  -r [ --ratelimit ] arg (=60) Rate limit (in s) for writing numeric sensor
13
                               values into DB
14
  -d [ --debug ] arg (=none)   Comma separated list of debug flags (all, io,
15
                               message, data, stats, none)  and their files,
16
                               e.g. message=/tmp/messages.txt
17
18
Daemon options:
19
  -P [ --pid-file ] arg (=/var/run/collectord.pid)
20
                                        Pid file path
21
  -f [ --foreground ]                   Run in foreground
22
  -c [ --config-file ] arg              File name to read configuration from
23
24
TCP options:
25
  -C [ --command-port ] arg TCP port for remote command interface (0 to
26
                            disable)
27
  -D [ --data-port ] arg    TCP port for broadcasting live sensor data (0 to
28
                            disable)
29
30
Interface options:
31
  --mqtt-broker arg     MQTT broker address (<host>:<port>)

Beim starten vom Service (service ems-collector start) bekomme ich keine 
Fehlermeldung, aber selbst eine Telnetverbindung zu 7778 geht nicht 
mehr. Also muss noch irgendwo ein Fehler sein bzw. ich mache irgendwo 
noch einen Fehler :(

Wie muss der korrekte Eintrag in /etc/default/ems-collector sein? Denn 
egal wie ich das eintrage, es klappt nicht.

SERIALDEVICE="tx-serial:/dev/ttyUSB0"
SERIALDEVICE="serial:/dev/ttyUSB0"
SERIALDEVICE="/dev/ttyUSB0"

Starte ich wie oben angegeben und incl. Angabe der Ports:
 sudo collectord -C 7777 -D 7778 -f -d all serial:/dev/ttyUSB0

dann kann ich mich auf den 7778 verbinden, aber nicht auf den 7777.

: Bearbeitet durch User
von Florian R. (florianr)


Lesenswert?

Also, ich konnte mittlerweile auf den Port 7777 zugreifen, nachdem ich 
die collectord wie im readme vom ems-collector beschrieben in den neuen 
Pfad /usr/local/sbin/ verschoben habe.
Diese Info fehlt eindeutig im Wiki.
Alternativ hat aber auch der Verweis auf den Pfad 
/home/pi/ems-collector/collector/ funktioniert.

Das Webinterface ist nun auch aufrufbar, aber mangels erfolgreicher 
ems-tools Installation bisher nicht funktionsfähig.

Irgendwie ist das alles ein seeehr unübersichtliches Unterfangen. Für 
jemanden, der nicht mit allen Themenbereichen gleichermaßen 
Berührungspunkte hat, echt nicht so easy zu händeln.

Momentan hängts beim emsincludes symlink. Das Verzeichnis steht, 
Verknüpfung ist vorhanden, aber beim Ausführen des emsclient wird 
folgender Fehler ausgeworfen:
1
$ sudo /home/pi/ems-tools/cli/emsclient
2
PHP Warning:  require(/emsincludes/emsqry.inc): failed to open stream: No such file or directory in /home/pi/ems-tools/cli/emsclient on line 4
3
PHP Fatal error:  require(): Failed opening required '/emsincludes/emsqry.inc' (include_path='.:/usr/share/php:/usr/share/pear') in /home/pi/ems-tools/cli/emsclient on line 4

Wo soll diese emsqry.inc denn herkommen? Berechtigung für /emsincludes 
habe ich auf 775 gesetzt. Sollte also nicht das Problem sein?!

Bleiben die Datein der ems-tools im Verzeichnis /home/pi/ems-tools oder 
müssen die auch woanders hin?

von Danny B. (maniac103)


Lesenswert?

Jens H. schrieb:
> Ok, habe ich soweit erledigt.
> Allerdings klappt irgendetwas noch nicht.
>
> Den manuellen Aufruf (sudo collectord -u ems -p password -f -d
> tx-serial:/dev/ttyUSB0) habe ich von 'serial:' auf 'tx-serial:'
> geändert, aber der Aufruf klappt nicht, erst ohne den DB User und mit
> serial: klappt es. Die Daten werden auch angezeigt. Warum dann die
> unterschiedlichen Optionen in der Hilfe ?
>
>
1
> pi@raspberrypi:~ $ sudo collectord -f -d all tx-serial:/dev/ttyUSB0
2
> Exception: Target tx-serial:/dev/ttyUSB0 is invalid.
3
>

Oops. Fixed: 
https://github.com/maniac103/ems-collector/commit/ff29e651909d8013e9628fa126d60f430f8d270e
Sorry, ich hätte es mal probieren sollen. :-/

> Wie muss der korrekte Eintrag in /etc/default/ems-collector sein? Denn
> egal wie ich das eintrage, es klappt nicht.
>
> SERIALDEVICE="tx-serial:/dev/ttyUSB0"

Für deinen Fall das hier ^

> Starte ich wie oben angegeben und incl. Angabe der Ports:
>  sudo collectord -C 7777 -D 7778 -f -d all serial:/dev/ttyUSB0
>
> dann kann ich mich auf den 7778 verbinden, aber nicht auf den 7777.

Das wiederum ist normal, da 'serial' nicht senden kann.

von Jens H. (sevensworld)


Lesenswert?

Ok, make läuft, Rückmeldung kommt nachher.

Aber noch mal eine Frage zum 'make' ... in der Anleitung (readme) steht 
das mehrere Optionen im makefile zur Verfügung stehen.
Beim ersten mal (und auch jetzt) habe ich dort nichts verändert, aber 
trotzdem hat beim ersten Mal der MySql Datenbanksupport funktioniert 
(Daten waren in der DB vorhanden und somit funzt ja auch das lesen der 
RAW Daten).
Ist das ein Fehler in der Anleitung oder wie muss man die Optionen im 
Makefile verstehen ? Denn das ist ja Default alles auskommentiert und 
trotzdem lief es beim ersten Mal !? Hätte ich dort etwas auskommentieren 
müssen oder nicht?

Gruß
Jens

von Danny B. (maniac103)


Lesenswert?

Jens H. schrieb:
> Ok, make läuft, Rückmeldung kommt nachher.
>
> Aber noch mal eine Frage zum 'make' ... in der Anleitung (readme) steht
> das mehrere Optionen im makefile zur Verfügung stehen.
> Beim ersten mal (und auch jetzt) habe ich dort nichts verändert, aber
> trotzdem hat beim ersten Mal der MySql Datenbanksupport funktioniert
> (Daten waren in der DB vorhanden und somit funzt ja auch das lesen der
> RAW Daten).
> Ist das ein Fehler in der Anleitung oder wie muss man die Optionen im
> Makefile verstehen ? Denn das ist ja Default alles auskommentiert und
> trotzdem lief es beim ersten Mal !? Hätte ich dort etwas auskommentieren
> müssen oder nicht?

Früher war MySQL-Unterstützung unkonditional eincompiliert, inzwischen 
nicht mehr.

von Jens H. (sevensworld)


Lesenswert?

So Rückmeldung

Starten mit :
sudo collectord -C 7777 -D 7778 -u ems -p password -f -d all 
tx-serial:/dev/ttyUSB0

klappt, beide Ports erreichbar und auch das Webinterface läuft!
Was nicht klappt ist den Service zu starten !?
1
pi@raspberrypi:~/ems-collector/collector $ sudo service ems-collector start
2
Job for ems-collector.service failed. See 'systemctl status ems-collector.service' and 'journalctl -xn' for details.
3
4
pi@raspberrypi:~/ems-collector/collector $ systemctl status ems-collector.service
5
● ems-collector.service - LSB: EMS collector daemon
6
   Loaded: loaded (/etc/init.d/ems-collector)
7
   Active: failed (Result: exit-code) since Mo 2016-05-16 23:07:03 CEST; 2min 40s ago
8
  Process: 2906 ExecStop=/etc/init.d/ems-collector stop (code=exited, status=0/SUCCESS)
9
  Process: 3376 ExecStart=/etc/init.d/ems-collector start (code=exited, status=1/FAILURE)

Ich weiß leider nicht wo ich suchen soll, ein Journal wird nicht 
gefunden.

/etc/default/ems-collecter
1
# Defaults file for EMS collector daemon
2
# This is a POSIX shell fragment
3
4
# config file location
5
CONFIGFILE="/etc/ems-collector.conf"
6
7
# Serial device file
8
SERIALDEVICE="tx-serial:/dev/ttyUSB0"
9
10
# Where to put the PID file
11
PIDFILE="/var/run/ems-collector.pid"
12
13
# Other options
14
OPTIONS=""

/etc/ems-collector.conf
1
ratelimit = 120
2
rc-type = rc30
3
db-user = ems
4
db-pass = password
5
command-port = 7777
6
data-port = 7778


edit
Ok, habe nun DB User+Pass und die beiden Ports bei den Options mit 
eingetragen, nun gehts! Irgendwie wird die Config Datei nicht richtig 
eingebunden. Was ist mit ratelimit und rc-type, das habe ich noch in der 
Config drin gelassen !?

: Bearbeitet durch User
von Ingo F. (ingof)


Lesenswert?

Danny B. schrieb:
> Ein 'git pull' im Collector-Verzeichnis sollte die Dateien
> aktualisieren. Danach musst du make nochmal ausführen, um die geänderten
> Dateien neu zu compilieren.

Hallo Dany,

leider klappt das so nicht.
Weil ich das Makefile ja lokal verändert habe meckert GIT dass ich meine 
änderungen erst comitten soll...

Ich möchte aber einfach nur alles überschreiben, das Makefile verändern 
und das make starten.

Wie bekommt man das hin ohne manuell den Ordner zu löschen und neu zu 
clonen?

"git fetch -all" hat auch nicht geholfen.

Es muss doch auch ohne löschen des GIT-Ordners gehen, oder???

von Ingo F. (ingof)


Lesenswert?

Ich habe gerade mal den collectord neu kompiliert.
Leider lässt der sich nicht mehr starten.
Bekomme dann folgendes:
1
[.....] Starting EMS collector daemon: collectordException: Can't connect to local MySQL server throug Socket '/var/run/mysqld/mysqld.sock' (2)

Mit den alten quellen funktioniert es aber problemlos.

Habe noch mal apt-get update und upgrade gemacht. Immer noch das selbe.
kann die alten und neuen Quellen kompilieren.
Beim alten collectord läuft alles (auch neu kopmiliert). Beim neuen 
collectord bekomme ich ihn mit [code]service ems-collector start[code] 
nicht neu gestartet.

Die Config-files und alles habe ich so belassen. nur ems-collector 
gestoppt collectord in /usr/local/sbin kopiert und neu gestartet.

Auch wenn ich ems-collector.init in /etc/init.d kopiere umbenenne und in 
die Startscripte einarbeite ändert sich nichts.

Edit:
Habe natürlich auch in beiden Makefiles die selben Zeilen "aktiviert"

: Bearbeitet durch User
von Danny B. (maniac103)


Lesenswert?

Ingo F. schrieb:
> Danny B. schrieb:
>> Ein 'git pull' im Collector-Verzeichnis sollte die Dateien
>> aktualisieren. Danach musst du make nochmal ausführen, um die geänderten
>> Dateien neu zu compilieren.
>
> Hallo Dany,
>
> leider klappt das so nicht.
> Weil ich das Makefile ja lokal verändert habe meckert GIT dass ich meine
> änderungen erst comitten soll...

Ja dann tu das doch ;-)
git commit -a
git fetch
git rebase

alternativ wegsichern und nach dem Update wiederherstellen:
git stash
git pull
git stash apply

von Danny B. (maniac103)


Lesenswert?

Ingo F. schrieb:
> Ich habe gerade mal den collectord neu kompiliert.
> Leider lässt der sich nicht mehr starten.
> Bekomme dann folgendes:
>
1
[.....] Starting EMS collector daemon: collectordException: Can't 
2
> connect to local MySQL server throug Socket 
3
> '/var/run/mysqld/mysqld.sock' (2)
>
> Mit den alten quellen funktioniert es aber problemlos.

Was genau ist 'neu' und was ist 'alt'?

Existiert denn die entsprechende Socket-Datei? Der Pfad in der 
Fehlermeldung kommt nicht aus meinem Code, sondern aus den 
MySQL-Bindings. Wenn der nicht passt, ist es unwahrscheinlich, dass das 
Problem in meinem Code liegt. Du kannst den Pfad aber mit --db-path 
überschreiben.

von Ingo F. (ingof)


Angehängte Dateien:

Lesenswert?

Danny B. schrieb:
> Ingo F. schrieb:
>> Ich habe gerade mal den collectord neu kompiliert.
>> Leider lässt der sich nicht mehr starten.
>> Bekomme dann folgendes:
>>[.....] Starting EMS collector daemon: collectordException: Can't
>> connect to local MySQL server throug Socket
>> '/var/run/mysqld/mysqld.sock' (2)>
>> Mit den alten quellen funktioniert es aber problemlos.
>
> Was genau ist 'neu' und was ist 'alt'?


Also "Alt" laut "git log" der letzte commit von Dir vom 14.03.2016.
"neu" ist von heute (23.05.2016).

Habe keine Ahnung

> Existiert denn die entsprechende Socket-Datei? Der Pfad in der
> Fehlermeldung kommt nicht aus meinem Code, sondern aus den
> MySQL-Bindings. Wenn der nicht passt, ist es unwahrscheinlich, dass das
> Problem in meinem Code liegt. Du kannst den Pfad aber mit --db-path
> überschreiben.

Habe damals die Sourcen im Docker Container auf meiner Diskstation 
testweise installiert.

jetzt habe ich den alten Git-Ordner auf ems-collector-alt umbenannt und 
neu ausgechecked. Beim Kompilieren kommt bei beiden Sourcen kein Fehler.

Auch wenn ich die alten Sourcen neu kompiliere ändert sich nichts.

Am Anfang habe ich nur collectord mit den neuen und alten Quellen neu 
kompiliert. ALso erst "make clean" und dann "make all". Dann nur den 
ems-collector gestoppt, Datei ersetzt und dann neu gestartet.

Also im selben Docker Container ohne irgendwas neu zu installieren oder 
zu löschen.

Habe dann auch mal ein apt-get update und upgrade durchgeführt. Es hat 
sich daran nichts geändert.

Habe auch mal versucht dann die Datei aus den Sourcen in die /etc/init.d 
kopiert und umbenannt. hat sich auch nichts geändert.

Edit:
Kannst Du den Wiki-Link im Install-Text in Github ändern.
ems-gateway.myds.me ist nur noch meine Spiel-Url. Aber auf den Richtigen 
Dokuwiki-server landet man nicht mehr.

also "emswiki.thefischer.net/......"

: Bearbeitet durch User
von Ingo F. (ingof)


Angehängte Dateien:

Lesenswert?

Ingo F. schrieb:
> Also im selben Docker Container ohne irgendwas neu zu installieren oder
> zu löschen.

Ein Bild sagt mehr als tausend worte...

a steht für alte Quellen
n steht für neue Quellen

1 war für den Durchgang vor apt-get Update/Upgrade
2 war der komilierdurchgang nach apt-get Update/upgrade

Edit:
sorry... ist dreimal der selbe Anhang...

: Bearbeitet durch User
von Jens H. (sevensworld)


Lesenswert?

Hallo Ingo,

welche Optionen hast du denn im 'makefile' benutzt und wie sind die 
Einstellungen für die Optionen in den 'config' files ?

Gruß
Jens

von Ingo F. (ingof)


Lesenswert?

Jens H. schrieb:
> wie sind die
> Einstellungen

Werde mich morgen eventuell noch mal dransetzen.

Habe heute das Webinterface auf der Diskstation mit dem "alten" 
collector fast komplett zum laufen gebracht. Irgendwie wird nur das Bild 
für Heizkennline erstellt. Vermutlich bricht GnuPlot bei calcemsgraps.sh 
ab weil er die Schriftart "Arial" nicht findet ?!

Habe dann auch eine Anleitung für das Webinterface zusammengebastelt...
http://emswiki.thefischer.net/doku.php?id=wiki:ems:webinterface

: Bearbeitet durch User
von Ingo F. (ingof)


Lesenswert?

Ingo F. schrieb:
> Danny B. schrieb:
>> Ingo F. schrieb:
>> Existiert denn die entsprechende Socket-Datei? Der Pfad in der
>> Fehlermeldung kommt nicht aus meinem Code, sondern aus den
>> MySQL-Bindings. Wenn der nicht passt, ist es unwahrscheinlich, dass das
>> Problem in meinem Code liegt. Du kannst den Pfad aber mit --db-path
>> überschreiben.


Habe jetzt erst Zeit gefunden das Problem einzugrenzen.

den "alten" collector habe ich so gestartet und konfiguriert dass er 
problemlos lief.

den "neuen" collector habe ich jetzt testweise im Vordergrund am laufen.
Dazu musste ich erstmal mit "service mysql start" den SQL-Server 
starten.
Dann kommt die Meldung dass user@localhost keine Berechtigungen hat.
Der manuelle Test klappt problemlos:
1
collectord -u ems -p geheim --db-path 192.168.1.2:3306 -f -d all tcp:192.168.1.3:7950

Also baute der "alte" collector ohne laufenden mysql-server die 
Verbindung über den db-path auf.

Der "neue" collector benötigt einen laufenden mysql-server und er 
übernimmt den "db-path" aus der Configurationsdatei nicht so wie der 
alte collector.

hier mal meine Konfigurationen:

/etc/default/ems-collector:
1
# Defaults file for EMS collector daemon
2
# This is a POSIX shell fragment
3
4
# if you need further configuration
5
# config file location
6
CONFIGFILE="/etc/ems-collector.conf"
7
8
# Serial device file
9
# SERIALDEVICE="/dev/ttyUSB0"
10
SERIALDEVICE="tcp:192.168.1.3:7950"
11
12
# Where to put the PID file
13
PIDFILE="/var/run/ems-collector.pid"
14
15
# Other options -- command-port, data-port, db-user, db-pw, rate-limit (s) to write to db, target
16
# For debugging purposes insert "-d all=/var/log/ems-collector.log" before "tcp:...."
17
# OPTIONS="-C 7777 -D 7778 -u ems -p geheim-r 60 tcp:192.168.xxx.xxx:7950"
18
OPTIONS=""
/etc/ems-collector.conf:
1
ratelimit = 120
2
rc-type = rc35
3
db-path = 192.168.1.2:3306
4
db-user = ems
5
db-pass = geheim
6
command-port = 7777
7
data-port = 7778

Edit : habe gerade den Parameter "-c" gefunden...
der alte collector läuft mit Angabe der Config-Datei. Der "neue" 
collector läuft damit nicht.
1
collectord -c /etc/ems-collector.conf -f -d all tcp:192.168.1.3:7950

der "neue" collector bringt folgende Fehlermeldung:
1
Exception: Access denied for user 'root'@'localhost' (using password:NO)

Seltsamerweise scheint der "neue" collector über die Angabe config-Datei 
über den Eintrag in der Datei "/etc/default/ems-collector" zumindest 
schon mal den Usernamen "ems" zu übernehmen. Bei Angabe über Parameter 
"-c" versucht er sich als "root" anzumelden.

Also auf meiner Diskstation läuft der eigentliche mySql-Server. Der 
collector läuft auf der selben Diskstation unter Docker in einem 
Container.
Habe beide Versionen im selben Container laufen gehabt. Es sollte 
demnach nicht an unterschiedlichen Konfigurationen oder Bibliotheken 
liegen.

Habe den "neuen" collector auch noch mal testweise einen neuen Container 
spendiert und habe von vorne angefangen. Dort gibt es die selben 
Probleme.

Es scheint ja fast so als ob der "alte" collector keine Socket 
benötigt...
Oder doch irgendwie den Socket direkt von der Diskstation verwendet. 
Aber das dürfte doch im Docker Image nicht möglich sein.

Aber warum gibt es diese Probleme wenn der "neue" collector die 
Konfiguration aus der Datei laden soll?

: Bearbeitet durch User
von Jens H. (sevensworld)


Lesenswert?

Moin Ingo,

so tief stecke ich da zwar nicht drin, aber diese Problematik (hört sich 
für mich zumindest so an) hatte ich auch schon angesprochen. Gelöst 
hatte ich das mit der Eingabe der Parameter in den Options="" , danach 
ging es dann!

Gruß
Jens

von Danny B. (maniac103)


Lesenswert?

Ingo F. schrieb:
> den "neuen" collector habe ich jetzt testweise im Vordergrund am laufen.
> Dazu musste ich erstmal mit "service mysql start" den SQL-Server
> starten.
> Dann kommt die Meldung dass user@localhost keine Berechtigungen hat.
> Der manuelle Test klappt problemlos:
>
1
collectord -u ems -p geheim --db-path 192.168.1.2:3306 -f -d all 
2
 tcp:192.168.1.3:7950
>
> Also baute der "alte" collector ohne laufenden mysql-server die
> Verbindung über den db-path auf.

Nee, sorry, das ist Quatsch. Wie soll der Collector mit einem nicht 
laufenden MySQL-Server kommunizieren? Eine theoretische Möglichkeit 
dafür gäbe es mit systemd (der kann Daemons starten, wenn deren Socket 
geöffet wird), aber ich glaube nicht, dass auf der Diskstation systemd 
läuft. (Und ich bin mir auch nicht sicher, ob die Unterstützung dafür 
überhaupt in MySQL drin ist)

> Der "neue" collector benötigt einen laufenden mysql-server und er
> übernimmt den "db-path" aus der Configurationsdatei nicht so wie der
> alte collector.

Der alte braucht auch einen laufenden MySQL-Server, s.o.

> Edit : habe gerade den Parameter "-c" gefunden...
> der alte collector läuft mit Angabe der Config-Datei. Der "neue"
> collector läuft damit nicht.
>
>
1
collectord -c /etc/ems-collector.conf -f -d all tcp:192.168.1.3:7950
>
> der "neue" collector bringt folgende Fehlermeldung:
>
1
Exception: Access denied for user 'root'@'localhost' (using 
2
 password:NO)

Das ist das Problem: der neue Collector liest die Config-Datei nicht 
mehr. Da hatte ich einen Augenblick geistiger Umnachtung -> 
https://github.com/maniac103/ems-collector/commit/e4514d30f586cbe268b7007f5605321dc5bd7af4

von Ingo F. (ingof)


Lesenswert?

Danny B. schrieb:
>> Also baute der "alte" collector ohne laufenden mysql-server die
>> Verbindung über den db-path auf.
>
> Nee, sorry, das ist Quatsch.

Nee nicht so ganz. Vielleicht nicht so gut formuliert.
für den "alten" collector musste ich im Docker-Container keinen 
mySql-Service starten.

Ob er jetzt über den laufenden mySQL-Server auf der Diskstation selber 
Kontakt aufbauen konnte oder wie er das sonst geschafft hat ist mir 
unbekannt.

Eigentlich ist es ja sogesehen Unsinn dass auf dem selben System zweimal 
mySql läuft. Einmal auf Hauptrechner und dann nochmal im Container...

Natürlich kann man kein Gebäude betreten das keine Tür hat ;-)

Mit Linux kenne ich mich bisher nicht wirklich gut aus und habe keine 
Ahnung ob systemd auf der Diskstation läuft

Danny B. schrieb:
> Das ist das Problem: der neue Collector liest die Config-Datei nicht
> mehr.

Das klingt schon mal sehr gut.
Werde das aber vermutlich erst nächste Wochen den collector neu 
kompilieren können.

: Bearbeitet durch User
von Ingo F. (ingof)


Lesenswert?

Ingo F. schrieb:
>> Das ist das Problem: der neue Collector liest die Config-Datei nicht
>> mehr.

Hallo Danny,

danke für die Änderungen.
Jetzt läuft auch der Collector, im Docker Container, so wie er soll...


Bei mir werden nur die Raumtermperaturen (Soll/Ist) nicht in der 
Datenbank geloggt. Sensor 13 und 14 haben keinen einizigen Datenwert.

Im Webinterface werden die in den EMS-Rohdaten unter HK1 aufgelistet.

Die Schaltzeiten werden auch nicht erzeugt. Denke da wird es noch ein 
Fehler im php-Webinterface geben,

von Jens H. (sevensworld)


Lesenswert?

/graphs/schedule.png? wird nicht angezeigt und die Heizkurve auch nicht.

Hat dazu noch jemand eine Idee ?


Gruß
Jens

von Ingo F. (ingof)


Lesenswert?

Jens H. schrieb:
> /graphs/schedule.png?

Kenn das Problem. Dachte es wäre nur bei mir so.
Habe aber noch keine Ursachenforschug gemacht.

Die shedule.png wird in a_emsshed.php ab Zeile 109 erzeugt.

Die Heizkurve wird bei mir aber angezeigt.
Wird denn die Grafik der Heizkurve bei Dir erzeugt?
Also das Script "calcheizkurve.sh"

: Bearbeitet durch User
von Jens H. (sevensworld)


Lesenswert?

Nein, wird scheinbar nicht erzeugt.
Es gibt allerdings auch keinen Ordner der Graphs heißt. In dem sollte 
dann doch die Grafik liegen wenn ich das Script richtig interpretiert 
habe !?
Kann das wieder mit irgendwelchen Include Pfaden zusammen hängen ?

von Ingo F. (ingof)


Lesenswert?

Jens H. schrieb:
> Nein, wird scheinbar nicht erzeugt.
> Es gibt allerdings auch keinen Ordner der Graphs heißt. In dem sollte
> dann doch die Grafik liegen wenn ich das Script richtig interpretiert
> habe !?
> Kann das wieder mit irgendwelchen Include Pfaden zusammen hängen ?

Denke nicht. Der Pfad ist in der a_emssched.php zumindest richtig 
angegeben.

Wenn Du das Webinterface richtig installiert hast sollte der Unterordner 
graphs im Webordner für das Webinterface erstellt worden sein.
Hier mal eine Anleitung für eine Diskstation: 
http://emswiki.thefischer.net/doku.php?id=wiki:ems:webinterface

Die meisten Graphiken werden über ein Script der EMS-Tools erstellt. Das 
Script sollte über einen Cron-Job automatisiert werden. zum testen kann 
das script auch manuell gestartet werden
1
/usr/local/ems-tools/scripts/calcemsgraphs.sh

Die Grafik shedule.png wird über die Datei a_emssched.php im 
Webinterface gestartet.

: Bearbeitet durch User
von Bernd G. (bernd_g734)


Lesenswert?

Hat jemand den ganzen "kram" in einem docker-container zum Laufen 
gebracht?

Dann würde ich mich über eine Veröffentlichung freuen!

Ich würde es einfach als docker container auf der diskstation starten 
und alles läuft? Wahnsinnig praktisch!

Falls das so noch nicht ist: wie kann ich dazu beitragen? Was ist der 
Stand der Dinge bzgl. docker?

von Ingo F. (ingof)


Angehängte Dateien:

Lesenswert?

Bernd G. schrieb:
> Ich würde es einfach als docker container auf der diskstation starten
> und alles läuft?

JA

Hänge mal meinen Mittschnitt an.
Habbe es bei mir auf einem debian:wheezy Abbild am laufen.
Und dann musst Du Dich nur an meinem "Docker_Collector.txt"-Mitschnitt 
orientieren...

Habe es noch nicht dokumentiert. Ist eben nur ein Mitschnitt der 
benötigten Befehle.

die Anleitung für das Webfrontend ist hier:
http://emswiki.thefischer.net/doku.php?id=wiki:ems:webinterface

Wenn Du willst kannst Du auch gerne im Wiki die Diskstation-Anleitung 
mit dem "Warnhinweis" durch eine Anleitung ersetzen.

Wenn Deine Diskstation den richtigen Prozessor hat sich Docker 
installieren lässt sollte es keine Probleme geben.

Habe bisher nur noch das Problem dass sich die Schedule-Grafik nicht 
erstellen lässt. Alles andere Läuft soweit. Bin nur noch nicht dazu 
gekommen die Anleitung komplett zu erstellen und ins Wiki zu packen.

: Bearbeitet durch User
von Bernd G. (bernd_g734)


Lesenswert?

F**k! Ich hab ne DS214play. No docker.
Manchmal läuft's nicht so.

von Jens H. (sevensworld)


Lesenswert?

Ingo F. schrieb:

> Wenn Du das Webinterface richtig installiert hast sollte der Unterordner
> graphs im Webordner für das Webinterface erstellt worden sein.
> Hier mal eine Anleitung für eine Diskstation:
> http://emswiki.thefischer.net/doku.php?id=wiki:ems:webinterface


Hallo Ingo, warum genau muss der Ordner erzeugt werden, der Rest wird 
doch auch nur einfach kopiert?
Das habe ich bisher immer überlesen, weil es für die Diskstation 
beschrieben war und ich für nicht relevant gehalten habe -.-

Wenn man das Paket herunter lädt(Win Rechner) ist nur eine Datei die so 
heißt dabei !? und auf dem Linux Rechner ist da lediglich eine 
Verknüpfung auf "Graphs".

Jetzt muss ich den Ordner doch noch für den User pi frei geben, oder? 
Werden die Grafiken dann bei Aufruf einer Seite erzeugt oder ist ein 
Eintrag im Crontab dafür notwendig ?


edit
Ok, habe den Ordner erzeugt ... jetzt habe ich versucht das Script 
manuell auszuführen und bekomme folgende Fehlermeldung:
1
pi@raspberrypi:~/ems-tools/scripts $ ./calcemsgraphs.sh
2
Traceback (most recent call last):
3
  File "/home/pi/ems-tools/scripts//ems-heizkurve.py", line 10, in <module>
4
    import config
5
ImportError: No module named config

Gruß
Jens

: Bearbeitet durch User
von Ingo F. (ingof)


Lesenswert?

Jens H. schrieb:
> warum genau muss der Ordner erzeugt werden, der Rest wird
> doch auch nur einfach kopiert?

Der Ordner existiert auch nicht im geklonten GIT. Also kann sie auch 
nicht kopiert werden.

Eventuell der Symbolische Link "/emsincludes" nicht vorhanden oder fehlt 
die config-Datei? Die Config-Datei müsste "config.py" heissen. 
Vielleicht Rechte nicht vorhanden?

Was mich wundert ist der doppelte Schrägstrich "//"

: Bearbeitet durch User
von Jens H. (sevensworld)


Lesenswert?

Also der Symlink ist da und die config.py ist auch da.
Das mit dem Schrägstrich ist mir auch aufgefallen, kann ich mir mangels 
Wissen dazu aber nicht erklären. Dachte für euch ist klar an was das 
liegt und hatte auf eine Art: "Das kann auch nicht funktionieren weil 
..." gehofft ;-)

Ich könnte noch mal versuchen den ganzen Kram neu zu machen, habe aber 
im Moment etwas Bedenken das danach gar nix mehr läuft -.-


Gruß
Jens

von Jens H. (sevensworld)


Lesenswert?

Ok, der Fehler ist entweder in der Config oder im Script.
In der Config muss der Pfad (die Pfade?) mit abschließendem / eingegeben 
werden oder nicht ?
Das Beispiel sagt ja ... dann müsste aber im Script der / im Aufruf von 
"/ems-heizkurve.py" weg !?

von Ingof (Gast)


Lesenswert?

Jens H. schrieb:
> Ok, der Fehler ist entweder in der Config oder im Script.

In einer Konfiguration steht der ems-scriptpath. Dort ist bestimmt am 
Ende ein "/".
Das einfach entfernen. Denke dann läuft es

von Jens H. (sevensworld)


Lesenswert?

Wie ist das denn mit dem Rest ?
Also mit dem Pfad zu tmp und Graph .. ebenfalls den abschließenden / weg 
lassen ?
Beim Scriptpfad habe ich das gemacht, bei den beiden anderen 
vorsichtshalber auch.

edit
Ich glaube das hängt mit emsincludes zusammen ... mein Ordner heißt 
nämlich Includes (alte Version), aber ich habe in diversen Dateien schon 
Änderungen vorgenommen. Dann muss ich wohl noch mal suchen bzw. doch 
alles neu aufsetzen.

Schriftart hinzufügen habe ich hinbekommen (glaube ich).
1
sudo apt-get install ttf-mscorefonts-installer

Wenn ich jetzt
1
./calcemsgraphs.sh
ausführe, dann kommt keine Fehlermeldung, aber auch keine Grafik !?

Davon abgesehen ist aber noch die Sache mit dem Gnuplot. Die neueste 
Version ist bereits installiert, wie dann weiter auf dem Raspi oder gilt 
hier auch
1
ln -s /opt/bin/gnuplot /usr/local/bin/gnuplot
??

Gruß
Jens

: Bearbeitet durch User
von Jens H. (sevensworld)


Lesenswert?

Ok, Fehler gefunden ... in der config.py habe ich Tabellenname und 
Passwort vertauscht -.-
Jetzt wird die Grafik der Heizkurve erzeugt, aber die die Schaltpunkte 
weiterhin nicht.

Gruß
Jens

: Bearbeitet durch User
von Ingo F. (ingof)


Lesenswert?

Jens H. schrieb:
> Jetzt wird die Grafik der Heizkurve erzeugt, aber die die Schaltpunkte
> weiterhin nicht.

Das ist im Moment bei mir auch so.
Habe noch keine Zeit gehabt zu Suchen wo das Problem liegt.

Der gnuplot-Link muss nicht erstellt werden und der Font muss auch nicht 
installiert werden. Habe das im Text zwar geschrieben aber kann man 
schnell überlesen. Habe noch mal einen Hinweis dafür eingefügt.

von Bernd G. (bernd_g734)


Lesenswert?

@maniac103:

Ich habe die Anleitung mit dem MQTT aus
https://emswiki.thefischer.net/doku.php?id=wiki:ems:openhab

nachvollziehen wollen, komme aber auf folgenden Fehler:

root@fhem:/home/bananapi/ems-collector/collector# make
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE 
-I../../mqtt_client_cpp/include -DMQTT_NO_TLS -DHAVE_MQTT main.cpp
In file included from 
../../mqtt_client_cpp/include/mqtt/client.hpp:30:0,
                 from 
../../mqtt_client_cpp/include/mqtt_client_cpp.hpp:8,
                 from MqttAdapter.h:28,
                 from main.cpp:31:
../../mqtt_client_cpp/include/mqtt/endpoint.hpp: In member function 
‘bool mqtt::endpoint<Socket, Strand, Mutex, 
LockGuard>::handle_connack(const async_handler_t&)’:
../../mqtt_client_cpp/include/mqtt/endpoint.hpp:1954:35: warning: use of 
‘auto’ in lambda parameter declaration only available with -std=c++1y or 
-std=gnu++1y
                             [this](auto& e){
                                   ^
In file included from main.cpp:31:0:
MqttAdapter.h: At global scope:
MqttAdapter.h:69:43: error: wrong number of template arguments (1, 
should be 2)
  mqtt::client<boost::asio::ip::tcp::socket> m_client;
                                           ^
In file included from 
../../mqtt_client_cpp/include/mqtt_client_cpp.hpp:8:0,
                 from MqttAdapter.h:28,
                 from main.cpp:31:
../../mqtt_client_cpp/include/mqtt/client.hpp:39:7: error: provided for 
‘template<class Socket, class Strand> class mqtt::client’
 class client : public endpoint<Socket, Strand> {
       ^
Makefile:49: recipe for target 'main.o' failed
make: *** [main.o] Error 1
root@fhem:/home/bananapi/ems-collector/collector#

Hat der Autor von dem MQTT CPP git Änderungen gemacht, die noch nicht im 
collectord enthalten sind?

von Christian E. (alteskamuffel)


Lesenswert?

Hallo zusammen,

da ich ziemlicher Laie bin was Mikrokontroller betrifft, möchte ich den 
Adapter ungern selber bauen. Deswegen dachte ich, die Eagle Datei von 
Maciej einem Leiterplattenhersteller zu senden, damit dieser mir einen 
Prototypensatz daraus fertigt.
Denkt ihr das wär sinnvoll oder gibts es kostengünstigere Möglichkeiten, 
wenn man nicht selber löten möchte?
Und hat schon jemand auf Basis dieser Eagle Datei eine Platine erstellt? 
Ich möchte einfach ausschließen, dass sich darin ggf. Fehler befinden.

von Karl M. W. (charlie-w)


Lesenswert?

Hallo Christian,

Christian E. schrieb:
...
> Denkt ihr das wär sinnvoll oder gibts es kostengünstigere Möglichkeiten,
> wenn man nicht selber löten möchte?
...

Wenn Du nicht selber löten willst, nützt Dir auch die fertige, 
unbestückte Platine nichts. ;) Oder wie muss ich das jetzt verstehen?

Unter:
Beitrag "Re: EMS > ESP8266-12 WLAN-Modul"
bietet Jürgen seine EMS2ESP Platinen für kleines Geld an.

Der Adapter ist Teil der Platine, einige Bauteile kannst Du weglassen, 
die Adaption an den AVR-NetIO (Ext1) müsstest Du entsprechend anpassen.

Hab's jetzt nicht detailliert gecheckt, sollt m. E. aber relativ einfach 
anzupassen sein.

hth'n greets
Karl M.

von Christian E. (alteskamuffel)


Lesenswert?

Hallo Karl,

> Wenn Du nicht selber löten willst, nützt Dir auch die fertige,
> unbestückte Platine nichts. ;) Oder wie muss ich das jetzt verstehen?

da habe ich mich wohl unklar ausgedrückt. Ich meinte natürlich die 
bereits bestückte Platine bestellen :)

> Beitrag "Re: EMS > ESP8266-12 WLAN-Modul"
> bietet Jürgen seine EMS2ESP Platinen für kleines Geld an.

Danke für den Hinweis. Hab jetzt einen Bekannten dazu gebracht, mir das 
Teil zu löten. Wenn das nicht klappt, schau ich mir Jürgens Platine an.

von Torsten G. (regengott)


Lesenswert?

@Christian,
Ich habe noch eine fertige und funktionierende Adapterplatine hier 
herumliegen - bei Interesse PM!

von Jens H. (sevensworld)


Lesenswert?

Moin zusammen :)

Nach lager Zeit habe ich den Raspi mal wieder aktualisiert und nun läuft 
einiges nicht mehr. Livestatus, Heizkurve und Einstellungen zeigen nix 
mehr an. Statistik ist aber aktuell und läuft und auch die Rohdaten 
werden angezeigt.
Wurden durch update&upgrade auch Dateien für oder vom Collector 
verändert? Wo könnte ich anfangen zu suchen ? Denke mal das es wieder um 
die richtige interne Verlinkung geht.

Gruß
Jens

von IngoF (Gast)


Lesenswert?

Jens H. schrieb:
> Raspi mal wieder aktualisiert und nun läuft
> einiges nicht mehr.

Never touch a running System :-P

Welche Statistik meinst Du denn? Vermutlich die auf der Webseite?

Wenn Du denn emsclient startest funktioniert der vermutlich auch, oder?
Oder ist die Statistik Die Du meint nur die letzten Werte aus der 
MySQL-Datenbank?

von Jens H. (sevensworld)


Lesenswert?

Statistik der Webseite und das Protokoll war gemeint ... sorry fürs 
unklare ausdrücken :(

von Helmut J. (helmbrot)


Angehängte Dateien:

Lesenswert?

Hallo an die Runde,
Ich habe einen Ölkessel GB125 mit RC35.
Der ems-collector mit ems-php-webinterface läuft soweit.
Ich habe allerdings das Problem, dass im Heizungs Livestatus die 
Betriebsart "Manuell" angezeigt wird, wenn die RC35 "Automatik" anzeigt 
und ungekehrt.
Siehe dazu den Screenshot von Eclipse.

von Johannes W. (johannes_w258)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich habe eine GB172 mit der RC 35 und möchte diese nun gerne über meine 
FHEM steuern. Hierzu habe ich mir den EMS Adapter zusammengelötet.

Nun habe ich jedoch mehrere Fragen:

1. Kann ich mir die Heizung kaputt machen falls ich einen Fehler auf der 
Platine habe?

2. Kann ich die Platine vorher testen bevor ich diese an meine Heizung 
anschließe?

3. Wie wird die Platine genau angeschlossen? Kann ich diese einfach an 
meine RC 35 (siehe Bilder) dazu klemmen? Also einfach an die Anschlüsse 
zwei Kabel dazu klemmen und diese dann an meine Platine?

4. Wie sieht es mit der Polarität vom EMS Bus aus? Ist es egal wie das 
geklemmt wird?

Fragen über Fragen :-)

Danke schon im Vorraus für die Beantwortung.

Viele Grüße
Johannes

: Bearbeitet durch User
von IngoF (Gast)


Lesenswert?

Hallo Johannes,

1) Ist schon schwer die Heizung damit kaputt zu bekommen.
Die einzige Möglichkeit ist vermutlich wenn die Platine auf dem EMS-Bus 
einen Kurzschluss machen würde oder Spannung herausgibt.

2) Das lässt sich aber mit einem Multimeter schnell feststellen ob 
Kurzschluss oder Spannung.

3)Einfach parallel anklemmen

4)Durch den eingebnauten Gleichrichter kann die Platine nicht verpolt 
werden.

Viel Spaß mit der Platine...

von Chris (Gast)


Lesenswert?

Hi,

ich habe die Kombination net-io + pi mit collectord, ems-tools und dem 
neuen Webinterface eingerichtet und mich dabei an die Anleitung im wiki 
gehalten. Hier mal ein Feedback mit Anregungen fürs die 
Installationsanleitung und am Ende mit Fehlern, die ich noch nicht lösen 
konnte.

Anlegen der Datenbank:
Etwas unklar fand ich das setzen des Passworts für die Datenbank. Da 
wäre ein Hinweis gut, dass man mit mysql> select password('password'); 
einen Hash erzeugt. Das 'password' würde ich zum besseren Verständnis 
durch "geheim" ersetzen.

Nach dem kompilieren des Collectors und testen mit ./collectord -u ems 
....
fehlt der Hinweis, dass man collectord nach /usr/local/sbin/ kopieren 
muss.
Macht man das nicht, zeigt das Webinterface später "connection refused" 
an. Das init-Skript für den Collector gibt komischerweise keine 
Fehlermeldung aus, wenn das Executable nicht vorhanden ist?...

Nachdem ich diese Dinge herausgefunden hatte, lief das Webinterface und 
lieferte auch die aktuellen Daten.

Das Unterverzeichnis graphs im html-Verzeichnis muss vom User des 
Webservers (www-data) beschreibbar sein (chwon www-data:www-data), sonst 
gibt es Fehlermeldungen von gnuplot in den logs.

Aus a_emshk.php und emshkpic.ajax habe ich den Aufruf von 
calcheizkurve.sh entfernt und lasse ihn von cron erledigen, denn der 
Aufruf von sudo vom webserver aus funktioniert ja ohne weitere 
Änderungen nicht.


Nun läuft soweit alles.
Beim Aufruf der Statistik-Seite gibt es ein paar Meldungen in den Logs:
1
[Sat Nov 12 12:28:07.115282 2016] [:error] [pid 5424] [client 192.168.10.30:47472] PHP Notice:  Trying to get property of non-object in /var/www/html/ems/sensor_utils.php.inc on line 21, referer: http://pi1/ems/?seite=a_emstime.php
2
[Sat Nov 12 12:28:07.116255 2016] [:error] [pid 5424] [client 192.168.10.30:47472] PHP Warning:  strftime() expects parameter 2 to be long, string given in /var/www/html/ems/utils.php.inc on line 11, referer: http://pi1/ems/?seite=a_emstime.php

Sowohl auf der Seite der Heizkurve als auch auf der Seite Einstellungen 
steht die minimale Aussentemperatur auf 0. Bei der Heizkurve steht die 
Auslegungstemperatur auf "bitte wählen".

von Johannes W. (johannes_w258)


Lesenswert?

Hi Chris,

hast du dir die Platine selber gelötet? Ich bin auch gerade dran das 
ganze Zeug zum Laufen zu bekommen, jedoch will es nicht so wie ich es 
will ;-)

AVR Net IO und Cubietruck laufen und kommunizieren. Leider bekomme ich 
keine Verbindung zum EMS Bus hin. Vielleicht habe ich einen Fehler auf 
der Platine.

Hast du dir das Ethersex selber konfiguriert, oder hast du das fertige 
File aus dem Forum genommen?

Danke und Grüße
Johannes

von Chris (Gast)


Lesenswert?

Hi Johannes,

die Schaltung ist selbst gelötet. Was mich noch stört ist, dass man am 
Net-IO ein Netzwerkkabel braucht. Der Raspberry Pi sitzt im gleichen 
Gehäuse und ist per Wlan angebunden, so dass eine Seriellverbindung 
zwischen Net-IO und Raspberry die bessere Lösung wäre....

Ich habe das Ethersex-Hex aus dem Wiki geflasht und natürlich die Fuses 
angepasst. Dann wie beschrieben die Netzwerkeinstellungen festgelegt.
Das Interface zum EMS-Bus ist selbst gelötet. Blinkt denn bei dir die 
RX-LED?

Gruß,
Chris

von Johannes W. (johannes_w258)


Lesenswert?

Hi Chris,

nein die LED's blinken nicht wenn ich die Platine am BUS angeklemmt hab. 
Manchmal blinken die willkürlich.

Kannst du mir mal ein Foto von deiner Platine schicken bzw. posten? Hast 
du den Warenkorb aus dem Forum von reichelt verwendet?

Wenn ich das fertige Ethersex nehme, kann ich wie im Forum beschrieben 
nur die MAC ändern. Wenn ich die IP ändere schreibt er zwar auch OK, die 
IP ist dann aber weiterhin die 192.168.0.0.

Sehr seltsam das ganze...

Entweder habe ich einen Fehler auf der Platine, oder mein selbst 
konfiguriertes hex ist falsch.

Grüße
Johannes

von Johannes W. (johannes_w258)


Lesenswert?

Es klappt jetzt :-)

Ich hatte eine Lötverbindung vergessen. Ich kann über den telnet 
localhost 7777 jetzt Informationen abfragen.

getversion
collector version: 2016030701
UBA version: 4.05
BC10 version: 1.05
RC3x version: 1.15

Sehr schön. Jetzt kommt die Anbindung an meine FHEM.

von Jens Heruth (Gast)


Lesenswert?

Hallo Ingo,
der Fehler mit graphs/schedule.png scheint daran zu liegen, das die 
Grafik im Html Verzeichnis erzeugt wird und zwar unter dem Namen 
Graphsschedule.png.
Da scheint im Code zum Erzeugen der Grafik ein / zu fehlen, daher wird 
das Bild nicht im richtigen Ordner erstellt.
Hab leider nicht gefunden wo genau das Bild erstellt wird ...


Gruß
Jens

von Jens Heruth (Gast)


Lesenswert?

Ok gefunden ... emsquery.inc Zeile 282, es reicht aber wenn man in der 
Config Datei den Pfad zum Graphs Ordner mit einem abschließenden / 
konfiguriert, dann gehts -.- omg

von Ingof (Gast)


Lesenswert?

Danke für den Hinweis.

Werde mir das mal ansehen und beheben. Die anderen Anregungen werden 
dann auch ins wiki eingearbeitet.

Weiß nur noch nicht wann ich dazu komme.

von Johannes W. (johannes_w258)


Lesenswert?

Chris schrieb:

>Was mich noch stört ist, dass man am
> Net-IO ein Netzwerkkabel braucht. Der Raspberry Pi sitzt im gleichen
> Gehäuse und ist per Wlan angebunden, so dass eine Seriellverbindung
> zwischen Net-IO und Raspberry die bessere Lösung wäre....


Das der AVR Net IO per Kabel angebunden werden muss, stört mich aktuell 
auch. Ich werde mal dieses Teil hier testen:

https://www.amazon.de/TP-Link-TL-WA850RE-Repeater-Deutsche-Version/dp/B00Q6CC2J8/ref=sr_1_3?ie=UTF8&qid=1479027240&sr=8-3&keywords=repeater+lan+port

Der sollte den AVR Net IO ins wlan bringen. Somit dürfte die 
Kabelverlegung von der Heizung zum Router entfallen.

Hat jemand so ein Konstrukt schon im Einsatz?

Grüße
Johannes

: Bearbeitet durch User
von Chris (Gast)


Lesenswert?

Über so einen Repeater sollte das problemlos laufen.

von IngoF (Gast)


Lesenswert?

Chris schrieb:
> Das 'password' würde ich zum besseren Verständnis
> durch "geheim" ersetzen.
>
> Nach dem kompilieren des Collectors und testen mit ./collectord -u ems
> ....
> fehlt der Hinweis, dass man collectord nach /usr/local/sbin/ kopieren
> muss.

Das habe ich schon mal im Wiki geändert.
Den Rest muss ich noch überlegen wo ich das einarbeite.

Jens Heruth schrieb:
> Ok gefunden ... emsquery.inc Zeile 282, es reicht aber wenn man in der
> Config Datei den Pfad zum Graphs Ordner mit einem abschließenden /
> konfiguriert, dann gehts -.- omg

Wie hast Du das gelöst?
vermutlich wäre es am einfachsten in der Zeile 282 das / einzufügen, 
oder?

Befürchte aber dass man dann zwei  hat wenn der graphpath mit  
abschließt.
in der config.php ist der abschließende / vorhanden.

von Jens Heruth (Gast)


Lesenswert?

Einfügen in der Zeile hat nicht geklappt oder ich habs falsch gemacht !?
Bei mir hat das Einfügen des abschließenden / in der Config.php das 
Problem gelöst !?

von IngoF (Gast)


Lesenswert?

Jens Heruth schrieb:
> Einfügen in der Zeile hat nicht geklappt oder ich habs falsch gemacht !?

Keine Ahnung....
Ich hätte erst mal aus
1
fwrite($p,"set output '$graphpath$outfn'\n");
folgendes gemacht:
1
fwrite($p,"set output '$graphpath/$outfn'\n");

oder muss man dann soetwas veranstalten?:
1
fwrite($p,"set output '".$graphpath."/".$outfn."'\n");

habe leider im Moment und in den nächsten zwei Wochen keine Möglichkeit 
das zu testen.

von IngoF (Gast)


Lesenswert?

Jens Heruth schrieb:
> Einfügen in der Zeile hat nicht geklappt oder ich habs falsch gemacht !?

Als erstes hätte ich aus:
1
fwrite($p,"set output '$graphpath$outfn'\n");
folgendes gemacht:
1
fwrite($p,"set output '$graphpath/$outfn'\n");

Oder müsste man soetwas versuchen:
1
fwrite($p,"set output '".$graphpath."/".$outfn."'\n");


???

von Jens Heruth (Gast)


Lesenswert?

IngoF schrieb:
> folgendes gemacht:fwrite($p,"set output '$graphpath/$outfn'\n");

Das hatte ich versucht, dann wird die Datei aber weiterhin im 
Stammordner erstellt und heißt dann lediglich graphs/schedule.png

Die 2. Version wäre mein nächster Versuch gewesen, aber dann hatte ich 
einfach mal den / in der Config gesetzt und da es dann ging habe ich 
nicht weiter getestet.

von IngoF (Gast)


Lesenswert?

Jens Heruth schrieb:
> Das hatte ich versucht, dann wird die Datei aber weiterhin im
> Stammordner erstellt und heißt dann lediglich graphs/schedule.png

Das hätte ich jetzt nicht erwartet...
Hätte eher gedacht dass der Schrägstrich irgendwie herausgefiltert 
wird...

von Johannes W. (johannes_w258)


Lesenswert?

Hallo zusammen,

ich bin aktuell dabei das ganze in meine FHEM zu integrieren. Das klappt 
bisher auch super. Begonnen habe ich mit den Readings zum auslesen der 
aktuellen Werte.

Nun bin ich dabei, auch die Heizung über Fhem zu steuern.
Kann mir jemand sagen ob es einen telnet command gibt für den Heizkreis 
abzuschalten?
In der RC35 kann ich bei Sommer / Winter Schwelle auch "ständig aus" 
wählen.

Danke und Grüße
Johannes

von Helmbrot@hotmail.de (Gast)


Lesenswert?

Hallo  Jens Heruth,
die Abweisung "fwrite($p,"set output '$graphpath$outfn'\n");", läuft bei 
mir sowohl auf der Himbeere als auch unter Ubuntu.  Wichtig ist der 
$graphpath in config.php,z.B. „var/www/html/graphs/" .

von Patric S. (stroka)


Lesenswert?

Hallo,
hat evl. jemand eine Adapterplatine zu veräußern?
Ich kann bei mir den Fehler einfach nicht finden.

Gruß

von Johannes (Gast)


Lesenswert?

Hallo Patric,

eine weitere Platine habe ich nicht. Ich stand jedoch vor paar Tagen vor 
dem gleichen Problem. Bei mir hat letztendlich eine Verbindung gefehlt 
die ich schlicht übersehen hatte. Und im reichelt Warenkorb war auch ein 
Teil (MKP10-1600 1,5N) was gefehlt hat.
Ich würde einfach noch mal alles systematisch durchgehen.

Grüße
Johannes

von Patric (Gast)


Lesenswert?

Hallo Johannes,
danke für die schnelle Antwort.
Der Kondensator ist mir gar nicht aufgefallen, da im Reichelt Warenkorb 
ein anderer vorhanden war. Zwar die selbe Kapazität aber anderer Typ.

Ich hätte da noch eine Frage zum Hexfile. Ich kann den Onewire device 
detection support nur aktivieren wenn Enable Debugging gesetzt ist, dann 
kann ich es aber nicht Kompilieren.

Gruß

von Andre G. (whopperg)


Lesenswert?

Ola Zusammen!
Ich bekomme seit einigen Tagen / Wochen beim versenden von commandos per 
telnet zum collectord bei einigen Befehlen ein ERRTIMEOUT
1
telnet localhost 7777
2
Trying ::1...
3
Trying 127.0.0.1...
4
Connected to localhost.
5
Escape character is '^]'.
6
help
7
Available commands (help with '<command> help'):
8
hk[1|2|3|4]
9
ww
10
uba
11
rc
12
raw
13
cache
14
getversion
15
OK
16
getversion
17
collector version: 2016030701
18
ERRTIMEOUT
19
rc geterrors
20
ERRTIMEOUT

Allerdings werden mir z.B. übers WI Punkt "EMS-Rohdaten"
werden einige Werte (Uhrzeit, Betriebsminuten usw) richtig angezeigt.
Unter Statistiken werden aber auch nicht mehr die Versionen angezeigt:

Softwareversion UBA offline
Softwareversion BC10 offline
Softwareversion RC35 offline

Das hatte früher definitiv funktioniert.

OS: Debian 8
M644p mit ethersex und dem Stand von heute (nachdem es 3 Jahre lief hab 
ich vorsichtshalber mal eine Aktuelle Version gebrannt)
EMS-Tools, Collectord usw auf Stand des aktuellen GITs von IngoF.
GB 172 mit RC100 und BC10

Ich kann also Daten empfangen, nur fehlen offensichtlich einige.
Hat jemand noch einen (Debug)Tipp für mich?

Grüße

von Patric Stroka (Gast)


Lesenswert?

Hallo Gemeinde,
bei dem installieren von dem Paket ems-buderus-0.5 tritt immer folgender 
Fehler auf : pkg: Fehler beim Bearbeiten des Archivs ems-buderus_0.5.deb 
(--install):
 Unterprozess neues pre-installation-Skript gab den Fehlerwert 2 zurück
Fehler traten auf beim Bearbeiten von:
 ems-buderus_0.5.deb

Ich kann ems-collector zwar starten, bekomme aber keine Verbindung über 
Telnet.

Manuel kann ich mit collectord -u ems -p geheim -f -d all 
tcp:192.168.xxx.xxx:7950 die Telegramme starten, das wars dann aber 
schon.
Evl. hat ja jemand von euch eine Idee, ich stehe momentan echt auf dem 
Schlauch was den Fehler angeht.

Das Testsystem ist Ubuntu 16.10.

Gruß Patric

von Karl M. W. (charlie-w)


Lesenswert?

Servus Patric,

soweit ich das verstanden habe, wird das Paket "ems-buderus_0.5.deb" 
nicht mehr gepflegt.

Manuelle Installation ist der beste Weg. Wie das geht, ist unter [1] 
ausführlich beschrieben.

Gruß
Karl M.

[1] 
http://emswiki.thefischer.net/doku.php?id=wiki:ems:net_io#raspberry_pi

von Patric S. (stroka)


Lesenswert?

Nabend,
vielen Dank für die Nachricht.
Habe es jetzt zum laufen bekommen, zwar noch bisschen langsam aber mal 
sehen.
Danke an alle in diesem Forum.

von Helmut J. (helmbrot)


Lesenswert?

Hallo Danny Baumann,
ich sehe in der Statistik des ems-php-webinterface keine Werte für die 
Raumtemperatur. Das gilt auch für die Datenbank, hier gibt es zwar den 
Sensor 13 und 14. In der Tabelle numeric_data gibt es aber keine 
Einträge dazu.

'13', '1', 'Raum-Soll-Temperatur', '1', '°C', '1'
'14', '1', 'Raum-Ist-Temperatur', '1', '°C', '1'

Hast da eine Lösung?

von Danny B. (maniac103)


Lesenswert?

Helmut J. schrieb:
> Hallo Danny Baumann,
> ich sehe in der Statistik des ems-php-webinterface keine Werte für die
> Raumtemperatur. Das gilt auch für die Datenbank, hier gibt es zwar den
> Sensor 13 und 14. In der Tabelle numeric_data gibt es aber keine
> Einträge dazu.
>
> '13', '1', 'Raum-Soll-Temperatur', '1', '°C', '1'
> '14', '1', 'Raum-Ist-Temperatur', '1', '°C', '1'
>
> Hast da eine Lösung?

Schau mal in Database.cpp, Zeile 342/343 und mach aus dem HK2 ein HK1. 
Dann sollte es gehen ;-) Meine RC35 hängt an HK2, deshalb ist der Code 
so wie er ist. Ich wollte schon ewig mal einen Parameter für den 
Collector einbauen, der den Default für solche Dinge festlegt, bin aber 
noch nicht dazu gekommen.

von Andre G. (whopperg)


Lesenswert?

Hey Danny,
Wie finde ich denn raus an welchem KH der RC hängt?
Ich hab 2 HKs, 1x FBH und 1x Heizkörper(vermute ich :-))  und nen 
RC100...
Grüße

: Bearbeitet durch User
von Danny B. (maniac103)


Lesenswert?

Andre G. schrieb:
> Hey Danny,
> Wie finde ich denn raus an welchem KH der RC hängt?
> Ich hab 2 HKs, 1x FBH und 1x Heizkörper(vermute ich :-))  und nen
> RC100...

Das lässt sich in den RC-Einstellungen einstellen (bei der RC35 ist das 
unter Wartungsmenü -> Heizkreis x). Wenn die RC mehreren Heizkreisen 
zugeordnet ist, sollte die Raumtemperatur in allen zugeordneten 
Heizkreisen auftauchen. Ein Message-Log schafft im Zweifelsfall Klarheit 
;-)

von Helmut J. (helmbrot)


Lesenswert?

Danny B. schrieb:
> Schau mal in Database.cpp, Zeile 342/343 und mach aus dem HK2 ein HK1.
> Dann sollte es gehen ;-) Meine RC35 hängt an HK2, deshalb ist der Code
> so wie er ist. Ich wollte schon ewig mal einen Parameter für den
> Collector einbauen, der den Default für solche Dinge festlegt, bin aber
> noch nicht dazu gekommen.

Hallo Danny,
das wars leider nicht. Die Raum-Ist-Temperatur /Raum-Soll-Temperatur 
wird in den Rohdaten sowohl für HK1 und HK2 angezeigt.
Gruß

von Patric S. (stroka)


Lesenswert?

Hallo Gemeinde,
welchen Fehler könnte ich gemacht haben, dass die Ladezeiten für z.B. 
Einstellungen oder Livestatus sehr lange dauern?


Gruß Patric

von Helmut J. (helmbrot)


Lesenswert?

Helmut J. schrieb:
> Danny B. schrieb:
>> Schau mal in Database.cpp, Zeile 342/343 und mach aus dem HK2 ein HK1.
>> Dann sollte es gehen ;-) Meine RC35 hängt an HK2, deshalb ist der Code
>> so wie er ist. Ich wollte schon ewig mal einen Parameter für den
>> Collector einbauen, der den Default für solche Dinge festlegt, bin aber
>> noch nicht dazu gekommen.
>
> Hallo Danny,
> das wars leider nicht. Die Raum-Ist-Temperatur /Raum-Soll-Temperatur
> wird in den Rohdaten sowohl für HK1 und HK2 angezeigt.
> Gruß

Hallo Danny,
ich habe mir das Problem einmal im Debugger angesehen. Dabei ist mir 
folgendes Aufgefallen:

Database.cpp
Zeile 324

NUMERICMAPPING[]
Die RaumIstTemp ist auf Position 12 -> EmsValue::IstTemp, EmsValue::HK1, 
SensorRaumIstTemp

Der SensorRaumIstTemp ist in der DB aber auf Sensor 14 !
Bei anderen Messwerten wie z.B. SollTemp Kessel ist das gleich, also
SollTemp Kessel ist auf Pos 1 und auch Sensor 1.


In Database.cpp wird ab Zeile 411 mit addSensorValue der Wert in die DB 
geschrieben,
bei der RaumIstTemp kommet er da nicht hin!

for (size_t i = 0; i < sizeof(NUMERICMAPPING) / 
sizeof(NUMERICMAPPING[0]); i++) {
  if (type == NUMERICMAPPING[i].type && subtype == 
NUMERICMAPPING[i].subtype) {
      addSensorValue(NUMERICMAPPING[i].sensor, value.getValue<float>());
      return;


Gruß

von Helmut J. (helmbrot)


Lesenswert?

Helmut J. schrieb:
> Helmut J. schrieb:
>> Danny B. schrieb:
>>> Schau mal in Database.cpp, Zeile 342/343 und mach aus dem HK2 ein HK1.
>>> Dann sollte es gehen ;-) Meine RC35 hängt an HK2, deshalb ist der Code
>>> so wie er ist. Ich wollte schon ewig mal einen Parameter für den
>>> Collector einbauen, der den Default für solche Dinge festlegt, bin aber
>>> noch nicht dazu gekommen.
>>
>> Hallo Danny,
>> das wars leider nicht. Die Raum-Ist-Temperatur /Raum-Soll-Temperatur
>> wird in den Rohdaten sowohl für HK1 und HK2 angezeigt.
>> Gruß
>
> Hallo Danny,
Ich habe dazu noch etwas geforscht, Database.cpp  sollte so aussehen:
344  { EmsValue::RaumSollTemp, EmsValue::HK1, SensorRaumSollTemp 
},//geändert von HK2 nach HK1 SollTemp nach RaumSollTemp
355     { EmsValue::RaumIstTemp, EmsValue::HK1, SensorRaumIstTemp 
},//geändert von HK2 nach HK1 IstTemp nach RaumIstTemp

Damit geht es dann.

von IngoF (Gast)


Lesenswert?

Die EMS-Wiki ist zur Zeit erst einmal offline.
Mein Server ist gestorben und ich habe mit der Wiederbelebung bekommen.

Kann also noch nicht sagen ab wann das emswiki wieder läuft...

von Andre G. (whopperg)


Lesenswert?

Danke für die Info!

Viel Glück bei der Wiederherstellung!

Gruß

von F. F. (pic18f)


Lesenswert?

Danke für die Info,
hatte vor kurzem mal die Platinenpläne vom GW2 gesucht. Da gingen manche 
Links nicht.

von IngoF (Gast)


Lesenswert?

So,

zeitweise ist schon mal eine Wiki auf einem Testserver in Betrieb.
Keine Ahnung wie aktuell der ist.

Melde mich hier wenn er wieder richtig läuft..

Gruß
Ingo

von ingoF (Gast)


Lesenswert?

IngoF schrieb:
> Melde mich hier wenn er wieder richtig läuft..

Das Wiki läuft seit gestern wieder auf dem richtigen Server.
Hat etwas länger gedauert. Wenn jetzt noch Fehler auffallen einfach 
melden oder im Wiki selber ändern.

Fall noch die "Wartungsmeldung" erscheint einfach noch mal im Browser 
aktualisieren.

von Marco (Gast)


Lesenswert?

Hallo!

Ich habe nach dem WIKI alles nachgebaut bei meiner GB172 mit RC35 und es 
funktioniert grundsätzlich alles, vielen Dank!

Ich habe aber ein paar Probleme:

1. Wenn ich im Web Interface auf "Einstellungen" klicke verliert er die 
Verbindung zum EMS Bus bis zum Neustart des Linux Servers
2. Wenn ich auf "Heizkurve" klicke kommt die Meldung "Anlage ist 
raumtemperaturgeführt!" obwohl im RC35 außentemperaturgeführt 
eingestellt ist
3. In der Statistik ist die Raumtemperatur dauerhaft 0, obwohl in den 
Rohdaten diese richtig angezeigt werden
4. In der Statistik zeigt er mir die anderen Bus Teilnehmer als offline 
an:
Softwareversion UBA  offline
Softwareversion BC10  offline
Softwareversion RC35  offline
obwohl sie definitiv online sind. Die Graphen werden auch nicht 
angezeigt

Hat jemand eine Idee, woran das liegen könnte? Ich bin sonst total 
begeistert, dass es so reibungslos ging.

von ingof (Gast)


Lesenswert?

Marco schrieb:
> 2. Wenn ich auf "Heizkurve" klicke kommt die Meldung "Anlage ist
> raumtemperaturgeführt!" obwohl im RC35 außentemperaturgeführt
> eingestellt ist

Das liegt vermutlich daran dass die RC35 nicht eingestellt wurde. Meine 
sowas irgendwann gelesen zu haben.

Wegen der anderen Sachen:
Funktionieren denn die Tests mit Telnet auf den EMS-Collector oder den 
EMS-Tools (emsclient) fehlerfrei?

von Marco (Gast)


Angehängte Dateien:

Lesenswert?

Der RC35 ist in der ems-collector.conf ausgewählt.
Scheinbar liegt es am Telnet, dort bekomme ich die Fehlermeldungen aus 
dem angehängten Bild

von Marco (Gast)


Angehängte Dateien:

Lesenswert?

Muss korrigieren, bei Cache Fletch hk1 zeigt er mir werte an. Bei Telnet 
Port 7778 kommen auch Werte, aber mit einigen Fehlern

von Ingo F. (ingof)


Lesenswert?

Marco schrieb:
> aber mit einigen Fehlern

Das sind vermutlich keine Fehler.
So wie es aussieht sind das die Fehlereinträge Deiner Heizung.
Die sollten auch an der RC35 auslesbar sein.
Das zweite Bild ist meiner Meinung nach voll OK.

B00 bis B04 sind wohl die blockierenden Fehler Deiner Heizung.

: Bearbeitet durch User
von Marco (Gast)


Lesenswert?

Ok dann ist nur die Frage, warum die o.g. Dinge nicht gehen

von Ingo F. (ingof)


Lesenswert?

Also beim ersten Foto dürfte kein ERRCMD kommen.

Da scheint noch was nicht in Ordnung zu sein.
Hoffe es kann jemand bei dem Problem weiterhelfen....

: Bearbeitet durch User
von Carsten (Gast)


Lesenswert?

Hi,

ich habe in den letzten Tagen das Gateway mit Net-IO, das neue 
Webinterface und nachtürlich collectord und die ems-tools aufgesetzt. 
Geniales Projekt, vielen Dank an alle Entwickler!

Aktuell jage ich noch folgende Fehler:
1.) Der Graph der Heizkurve ist oben irgendwo bei 45 oder 48 Grad 
abgeschnitten. Ich hätte jetzt erwartet, dass das dynamisch ist, je nach 
Heizkurve. Tatsächlich sind die Maximum-Werte aber fest in den Skripten 
hinterlegt, so dass man das einfach ändern kann.
Vielleicht wären hier andere Default-Werte sinnvoll. 10-90°C sollten 
alle Heizungssysteme abdecken.

2.) Calcheizkurve.sh hat irgend ein Problem bei mir. Ich muss den 
Prozess mehrmals am Tag killen, da er die CPU voll auslastet und sich 
selbst nicht mehr beendet (und dadurch auch mehrfach läuft). Vermutlich 
passiert das, wenn mein Net-IO nicht erreichbar ist (fällt immer mal 
wieder wegen Unterspannung aus, aber das ist eine andere Baustelle).
Cron mailt mir dann folgendes zu:
1
PHP Warning:  socket_write(): unable to write to socket [32]: Broken pipe in /usr/local/ems-tools/includes/emsqry.inc on line 69
2
PHP Warning:  socket_write(): unable to write to socket [32]: Broken pipe in /usr/local/ems-tools/includes/emsqry.inc on line 69
3
PHP Warning:  socket_write(): unable.........
4
/usr/local/ems-tools/scripts/calcemsgraphs.sh: Zeile 9:  2419 Beendet                 $BINDIR/calcheizkurve.sh
Vielleicht fehlt da eine Abbruchbedingung bei Fehler, oder ein 
Timeout-Wert.

3.) Ich sehe in der Statistik keine Werte für die Raumtemperatur. Bei 
den EMS-Rohdaten ist sie als "hk1 roomcurrenttemperature" aufgeführt. 
Muss ich das noch irgend wie zuordnen?

4.) In den Einstellungen wird die "minimale Außentemperatur" als 0°C 
ausgelesen. Die Anlage steht aber auf -10. Ich kann den Wert über das 
Webinterface erfolgreich setzen, aber auch dann wird wieder 0°C 
angezeigt. In den Rohdaten tauchen die -10 Grad unter "mintemperature" 
auf.

Gruß,
Carsten

von Danny B. (maniac103)


Lesenswert?

Marco schrieb:
> Der RC35 ist in der ems-collector.conf ausgewählt.
> Scheinbar liegt es am Telnet, dort bekomme ich die Fehlermeldungen aus
> dem angehängten Bild

Deine Befehle sind ja auch nicht komplett. ;) Probier z.B. mal 'ww 
help'. Der Timeout bei getversion ist aber verdächtig - sicher, dass 
deine Sendeschaltung funktioniert? Du kannst z.B. mal 'hk1 mode night' 
probieren und gucken, wie die RC35 reagiert ... wenn die Sendeschaltung 
funktioniert, sollte die RC35 anzeigen, dass der HK im Nachtmodus ist.

Carsten schrieb:
> 3.) Ich sehe in der Statistik keine Werte für die Raumtemperatur. Bei
> den EMS-Rohdaten ist sie als "hk1 roomcurrenttemperature" aufgeführt.
> Muss ich das noch irgend wie zuordnen?

Jain. Du solltest das nicht zuordnen müssen, musst(est) das auf Grund 
meiner Faulheit aber :-(
Siehe 
https://github.com/maniac103/ems-collector/commit/2636a97a5766bb5fe574dc8d05e9db5f218943a0 
... ich hatte das ursprünglich mal so gemacht, weil ich 2 Heizkreise 
habe und die RC bei mir im Wohnzimmer hängt, das zu HK2 gehört. Die RC35 
sendet die Raumtemperatur aber ohnehin für jeden zugeordneten Heizkreis 
mit ... keine Ahnung, ob mir das damals nicht aufgefallen war oder ob 
sich die RC30 (die ich damals noch hatte) diesbezüglich anders verhalten 
hat.
Bei dir sollte ein 'git pull' + compilieren des Collectors jedenfalls 
helfen.

> 4.) In den Einstellungen wird die "minimale Außentemperatur" als 0°C
> ausgelesen. Die Anlage steht aber auf -10. Ich kann den Wert über das
> Webinterface erfolgreich setzen, aber auch dann wird wieder 0°C
> angezeigt. In den Rohdaten tauchen die -10 Grad unter "mintemperature"
> auf.

Ich gehe mal davon aus, dass sie dort als 'rc mintemperature' auftaucht? 
Wenn ja, ist das ein Frontend-Problem, da kann ich dir leider nicht 
helfen.

: Bearbeitet durch User
von Carsten (Gast)


Lesenswert?

Hallo Danny,
Temperatur ist nun vorhanden, vielen Dank! Schade, dass man sie nicht 
auch im Livestatus sieht.

Bei den Rohdaten habe ich keine Werte die mit "rc" beginnen. Der Eintrag 
heißt "mintemperature".
1
EMS-Rohdaten
2
3wayonww  off
3
antipendelminutes  10 min
4
buildingtype  medium
5
burner currentmodulation  20 %
6
burner maxmodulation  100 %
7
burner minmodulation  0 %
8
burner targetmodulation  100 %
9
errorcode  200
10
exhaust currenttemperature  unavailable
11
flameactive  on
12
flamecurrent  1.5 µA
13
heater currenttemperature  35.4 °C
14
heater heaterstarts  22339
15
heater heatingminutes  1567575 min
16
heater maintenancedate  2004-01-01
17
heater maintenancedue  no
18
heater maintenanceintervalin100hours  60
19
heater maintenancereminder  off
20
heater masterswitch  on
21
heater offhysteresis  6 K
22
heater onhysteresis  -6 K
23
heater operatingminutes  1722470 min
24
heater operatingminutes2  0
25
heater pumpactive  on
26
heater settemperature  90 °C
27
heater targettemperature  33 °C
28
heateractive  on
29
heaterpump currentmodulation  100 %
30
heaterpump followupminutes  15 min
31
heaterpump maxmodulation  100 %
32
heaterpump minmodulation  50 %
33
heatexchanger currenttemperature  34.1 °C
34
hk1 cancelreducedmodethreshold  -31 °C
35
hk1 characteristic  0/0/0
36
hk1 daymode  on
37
hk1 daytemperature  20 °C
38
hk1 designtemperature  50 °C
39
hk1 floordrying  off
40
hk1 frostprotectmode  byoutdoortemp
41
hk1 frostprotectmodeactive  off
42
  
43
hk1 frostprotecttemperature  3
44
hk1 heatingsystem  heater
45
hk1 holidaymode  off
46
hk1 maxroomeffect  4 K
47
hk1 maxtemperature  55 °C
48
hk1 mintemperature  10 °C
49
hk1 nighttemperature  16 °C
50
hk1 offoptimization  off
51
hk1 offoptimizationminutes  60 min
52
hk1 onoptimization  off
53
hk1 onoptimizationminutes  120 min
54
hk1 opmode  auto
55
hk1 partyhours  0 h
56
hk1 partymode  off
57
hk1 pausehours  0 h
58
hk1 pausemode  off
59
hk1 reducedmodethreshold  3 °C
60
hk1 reductionmode  aussenhalt
61
hk1 relevantparameter  outdoor
62
hk1 remotecontroltype  rc3x
63
hk1 requestedpower  100
64
hk1 roomcurrenttemperature  20.7
65
hk1 roomtargettemperature  20 °C
66
hk1 roomtemperaturechange  0.01 K/min
67
hk1 roomtemperatureoffset  1.5
68
hk1 scheduleoptimizer  on
69
hk1 summermode  off
70
hk1 summerwinterthreshold  17 °C
71
hk1 switchpointactive  on
72
hk1 targettemperature  33 °C
73
hk1 temperatureoverride  0 °C
74
hk1 vacationmode  off
75
hk1 vacationreducedmodethreshold  5 °C
76
hk1 vacationreductionmode  indoor
77
hk1 vacationtemperature  17 °C
78
hk1 wwoverride  off
79
ignitionactive  off
80
mintemperature  -10 °C
81
operatingminutes  5065818 min
82
outdoor currenttemperature  5.9 °C
83
  
84
outdoor dampedtemperature  6 °C
85
outdoortempdamping  off
86
pressure  1.7 bar
87
returnflow currenttemperature  32.4 °C
88
servicecode  -H
89
systemtime  2017-02-17 09:14:19
90
warmwaterminutes  154895 min
91
warmwaterpreparationactive  off
92
warmwaterpreparations  3806
93
warmwatersystemtype  large
94
warmwatertempok  on
95
ww boostcharge  off
96
ww currenttemperature  58.7 °C
97
ww customschedule  on
98
ww daymode  off
99
ww desinfection  off
100
ww desinfectionactive  off
101
ww desinfectionday  tuesday
102
ww desinfectionfailure  off
103
ww desinfectionhour  1 h
104
ww desinfectiontemperature  70 °C
105
ww failure  off
106
ww flowrate  0
107
ww loading  off
108
ww masterswitch  on
109
ww maxtemperature  60 °C
110
ww onetimeload  off
111
ww onetimeloadindicator  on
112
ww opmode  auto
113
ww sensor1failure  off
114
ww sensor2failure  off
115
ww settemperature  60 °C
116
ww targettemperature  10 °C
117
zirkpump customschedule  on
118
zirkpump daymode  on
119
zirkpump opmode  auto
120
zirkpump switchpoints  alwayson
121
zirkpumpactive  on

von Danny B. (maniac103)


Lesenswert?

Carsten schrieb:
> Hallo Danny,
> Temperatur ist nun vorhanden, vielen Dank! Schade, dass man sie nicht
> auch im Livestatus sieht.
>
> Bei den Rohdaten habe ich keine Werte die mit "rc" beginnen. Der Eintrag
> heißt "mintemperature".

Ah, doch ein Bug im Collector ;-) Hab's gefixt, sollte nach 
Collector-Update funktionieren.

von Helmut J. (helmut_j245)


Lesenswert?

Carsten schrieb:
> Hi,
>
> ich habe in den letzten Tagen das Gateway mit Net-IO, das neue
> Webinterface und nachtürlich collectord und die ems-tools aufgesetzt.
> Geniales Projekt, vielen Dank an alle Entwickler!
>
> Aktuell jage ich noch folgende Fehler:
>
>
> 3.) Ich sehe in der Statistik keine Werte für die Raumtemperatur. Bei
> den EMS-Rohdaten ist sie als "hk1 roomcurrenttemperature" aufgeführt.
> Muss ich das noch irgend wie zuordnen?
>
> 4.) In den Einstellungen wird die "minimale Außentemperatur" als 0°C
> ausgelesen. Die Anlage steht aber auf -10. Ich kann den Wert über das
> Webinterface erfolgreich setzen, aber auch dann wird wieder 0°C
> angezeigt. In den Rohdaten tauchen die -10 Grad unter "mintemperature"
> auf.
>
> Gruß,
> Carsten

Hallo Carsten,

Zu3)Das Problem hatte ich auch.

Schau mal in Database.cpp  ob dort noch HK1 IstTemp steht?
Es sollte so aussehen:
344  { EmsValue::RaumSollTemp, EmsValue::HK1, SensorRaumSollTemp
},//geändert von HK2 nach HK1 SollTemp nach RaumSollTemp
355     { EmsValue::RaumIstTemp, EmsValue::HK1, SensorRaumIstTemp
},//geändert von HK2 nach HK1 IstTemp nach RaumIstTemp

Zu4) Ich habe das gleiche Verhalten. Ich werde mir das mal genauer 
ansehen, dauert aber noch etwas.

Gruß
Helmut

von Danny B. (maniac103)


Lesenswert?

Helmut, du bist ein bisschen spät dran ... ich hab beide Probleme schon 
gefixt :)

von Patric S. (stroka)


Lesenswert?

Moin Moin,
ich habe jetzt alles seit Dezember am laufen.
Super Arbeit vielen Dank dafür.
Ist es möglich, bei einem Fehler der Therme, eine Fehlermeldung starten 
zu können oder einen Kontakt schalten zu lassen?

Gruß

von Andre G. (whopperg)


Lesenswert?

Du kannst eigentlich mit Scripts (z.b. PHP) alles machen( cron Job 
gesteuert alle 5 min). Frage die Datenbank nach Fehlern die du gemeldet 
haben möchtest einfach ab.
Ich nutze das z.b. um mir Daten im openHAB anzeigen zu lassen um dann 
zum Beispiel per Telegram Bot eine Nachricht aufs Telefon zu schicken.

Gruß

: Bearbeitet durch User
von Danny B. (maniac103)


Lesenswert?

Andre G. schrieb:
> Du kannst eigentlich mit Scripts (z.b. PHP) alles machen( cron Job
> gesteuert alle 5 min). Frage die Datenbank nach Fehlern die du gemeldet
> haben möchtest einfach ab.

Ich glaube, du hast ihn da falsch verstanden. EMS-Fehler landen in 
keiner Datenbank. Man kann sich natürlich trotzdem etwas bauen (zyklisch 
'geterrors' senden, Antwort parsen und schauen, ob etwas aktuelles dabei 
ist).

> Ich nutze das z.b. um mir Daten im openHAB anzeigen zu lassen um dann
> zum Beispiel per Telegram Bot eine Nachricht aufs Telefon zu schicken.

OpenHAB per MySQL anzubinden, erscheint mir etwas umständlich ;) Ich 
lasse MySQL bei mir komplett weg, binde OprnHAB via MQTT an (dafür hatte 
ich das geschrieben) und schreibe die Sensordaten, die mich 
interessieren, dann in eine influxdb-Datenbank (dir ich dann für 
Visualisierung mit Grafana auslese)

von Andre G. (whopperg)


Lesenswert?

Auch ne coole Idee :-) Habe nur keinen blassen Schimmer was MQTT ist :-) 
lese ich mich mal ein.
Hast du da Beispiele?

Ich dachte es wären die Fehlern oder gemeint. Und die Meldungen sind 
doch in der Datenbank? Ach ich hab das mit dem Protokoll verwechselt. 
Ist ja auch schon spät:-)

Ich hab mir einfach ein PHP Script gebaut welches die von mir 
gewünschten Daten sammelt und dann per REST API und curl an openHAB 
sendet. Ich kann morgen mal einen Link mit Beispielen bereitstellen...

Danke und Gruß

: Bearbeitet durch User
von Andre G. (whopperg)


Lesenswert?

Nachtrag: Hier der Link zu meinem Script:
https://github.com/whopperg/openHABScripts/blob/master/ems_to_openhab.php
Man bedenke: ich bin kein Programmierer und habe das nach quick'n'dirty 
gelöst. Geht bestimmt besser ;-)

Ach und Grafana nutze ich auch, very nice...

: Bearbeitet durch User
von Justus (Gast)


Lesenswert?

Hallo zusammen,

ich habe Wochen verbracht zu recherchieren, wie man das KM200 so zurecht 
biegt, dass es meinen Ansprüchen genügt und finde heute durch Zufall 
diese alternative Lösung und bin begeistert.
Ich finde das großartig, dass Ihr Euer Wissen und Eure Zeit zur 
Verfügung stellt, um so etwas der Allgemeinheit zur Verfügung zu 
stellen!!!

Ich komme von der Anleitung im Wiki und habe aber bevor ich loslegen 
will die einfache Frage, wie das mit der Programmierung des ATmega644p 
genau funktioniert. Ich habe gesehen, dass es eine fertige HEX-Datei 
gibt und habe herausgefunden, dass es bei Pollin ein Programmierboard 
gibt. Das hat aber nur eine RS232 Schnittstelle, die ich sicher mit 
einem entsprechenden Adapter USB=>RS232 ansprechen kann ... Aber ab da 
werde ich hilflos, wie man den Rechner (Win, Mac oder Ubuntu) 
einrichtet, um das HEX File ordentlich auf den Chip zu brennen.

Löten und Raspberry Pi kann ich, aber gibt es eine Anleitung für die 
Chip-Programmierung für Dummies?

Es wäre toll, wenn Ihr mir dabei etwas unter die Arme greifen könntet.

Grüße
Justus

P.S. da habe ich doch noch eine Frage: Ich habe nur einen Heizkreis und 
Warmwasser. Lassen sich auch die Heizzeiten für beides über dieses 
Gateway programmieren? - Vielen Dank!

von Karl M. W. (charlie-w)


Lesenswert?

Servus!

> ... Anleitung für die Chip-Programmierung ...

Siehe: Beitrag "Re: EMS > Adapter > NetIO > Raspi"

> ... Heizkreis und Warmwasser ....

Ja!

hth

von J. R. (j_r314)


Lesenswert?

Hallo hth,

Vielen Dank für die schnelle Antwort.

Das Programmierboard von Pollin, auf das bei Deinem Link hingewiesen 
wird, hatte ich schon gefunden. Hab dann von da den Thread weitergelesen 
und der wichtige Hinweis für mich war dann in diesem Beitrag:

Beitrag "Re: EMS > Adapter > NetIO > Raspi"

 ... der Verweis auf die Software AVR Studio (mittlerweile in der 
Version 7) zum Brennen des Controllers.

Ich gehe mal davon aus, dass ich auf einem Windows PC (Win 7 oder Win 
10) mit einem USB=>RS232 Adapter das Evalutation Board von Pollin 
anschließen kann (wahrscheinlich vorher den zu programmierenden 644p 
aufstecken) und dann das heruntergeladene HEX File in der Software 
selbsterklärend auf den Chip übertragen kann (d.h. also keine weiteren 
Häkchen oder Optionen in der Software beim Brennen einschalten muss).

Stimmt das in etwa so?

Danke und Gruß
Justus

: Bearbeitet durch User
von Karl M. W. (charlie-w)


Lesenswert?

Hi,

> ... AVR Studio ...

ja, oder z.B. avrdude, siehe:
https://www.mikrocontroller.net/articles/AVRDUDE

Auf die Fuses achten! Steht aber alles im Wiki. ;-)

Auf gutes Gelingen!

von Andreas (Gast)


Lesenswert?

Ich habe den emscollectord auf einem Raspi der ersten Generation mit 
256Mb Ram laufen. Es ist die Version 2015031501. Der Raspi hat sich 
schon damals mit dem compilieren ganz schön schwer getan. Die neueste 
Version kann ich gar nicht mehr übersetzen. Nach kurzer Zeit ist kein 
Speicher mehr frei und er swapptz nur noch. Kann mir jemand die neueste 
Version fertig compiliert zukommen lassen ?

Die Alternative wäre dass ich mir einen zweiten RasPi 3 zulegen würde. 
Kann ich die Software mit diesem übersetzen (mit Raspian Jessie) und auf 
dem alten laufen lassen (mit Raspian Wheezy) ?

Vielen Dank im voraus für eure Hilfe

Andreas

von Martin B. (martin_b13)


Lesenswert?

Hallo Andreas,

als Gast ohne Email wird das 100% nix mit dem zukommen lassen.

Ich bin kein Linux-Spezialist und kämpfe selbst immer ein bisschen mit 
dem Compilieren weil die Quellen vom Raspi Wheezy gegenüber dem Debian 
Wheezy vom Denny total veraltert sind. :-P Ich würde gerne das MQTT 
verwenden doch leider braucht es die boost version 1.57 die ich für den 
Raspi Wheezy bzw. Jessie noch nicht gefunden habe.

Grüße
Martin

von Andreas Z. (andreas_z15)


Lesenswert?

Hallo Martin,

ich habe mich jetzt mal angemeldet.

Hast du eine neuere Version die du mir übersetzt zukommen lassen 
könntest ?

Welche Version lässt sich den auf dem Raspberry compilieren ?

Weisst du wie es aussieht mit übersetzen auf einem RasPi 3 und laufen 
lassen auf einem RasPi 1 ?

Gruß

Andreas

von Sebastian Z. (nicewind)


Lesenswert?

Hallo Zusammen,

leider stehe ich auch gerade vor dem Problem, mit der Himbeere das 
Compilieren nicht hinzubekommen.
Zwar habe ich mir von der Debian Seite die Boost1.63 geladen, aber das 
Make stoppt mit mir nicht erklärbaren Fehlern in der Options.cpp Datei.
Geht wohl auch nicht, wenn ich ohne MQTT Support ein Compile machen 
möchte. Mag auch evtl. an der Libboost Version liegen?!?

Kann mir evtl. jemand das fertige File mit MQTT Support für die Himbeere 
zukommen lassen?
Oder einen Hinweis, wie man das selbst fehlerfrei compilieren kann?

Beste Grüße
Sebastian

von Danny B. (maniac103)


Lesenswert?

Sebastian Z. schrieb:
> Hallo Zusammen,
>
> leider stehe ich auch gerade vor dem Problem, mit der Himbeere das
> Compilieren nicht hinzubekommen.
> Zwar habe ich mir von der Debian Seite die Boost1.63 geladen, aber das
> Make stoppt mit mir nicht erklärbaren Fehlern in der Options.cpp Datei.
> Geht wohl auch nicht, wenn ich ohne MQTT Support ein Compile machen
> möchte. Mag auch evtl. an der Libboost Version liegen?!?
>
> [...]
> Oder einen Hinweis, wie man das selbst fehlerfrei compilieren kann?

Für die Beantwortung dieser Fragen wäre die Kenntnis der auftretenden 
Fehlermeldungen durchaus hilfreich ;-)

von Sebastian Z. (nicewind)


Lesenswert?

Aber gerne, sorry :-)
Anbei die Ausgabe des Make Befehls:


g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE -MM main.cpp IoHandler.cpp 
SerialHandler.cpp SendingSerialHandler.cpp TcpHandler.cpp 
CommandHandler.cpp ApiCommandParser.cpp CommandScheduler.cpp 
DataHandler.cpp EmsM
essage.cpp ValueApi.cpp ValueCache.cpp Options.cpp PidFile.cpp > .depend
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE main.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE IoHandler.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE SerialHandler.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE SendingSerialHandler.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE TcpHandler.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE CommandHandler.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE ApiCommandParser.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE CommandScheduler.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE DataHandler.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE EmsMessage.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE ValueApi.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE ValueCache.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE Options.cpp
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE PidFile.cpp
g++ -o collectord main.o IoHandler.o SerialHandler.o 
SendingSerialHandler.o TcpHandler.o CommandHandler.o ApiCommandParser.o 
CommandScheduler.o DataHandler.o EmsMessage.o ValueApi.o ValueCache.o 
Options.o PidFil
e.o -lpthread -lboost_system -lboost_program_options
Options.o: In function `Options::parse(int, char**)':
Options.cpp:(.text+0x4dc): undefined reference to 
`boost::program_options::options_description::options_description(std::s 
tring  const&, unsigned int, unsigned int)'
Options.cpp:(.text+0x6b4): undefined reference to 
`boost::program_options::options_description::options_description(std::s 
tring  const&, unsigned int, unsigned int)'
Options.cpp:(.text+0x748): undefined reference to 
`boost::program_options::options_description::options_description(std::s 
tring  const&, unsigned int, unsigned int)'
Options.cpp:(.text+0x7d4): undefined reference to 
`boost::program_options::options_description::options_description(std::s 
tring  const&, unsigned int, unsigned int)'
Options.cpp:(.text+0x838): undefined reference to 
`boost::program_options::options_description::options_description(std::s 
tring  const&, unsigned int, unsigned int)'
Options.cpp:(.text+0xc6c): undefined reference to 
`boost::program_options::abstract_variables_map::operator[](std::string 
const&) const'
Options.cpp:(.text+0xee0): undefined reference to 
`boost::program_options::abstract_variables_map::operator[](std::string 
const&) const'
Options.o: In function `boost::program_options::typed_value<std::string, 
char>::xparse(boost::any&, std::vector<std::string, 
std::allocator<std::string> > const&) const':
Options.cpp:(.text._ZNK5boost15program_options11typed_valueISscE6xparseE 
RNS_3anyERKSt6vectorISsSaISsEE[_ZNK5boost15program_options11typed_valueI 
SscE6xparseERNS_3anyERKSt6vectorISsSaISsEE]+0x24):  undefined refere
nce to `boost::program_options::validate(boost::any&, 
std::vector<std::string, std::allocator<std::string> > const&, 
std::string*, int)'
Options.o: In function 
`boost::program_options::validation_error::validation_error(boost::progr 
am_options::validation_error::kind_t,  std::string const&, std::string 
const&, int)':
Options.cpp:(.text._ZN5boost15program_options16validation_errorC2ENS1_6k 
ind_tERKSsS4_i[_ZN5boost15program_options16validation_errorC5ENS1_6kind_ 
tERKSsS4_i]+0x24):  undefined reference to `boost::program_options::
validation_error::get_template(boost::program_options::validation_error: 
:kind_t)'
Options.cpp:(.text._ZN5boost15program_options16validation_errorC2ENS1_6k 
ind_tERKSsS4_i[_ZN5boost15program_options16validation_errorC5ENS1_6kind_ 
tERKSsS4_i]+0x3c):  undefined reference to `boost::program_options::
error_with_option_name::error_with_option_name(std::string const&, 
std::string const&, std::string const&, int)'
Options.o: In function 
`boost::program_options::basic_command_line_parser<char>::basic_command_ 
line_parser(int,  char const* const*)':
Options.cpp:(.text._ZN5boost15program_options25basic_command_line_parser 
IcEC2EiPKPKc[_ZN5boost15program_options25basic_command_line_parserIcEC5E 
iPKPKc]+0xdc):  undefined reference to `boost::program_options::to_i
nternal(std::string const&)'
Options.cpp:(.text._ZN5boost15program_options25basic_command_line_parser 
IcEC2EiPKPKc[_ZN5boost15program_options25basic_command_line_parserIcEC5E 
iPKPKc]+0x120):  undefined reference to `boost::program_options::det
ail::cmdline::cmdline(std::vector<std::string, 
std::allocator<std::string> > const&)'
Options.o: In function `boost::program_options::typed_value<unsigned 
int, char>::name() const':
Options.cpp:(.text._ZNK5boost15program_options11typed_valueIjcE4nameEv[_ 
ZNK5boost15program_options11typed_valueIjcE4nameEv]+0x370):  undefined 
reference to `boost::program_options::arg'
Options.o: In function `boost::program_options::typed_value<std::string, 
char>::name() const':
Options.cpp:(.text._ZNK5boost15program_options11typed_valueISscE4nameEv[ 
_ZNK5boost15program_options11typed_valueISscE4nameEv]+0x370):  undefined 
reference to `boost::program_options::arg'
Options.o: In function `void boost::program_options::validate<unsigned 
int, char>(boost::any&, std::vector<std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, 
std::allocator<std::basic_string
<char, std::char_traits<char>, std::allocator<char> > > > const&, 
unsigned int*, long)':
Options.cpp:(.text._ZN5boost15program_options8validateIjcEEvRNS_3anyERKS 
t6vectorISbIT0_St11char_traitsIS5_ESaIS5_EESaIS9_EEPT_l[_ZN5boost15progr 
am_options8validateIjcEEvRNS_3anyERKSt6vectorISbIT0_St11char_traits
IS5_ESaIS5_EESaIS9_EEPT_l]+0x498): undefined reference to 
`boost::program_options::invalid_option_value::invalid_option_value(std: 
:string  const&)'
Options.o:(.rodata._ZTVN5boost16exception_detail19error_info_injectorINS 
_15program_options20invalid_option_valueEEE[_ZTVN5boost16exception_detai 
l19error_info_injectorINS_15program_options20invalid_option_valueEE
E]+0x18): undefined reference to 
`boost::program_options::error_with_option_name::substitute_placeholders 
(std::string  const&) const'
Options.o:(.rodata._ZTVN5boost16exception_detail10clone_implINS0_19error 
_info_injectorINS_15program_options20invalid_option_valueEEEEE[_ZTVN5boo 
st16exception_detail10clone_implINS0_19error_info_injectorINS_15pro
gram_options20invalid_option_valueEEEEE]+0x1c): undefined reference to 
`boost::program_options::error_with_option_name::substitute_placeholders 
(std::string  const&) const'
Options.o:(.rodata._ZTVN5boost16exception_detail19error_info_injectorINS 
_15program_options16validation_errorEEE[_ZTVN5boost16exception_detail19e 
rror_info_injectorINS_15program_options16validation_errorEEE]+0x18)
: undefined reference to 
`boost::program_options::error_with_option_name::substitute_placeholders 
(std::string  const&) const'
Options.o:(.rodata._ZTVN5boost16exception_detail10clone_implINS0_19error 
_info_injectorINS_15program_options16validation_errorEEEEE[_ZTVN5boost16 
exception_detail10clone_implINS0_19error_info_injectorINS_15program
_options16validation_errorEEEEE]+0x1c): undefined reference to 
`boost::program_options::error_with_option_name::substitute_placeholders 
(std::string  const&) const'
Options.o:(.rodata._ZTVN5boost15program_options16validation_errorE[_ZTVN 
5boost15program_options16validation_errorE]+0x18):  undefined reference 
to `boost::program_options::error_with_option_name::substitute_place
holders(std::string const&) const'
Options.o:(.rodata._ZTVN5boost15program_options20invalid_option_valueE[_ 
ZTVN5boost15program_options20invalid_option_valueE]+0x18):  more 
undefined references to 
`boost::program_options::error_with_option_name::su
bstitute_placeholders(std::string const&) const' follow
Options.o:(.rodata._ZTVN5boost15program_options11typed_valueISscEE[_ZTVN 
5boost15program_options11typed_valueISscEE]+0x20):  undefined reference 
to `boost::program_options::value_semantic_codecvt_helper<char>::par
se(boost::any&, std::vector<std::string, std::allocator<std::string> > 
const&, bool) const'
Options.o:(.rodata._ZTVN5boost15program_options11typed_valueIjcEE[_ZTVN5 
boost15program_options11typed_valueIjcEE]+0x20):  undefined reference to 
`boost::program_options::value_semantic_codecvt_helper<char>::parse
(boost::any&, std::vector<std::string, std::allocator<std::string> > 
const&, bool) const'
collect2: error: ld returned 1 exit status
Makefile:46: recipe for target 'collectord' failed
make: *** [collectord] Error 1

von Danny B. (maniac103)


Lesenswert?

Ich würde mal spontan sagen, dass deine Boost-Header (*.h) nicht zu den 
Boost-Libs (*.so) passen. Was genau meinst du mit 'habe ich mir von der 
Debian Seite die Boost1.63 geladen'?

von Sebastian Z. (nicewind)


Lesenswert?

Hi,

bin wie folgt vorgegangen. Habe das Pack von hier eingebunden:
https://packages.debian.org/de/sid/arm64/libboost-dev/download


Mit apt-get install dann entsprechend das libboost1.63 installiert.

VG
Sebastian

von Danny B. (maniac103)


Lesenswert?

Sebastian Z. schrieb:
> Hi,
>
> bin wie folgt vorgegangen. Habe das Pack von hier eingebunden:
> https://packages.debian.org/de/sid/arm64/libboost-dev/download
>
>
> Mit apt-get install dann entsprechend das libboost1.63 installiert.

Nur libboost oder auch die entsprechenden Devel-Pakete? Ersteres würde 
das Problem erklären... was sagt denn jetzt 'dpkg -l | grep boost'?
>
> VG
> Sebastian

Beitrag #4991182 wurde vom Autor gelöscht.
von Sebastian Z. (nicewind)


Lesenswert?

Das war libboost1.63-all-dev

Command dpkg -l | grep boost ergab folgendes:


rc  libboost-atomic1.55.0:armhf                    1.55.0+dfsg-3 
armhf                        atomic data types, operations, and memory 
ordering constraints
ii  libboost-atomic1.63-dev:armhf                  1.63.0+dfsg-1 
armhf                        atomic data types, operations, and memory 
ordering constraints
ii  libboost-atomic1.63.0:armhf                    1.63.0+dfsg-1 
armhf                        atomic data types, operations, and memory 
ordering constraints
rc  libboost-chrono1.49.0                          1.49.0-4+b2 
armhf                        C++ representation of time duration, time 
point, and clocks
rc  libboost-chrono1.55.0:armhf                    1.55.0+dfsg-3 
armhf                        C++ representation of time duration, time 
point, and clocks
ii  libboost-chrono1.63-dev:armhf                  1.63.0+dfsg-1 
armhf                        C++ representation of time duration, time 
point, and clocks
ii  libboost-chrono1.63.0:armhf                    1.63.0+dfsg-1 
armhf                        C++ representation of time duration, time 
point, and clocks
rc  libboost-context1.55.0:armhf                   1.55.0+dfsg-3 
armhf                        provides a sort of cooperative multitasking 
on a single thread
ii  libboost-context1.63-dev:armhf                 1.63.0+dfsg-1 
armhf                        provides a sort of cooperative multitasking 
on a single thread
ii  libboost-context1.63.0:armhf                   1.63.0+dfsg-1 
armhf                        provides a sort of cooperative multitasking 
on a single thread
ii  libboost-coroutine1.63-dev:armhf               1.63.0+dfsg-1 
armhf                        provides a sort of cooperative multitasking 
on a single thread
ii  libboost-coroutine1.63.0:armhf                 1.63.0+dfsg-1 
armhf                        provides a sort of cooperative multitasking 
on a single thread
rc  libboost-date-time1.49.0                       1.49.0-4+b2 
armhf                        set of date-time libraries based on generic 
programming concepts
rc  libboost-date-time1.55.0:armhf                 1.55.0+dfsg-3 
armhf                        set of date-time libraries based on generic 
programming concepts
ii  libboost-date-time1.63-dev:armhf               1.63.0+dfsg-1 
armhf                        set of date-time libraries based on generic 
programming concepts
ii  libboost-date-time1.63.0:armhf                 1.63.0+dfsg-1 
armhf                        set of date-time libraries based on generic 
programming concepts
ii  libboost-exception1.63-dev:armhf               1.63.0+dfsg-1 
armhf                        library to help write exceptions and 
handlers
ii  libboost-fiber1.63-dev:armhf                   1.63.0+dfsg-1 
armhf                        cooperatively-scheduled 
micro-/userland-threads
ii  libboost-fiber1.63.0:armhf                     1.63.0+dfsg-1 
armhf                        cooperatively-scheduled 
micro-/userland-threads
rc  libboost-filesystem1.49.0                      1.49.0-4+b2 
armhf                        filesystem operations (portable paths, 
iteration over directories, etc) in C++
rc  libboost-filesystem1.55.0:armhf                1.55.0+dfsg-3 
armhf                        filesystem operations (portable paths, 
iteration over directories, etc) in C++
ii  libboost-filesystem1.63-dev:armhf              1.63.0+dfsg-1 
armhf                        filesystem operations (portable paths, 
iteration over directories, etc) in C++
ii  libboost-filesystem1.63.0:armhf                1.63.0+dfsg-1 
armhf                        filesystem operations (portable paths, 
iteration over directories, etc) in C++
rc  libboost-graph-parallel1.49.0                  1.49.0-4+b2 
armhf                        generic graph components and algorithms in 
C++
rc  libboost-graph-parallel1.55.0                  1.55.0+dfsg-3 
armhf                        generic graph components and algorithms in 
C++
ii  libboost-graph-parallel1.63-dev                1.63.0+dfsg-1 
armhf                        generic graph components and algorithms in 
C++
ii  libboost-graph-parallel1.63.0                  1.63.0+dfsg-1 
armhf                        generic graph components and algorithms in 
C++
rc  libboost-graph1.49.0                           1.49.0-4+b2 
armhf                        generic graph components and algorithms in 
C++
rc  libboost-graph1.55.0:armhf                     1.55.0+dfsg-3 
armhf                        generic graph components and algorithms in 
C++
ii  libboost-graph1.63-dev:armhf                   1.63.0+dfsg-1 
armhf                        generic graph components and algorithms in 
C++
ii  libboost-graph1.63.0:armhf                     1.63.0+dfsg-1 
armhf                        generic graph components and algorithms in 
C++
ii  libboost-iostreams1.49.0                       1.49.0-4+b2 
armhf                        Boost.Iostreams Library
ii  libboost-iostreams1.50.0                       1.50.0-1+b2 
armhf                        Boost.Iostreams Library
ii  libboost-iostreams1.53.0                       1.53.0-6+b2 
armhf                        Boost.Iostreams Library
ii  libboost-iostreams1.54.0:armhf                 1.54.0-5 
armhf                        Boost.Iostreams Library
ii  libboost-iostreams1.55.0:armhf                 1.55.0+dfsg-3 
armhf                        Boost.Iostreams Library
ii  libboost-iostreams1.63-dev:armhf               1.63.0+dfsg-1 
armhf                        Boost.Iostreams Library development files
ii  libboost-iostreams1.63.0:armhf                 1.63.0+dfsg-1 
armhf                        Boost.Iostreams Library
rc  libboost-locale1.49.0                          1.49.0-4+b2 
armhf                        C++ facilities for localization
rc  libboost-locale1.55.0:armhf                    1.55.0+dfsg-3 
armhf                        C++ facilities for localization
ii  libboost-locale1.63-dev:armhf                  1.63.0+dfsg-1 
armhf                        C++ facilities for localization
ii  libboost-locale1.63.0:armhf                    1.63.0+dfsg-1 
armhf                        C++ facilities for localization
rc  libboost-log1.55.0                             1.55.0+dfsg-3 
armhf                        C++ logging library
ii  libboost-log1.63-dev                           1.63.0+dfsg-1 
armhf                        C++ logging library
ii  libboost-log1.63.0                             1.63.0+dfsg-1 
armhf                        C++ logging library
rc  libboost-math1.49.0                            1.49.0-4+b2 
armhf                        Boost.Math Library
rc  libboost-math1.55.0:armhf                      1.55.0+dfsg-3 
armhf                        Boost.Math Library
ii  libboost-math1.63-dev:armhf                    1.63.0+dfsg-1 
armhf                        Boost.Math Library development files
ii  libboost-math1.63.0:armhf                      1.63.0+dfsg-1 
armhf                        Boost.Math Library
rc  libboost-mpi-python1.49.0                      1.49.0-4+b2 
armhf                        C++ interface to the Message Passing 
Interface (MPI), Python Bindings
rc  libboost-mpi-python1.55.0                      1.55.0+dfsg-3 
armhf                        C++ interface to the Message Passing 
Interface (MPI), Python Bindings
ii  libboost-mpi-python1.63-dev                    1.63.0+dfsg-1 
armhf                        C++ interface to the Message Passing 
Interface (MPI), Python Bindings
ii  libboost-mpi-python1.63.0                      1.63.0+dfsg-1 
armhf                        C++ interface to the Message Passing 
Interface (MPI), Python Bindings
rc  libboost-mpi1.49.0                             1.49.0-4+b2 
armhf                        C++ interface to the Message Passing 
Interface (MPI)
rc  libboost-mpi1.55.0                             1.55.0+dfsg-3 
armhf                        C++ interface to the Message Passing 
Interface (MPI)
ii  libboost-mpi1.63-dev                           1.63.0+dfsg-1 
armhf                        C++ interface to the Message Passing 
Interface (MPI)
ii  libboost-mpi1.63.0                             1.63.0+dfsg-1 
armhf                        C++ interface to the Message Passing 
Interface (MPI)
rc  libboost-program-options1.49.0                 1.49.0-4+b2 
armhf                        program options library for C++
rc  libboost-program-options1.55.0:armhf           1.55.0+dfsg-3 
armhf                        program options library for C++
ii  libboost-program-options1.63-dev:armhf         1.63.0+dfsg-1 
armhf                        program options library for C++
ii  libboost-program-options1.63.0:armhf           1.63.0+dfsg-1 
armhf                        program options library for C++
rc  libboost-python1.49.0                          1.49.0-4+b2 
armhf                        Boost.Python Library
rc  libboost-python1.55.0                          1.55.0+dfsg-3 
armhf                        Boost.Python Library
ii  libboost-python1.63-dev                        1.63.0+dfsg-1 
armhf                        Boost.Python Library development files
ii  libboost-python1.63.0                          1.63.0+dfsg-1 
armhf                        Boost.Python Library
rc  libboost-random1.49.0                          1.49.0-4+b2 
armhf                        Boost Random Number Library
rc  libboost-random1.55.0:armhf                    1.55.0+dfsg-3 
armhf                        Boost Random Number Library
ii  libboost-random1.63-dev:armhf                  1.63.0+dfsg-1 
armhf                        Boost Random Number Library
ii  libboost-random1.63.0:armhf                    1.63.0+dfsg-1 
armhf                        Boost Random Number Library
rc  libboost-regex1.49.0                           1.49.0-4+b2 
armhf                        regular expression library for C++
rc  libboost-regex1.55.0:armhf                     1.55.0+dfsg-3 
armhf                        regular expression library for C++
ii  libboost-regex1.63-dev:armhf                   1.63.0+dfsg-1 
armhf                        regular expression library for C++
ii  libboost-regex1.63.0:armhf                     1.63.0+dfsg-1 
armhf                        regular expression library for C++
rc  libboost-serialization1.49.0                   1.49.0-4+b2 
armhf                        serialization library for C++
rc  libboost-serialization1.55.0:armhf             1.55.0+dfsg-3 
armhf                        serialization library for C++
ii  libboost-serialization1.63-dev:armhf           1.63.0+dfsg-1 
armhf                        serialization library for C++
ii  libboost-serialization1.63.0:armhf             1.63.0+dfsg-1 
armhf                        serialization library for C++
rc  libboost-signals1.49.0                         1.49.0-4+b2 
armhf                        managed signals and slots library for C++
rc  libboost-signals1.55.0:armhf                   1.55.0+dfsg-3 
armhf                        managed signals and slots library for C++
ii  libboost-signals1.63-dev:armhf                 1.63.0+dfsg-1 
armhf                        managed signals and slots library for C++
ii  libboost-signals1.63.0:armhf                   1.63.0+dfsg-1 
armhf                        managed signals and slots library for C++
rc  libboost-system1.49.0                          1.49.0-4+b2 
armhf                        Operating system (e.g. diagnostics support) 
library
rc  libboost-system1.55.0:armhf                    1.55.0+dfsg-3 
armhf                        Operating system (e.g. diagnostics support) 
library
ii  libboost-system1.63-dev:armhf                  1.63.0+dfsg-1 
armhf                        Operating system (e.g. diagnostics support) 
library
ii  libboost-system1.63.0:armhf                    1.63.0+dfsg-1 
armhf                        Operating system (e.g. diagnostics support) 
library
rc  libboost-test1.49.0                            1.49.0-4+b2 
armhf                        components for writing and executing test 
suites
rc  libboost-test1.55.0:armhf                      1.55.0+dfsg-3 
armhf                        components for writing and executing test 
suites
ii  libboost-test1.63-dev:armhf                    1.63.0+dfsg-1 
armhf                        components for writing and executing test 
suites
ii  libboost-test1.63.0:armhf                      1.63.0+dfsg-1 
armhf                        components for writing and executing test 
suites
rc  libboost-thread1.49.0                          1.49.0-4+b2 
armhf                        portable C++ multi-threading
rc  libboost-thread1.55.0:armhf                    1.55.0+dfsg-3 
armhf                        portable C++ multi-threading
ii  libboost-thread1.63-dev:armhf                  1.63.0+dfsg-1 
armhf                        portable C++ multi-threading
ii  libboost-thread1.63.0:armhf                    1.63.0+dfsg-1 
armhf                        portable C++ multi-threading
rc  libboost-timer1.49.0                           1.49.0-4+b2 
armhf                        C++ wall clock and CPU process timers
rc  libboost-timer1.55.0:armhf                     1.55.0+dfsg-3 
armhf                        C++ wall clock and CPU process timers
ii  libboost-timer1.63-dev:armhf                   1.63.0+dfsg-1 
armhf                        C++ wall clock and CPU process timers
ii  libboost-timer1.63.0:armhf                     1.63.0+dfsg-1 
armhf                        C++ wall clock and CPU process timers
ii  libboost-type-erasure1.63-dev:armhf            1.63.0+dfsg-1 
armhf                        C++ runtime polymorphism based on concepts
ii  libboost-type-erasure1.63.0:armhf              1.63.0+dfsg-1 
armhf                        C++ runtime polymorphism based on concepts
rc  libboost-wave1.49.0                            1.49.0-4+b2 
armhf                        C99/C++ preprocessor library
rc  libboost-wave1.55.0:armhf                      1.55.0+dfsg-3 
armhf                        C99/C++ preprocessor library
ii  libboost-wave1.63-dev:armhf                    1.63.0+dfsg-1 
armhf                        C99/C++ preprocessor library
ii  libboost-wave1.63.0:armhf                      1.63.0+dfsg-1 
armhf                        C99/C++ preprocessor library
ii  libboost1.63-all-dev                           1.63.0+dfsg-1 
armhf                        Boost C++ Libraries development files (ALL)
ii  libboost1.63-dev:armhf                         1.63.0+dfsg-1 
armhf                        Boost C++ Libraries development files
ii  libboost1.63-tools-dev                         1.63.0+dfsg-1 
armhf                        Boost C++ Libraries development tools

von Danny B. (maniac103)


Lesenswert?

Sebastian Z. schrieb:
> Das war libboost1.63-all-dev
>
> Command dpkg -l | grep boost ergab folgendes:
> [...]

Hmm, das sieht erst mal ok aus. Keine Ahnung, was da das Problem ist :-/ 
Selber verwende ich Boost 1.58 (in Ubuntu 16.04) und 1.60 (in Fedora 24) 
ohne Probleme. 1.63 habe ich (mangels entsprechender 
Installationsquellen auf meinen Rechnern) noch nicht getestet.

von Sebastian Z. (nicewind)


Lesenswert?

Hmmm. Doof das ganze.
Habe noch gelesen, dass evtl. die GCC Version nicht zur Lib passen kann.
Da muss ich nochmal spielen und evtl. auf GCC 5+ wechseln.

Aber nochmal die Frage an die Runde: Kann mir jemand eine fertiges 
compile des collectors zukommen lassen?

VG
Sebastian

von Chris (Gast)


Lesenswert?

Bei mir steigt der Collectord unregelmäßig aus. Mal nach Wochen, mal 
nach Stunden. Vermutlich läuft das NetIO nicht stabil und resettet die 
Verbindung. Der Collectord sollte dann aber eigentlich weiter laufen und 
nicht aussteigen.
1
 /usr/local/sbin/collectord --pid-file /var/run/ems-collector.pid -c /etc/ems-collector.conf tcp:192.168.10.11:7950 -f
2
gError: Connection reset by peer
3
collectord: /usr/include/boost/smart_ptr/enable_shared_from_this.hpp:50: boost::shared_ptr<X> boost::enable_shared_from_this<T>::shared_from_this() [with T = CommandConnection]: Assertion `p.get() == this' failed.
4
Abgebrochen

Hat zufällig jemand ein systemd Unit-File für den collectord? Damit kann 
man nämlich recht leicht (eine Zeile oder so) definieren, dass ein 
Dienst automatisch neu gestartet wird. Ansonsten mache ich mich da 
morgen mal dran, wenn Zeit...

von Sebastian Z. (nicewind)


Lesenswert?

Guten Morgen Zusammen,

die Hinweise aus dem Netz auf die GCC Version in meinem Fall waren 
korrekt.
Nachdem ich Version 5 aus den Testing Repos der Himbeere geladen hatte, 
lief das compile fehlerfrei durch.

Somit bestätigt sich, dass die libboost Version ~1.6 auch nur mit GCC > 
5 läuft.
Schönes WE und danke für die Hilfe.

Sebastian

von Andreas Z. (andreas_z15)


Lesenswert?

Hallo Sebastian

unter welcher Version (wheezy oder jessie) hast du das denn jetzt 
compiliert ?
Könntest du mit mal die fertig compilierte Datei schicken ?

mfg

Andreas

von Sebastian Z. (nicewind)


Angehängte Dateien:

Lesenswert?

Hallo Andreas,

anbei meine collectord Datei.


Diese ist mit mqrtt Support compeliert.

VG
Sebastian

von Andreas Z. (andreas_z15)


Lesenswert?

Hallo Sebastian,

vielen Dank, ich werde es in der nächsten Zeit mal testen. Ich denke 
allerdings dass ich meine Installation erst etwas aufrüsten muss.

mfg

Andreas

von Bert (Gast)


Lesenswert?

Hello,

excuse me but i don't speak german, but i have a simple short question. 
I have made the gateway circuit, is it possible to connect RX/TX 
directly to a raspi/Arduino??? Or is the NETIO circuit also needed???

von ingoF (Gast)


Lesenswert?

If you have build this board you need the NetIO-Board, too:
https://emswiki.thefischer.net/doku.php?id=wiki:ems:net_io#adapter.

there must be a mikrocontroller to decode the data byte for byte without 
an serial buffer in the RX-Line.

von Sebastian Z. (nicewind)


Lesenswert?

Hallo Zusammen,

in den letzten Tagen hatte ich Zeit, das Projekt etwas nach Vorne zu 
treiben. Alles lief mit der Anleitung relativ problemlos. Besten Dank 
dafür!

AVR-NET mit selbst gebauter Adapterplatine an einem Raspi, welcher 
gleichzeitig mein openHAB beherbergt.
Die EMS Telegramme kommen sauber über MQTT rein und werden in openHAB 
angezeigt.
Soweit sehr schön. Nur ist das ja nur die halbe Miete. Natürlich möchte 
ich die Heizung auch ansteuern können. Hier komme ich aktuell nicht 
weiter.
Mit
telnet localhost 7777
komme ich zwar auf die Kommandoebene, jedoch werden alle Anfragen mit 
einem
ERRTIMEOUT
beantwortet. Auf der Platine leuchtet auch keine TX LED. Einen Fehler 
auf der Platine sehe ich eigentlich nicht - nur der 1W Widerstand ist 
schon recht warm.....
Die RX LED leuchtet immer mal wieder, so wie auch die Telegramme 
reinkommen.

Könnt Ihr mir einen Tipp geben, woran es liegen könnte?
Muss ich das EMS Gateway noch irgendwie in meinem RC30 aktivieren oder 
prüfen, ob es da ist?

Danke und VG
Sebastian

von IngoF (Gast)


Lesenswert?

Sebastian Z. schrieb:
> auf der Platine sehe ich eigentlich nicht - nur der 1W Widerstand ist

Dass der Widerstand warm wird wundert mich.
Der Widerstand wird benutzt um den EMS-Bus zu belasten wenn Deine 
Platine sendet. Und das sollte nicht wirklich viel sein.

Würde jetzt einfach mal sagen Deine Platine sendet dauerhaft.

Wird dort denn eine dauerhaft eine weitere Adresse in der Info zum 
EMS-Bus auf der RC30 angezeigt wenn Du Dein NetIO mit Platine 
anschließt?

Dort müsste dann ein weiterer Busteilnehmer auftauchen.

Wenn das so ist funktioniert das Senden so wie es soll und ich habe 
daneben geraten.

von Sebastian Z. (nicewind)


Lesenswert?

Danke IngoF,
das war der richtige Tipp.
Ein Lötpunkt vom OP in Richtung Basis des Transistors war nicht ganz 
sauber von mir gelötet. Dadurch hat der PullUp Widerstand den Transistor 
auf dauerhaft auf Durchgang, als auf Dauersenden geschaltet.

Nun läuft alles prima.
Besten Dank und VG
Sebastian

von Delchrys (Gast)


Lesenswert?

Hi all,

Isn't there still not someone who has ported the netio part to a simple 
arduino?
I think it's possible but why didn't someone made it I ask myself.
I have seen the esp8266 solution from juergen, but that's not complete 
yet. I saw another arduino solution but it's very basic. Why isn't it 
possible to just rewrite the whole netio part to arduino. My programming 
skill are limited and I'm stuck at the whole serial part and detecting 
the frame error/break part. Isn't there a similar protocol of buderus so 
I can search more options? CANBUS or Dmx protocol?

von Ingo F. (ingof)


Lesenswert?

Delchrys schrieb:
> I'm stuck at the whole serial part and detecting
> the frame error/break part.


The stop-bit is inverted at the end of any command or reply.
That is the reason why your serial port must abe able to check this type 
of error.

The arduino must allow to check the error status of the serial port for 
each received byte.

You can not use the rx-buffer of the serial-port.

von Delchrys (Gast)


Lesenswert?

But aren't all atmegas capable of doing the same stuff.
Now I have juergens esp8266 solution running but that doesn't decode the 
data to usable values like inlettemperature = 29.5 or something like 
that.
I still not understand completely the whole serial Bit,byte and stop its 
stuff. That makes it hard to understand what I need to do. Like to get a 
arduino or esp8266 based gateway, so I can use all the rest of the 
collectord like software

von Delchrys (Gast)


Lesenswert?

And what makes the atmega8 or the netio that they do work?

von Ingo F. (ingof)


Lesenswert?

Delchrys schrieb:
> But aren't all atmegas capable of doing the same stuff.

Maybe. I do not know anything about arduino. Do they all have atmega?

Check the datasheet of the used atmega to be shure.

von Delchrys (Gast)


Lesenswert?

How can I figure out what data my heater is sending every 10 seconds?
I like to know which of the parameters are sent by default.
I have only made the rx part of the gateway so I'm only listening.
I had some working arduino code but I can't figure out what complete 
message is sent.
I also have some raw data direct read from the bus, by there's lots of 
data so I don't know what to look for exactly. So I like to know which 
parameters I can get without sending to the bus.

von IngoF (Gast)


Lesenswert?

Delchrys schrieb:
> How can I figure out what data my heater is sending every 10
> seconds?
> I like to know which of the parameters are sent by default.

The UBA sends two types of data without request:
https://emswiki.thefischer.net/doku.php?id=wiki:ems:telegramme#ubamonitorslow
https://emswiki.thefischer.net/doku.php?id=wiki:ems:telegramme#ubamonitorfast

> I have only made the rx part of the gateway so I'm only listening.
> I had some working arduino code but I can't figure out what complete
> message is sent.
You must check the error-condition of the serial-port for each byte. The 
end of the message is reached if a 0x00-Byte is received with this error 
condition.

> I also have some raw data direct read from the bus, by there's lots of
> data so I don't know what to look for exactly. So I like to know which
> parameters I can get without sending to the bus.

You must check the error-condition of each byte to see the end of each 
message.
How do you check the error-condition. Do you have some code?

von delchrys (Gast)


Lesenswert?

Hi,

yes i have some code, it's kind off copy and pasted from several 
different projects.
It uses a editted serial library, my cod now works with an ES8266 for 
the wifi connection i'll post it here. For the library you can look at:
https://github.com/bbqkees/Nefit-Buderus-EMS-bus-Arduino-Domoticz

my code untill now is:
1
 
2
#include "WiFiEsp.h"
3
#define NEFIT_REG_MAX  17
4
#include <NefitSerial.h>
5
6
char ssid[] = "geheim";            // your network SSID (name)
7
char pass[] = "geheim";        // your network password
8
int status = WL_IDLE_STATUS;     // the Wifi radio's status
9
10
char server[] = "arduino.cc";
11
12
// Initialize the Ethernet client object
13
WiFiEspClient client;
14
15
// MAC and IP of the Arduino
16
byte mac[] = {
17
  0xDE, 0xAD, 0xBE, 0xEF, 0x00, 0x01}; // Set this to your preferred MAC address
18
IPAddress ip(192,168,1,80); // Set this to your preferred IP.
19
20
// IP address and port of Domoticz
21
IPAddress domoticz(192,168,1,67); // Set this to the IP address of your Domoticz
22
int port = 8080; // This is the default port of Domoticz.
23
24
25
PROGMEM const unsigned char regNefitCoding[]={
26
27
0x08,0x18,0x01,0x05,          //#1   0 temperature water out (uitgaand) x 10
28
0x08,0x18,0x04,0x01,          //#2   1 burner power
29
0x08,0x18,0x07,0x00,          //#3   2 burner of/off
30
0x08,0x18,0x07,0x50,          //#4   3 heating pump on/off
31
0x08,0x18,0x07,0x60,          //#5   4 tap water heating on/off
32
0x08,0x18,0x0B,0x05,          //#6   5 boiler temperature x 10
33
0x08,0x18,0x0D,0x05,          //#7   6 temperature water in (cvreturn) x 10
34
0x08,0x18,0x11,0x06,          //#8   7 water pressure x 10
35
0x08,0x18,0x12,0x02,          //#9   8 status code 1st letter
36
0x08,0x18,0x13,0x02,          //#10  9 status code 2nd letter
37
0x08,0x34,0x01,0x05,          //#11 10 tap water temperature x 10
38
0x08,0x34,0x05,0x50,          //#12 11 heater boiler on/off (not always available)
39
0x17,0x91,0x01,0x04,          //#13 12 setpoint room temperature x 2
40
0x17,0x91,0x02,0x05,          //#14 13 room temperature x 10
41
0x17,0xA8,0x17,0x81,          //#15 14 setting 0=low, 1=manual, 2=clock
42
0x17,0xA8,0x1C,0x84,          //#16 15 overruled clock setting x 2 ( 0 = not overruled)
43
0x17,0xA8,0x1D,0x84           //#17 16 manual setpoint temperature x 2
44
};
45
46
void printbuffer(char * buffer, int len );
47
48
char buffer[32];                              // frame buffer
49
int nefitRegister[NEFIT_REG_MAX];             // index number see above
50
51
long lastTime = 0;  
52
long interval = 10000;
53
long lastTimeeth = 0;  
54
long intervaleth = 10000;
55
56
int IDXcvpressure = 9;// Set here your own Domoticz ID's
57
int IDXburnerpower = 13;
58
int IDXburner = 14;
59
int IDXboiler = 000;
60
int IDXcvreturn = 10;
61
int IDXsupply = 11;
62
int IDXhotwater = 15;
63
int IDXcvpump = 16;
64
int IDXwarmwatertemp = 12;
65
66
float lastcvpressure = -10;
67
float lastburnerpower = -10;
68
float lastburner = -10;
69
float lastboiler = -10;
70
float lastcvreturn = -10;
71
float lastsupply = -10;
72
float lasthotwater = -10;
73
float lastcvpump = -10;
74
float lastwarmwatertemp = -10;
75
76
String burnerstatus = "Off";
77
String cvpumpstatus = "Off";
78
String hotwaterstatus = "Off";
79
80
81
82
// Calculate CRC for buffer
83
uint8_t nefit_ems_crc( char * buffer, int len ){
84
  uint8_t i,crc = 0x0;
85
  uint8_t d;
86
  for(i=0;i<len-2;i++){
87
    d = 0;
88
    if ( crc & 0x80 ){
89
      crc ^= 12;
90
      d = 1;
91
    }
92
    crc  = (crc << 1)&0xfe;
93
    crc |= d;
94
    crc ^= buffer[i];
95
  }
96
  return crc;
97
}
98
99
// CRC check 
100
boolean crcCheckOK(char * buffer, int len ){
101
  int crc = nefit_ems_crc(buffer, len );
102
  boolean crcOK= (crc==(uint8_t)buffer[len-2]);
103
  return crcOK;
104
}
105
106
// Read one bus frame, return number of read bytes
107
int readBytes(char * buffer){
108
  int ptr = 0;
109
110
  while(nefitSerial2.available()){
111
    if((uint8_t)nefitSerial2.peek()==0){
112
      uint8_t temp = nefitSerial2.read();                    // skip zero's
113
    } else { break;}
114
  }
115
116
  while((!nefitSerial2.frameError())&&ptr<32){          // read data until frame-error
117
     if(nefitSerial2.available()){
118
      buffer[ptr]=nefitSerial2.read();
119
      ptr++;
120
     }
121
  }
122
  nefitSerial2.flush();
123
  return ptr;
124
}
125
126
127
// Read a register value from frame-buffer, decide if necessary and return as int
128
int getValue(char * buffer, byte offset, byte vartype){
129
  int result;
130
  uint8_t type = vartype & 0x0F;
131
  switch (type){
132
    case 0:     //boolean
133
      result = bitRead(buffer[offset],(vartype&0x70)>>4);
134
      break;
135
    case 1:     //byte
136
//      result = (uint8_t)buffer[offset];
137
//      break;
138
    case 2:     //ascii
139
//      result = (uint8_t)buffer[offset];
140
//                        break;
141
    case 4:     //byte x 2
142
//      result = (uint8_t)buffer[offset];
143
//      break;
144
    case 6:     //byte x 10
145
      result = (uint8_t)buffer[offset];
146
                        break;
147
    case 3:     //int
148
//      result = getDoubleByte(buffer,offset);
149
//      break;
150
    case 5:     //int x 10
151
        result = buffer[offset]<<8;
152
      result = result + (uint8_t)buffer[offset+1];
153
      break;
154
155
  }
156
    return result;
157
}
158
159
// Decode frame with help of the table and load register
160
void nefitFrame2register(char * buffer, int len){
161
  byte sender, message;
162
  int register_data, difference;
163
  uint8_t offset, vartype;
164
  for(uint8_t i=0;i<((NEFIT_REG_MAX)*4);i=i+4){
165
    sender = pgm_read_byte_near(regNefitCoding+i);
166
    message = pgm_read_byte_near(regNefitCoding+1+i);
167
    if ((sender<=(uint8_t)buffer[0]) && (message<=(uint8_t)buffer[2])){
168
      offset = pgm_read_byte_near(regNefitCoding+2+i);
169
      if ((sender==(uint8_t)buffer[0]) && (message==(uint8_t)buffer[2])&&(offset>=(uint8_t)buffer[3])){
170
        offset = offset - (uint8_t)buffer[3]+4;       // rekening houden met lange frames (gesplitst)
171
        if (offset<len){
172
           vartype = pgm_read_byte_near(regNefitCoding+3+i);
173
           register_data = getValue(buffer,offset,vartype);
174
           if (register_data != nefitRegister[i/4])
175
             {
176
                nefitRegister[i/4] = register_data;
177
             }
178
        }
179
      }
180
    }else {break;}
181
  }
182
 return;
183
}
184
185
186
//The part below contain all the httprequest functions.
187
188
189
// General value JSON URL. Prints 2 decimals
190
// /json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=TEMP
191
// /json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=BAR
192
// /json.htm?type=command&param=udevice&idx=IDX&nvalue=0&svalue=PERCENTAGE
193
void httpRequestvalue(int IDX, float value) {
194
  // if there's a successful connection:
195
  if (client.connect(domoticz, port)) {
196
    client.print( "GET /json.htm?type=command&param=udevice&idx=");
197
    client.print(IDX);
198
    client.print("&nvalue=0&svalue=");
199
    client.print(value);
200
    client.println( " HTTP/1.1");
201
    client.print( "Host: ");
202
    client.print(domoticz);
203
    client.print(":");
204
    client.println(port);
205
    client.println("User-Agent: Arduino-ethernet");
206
    client.println( "Connection: close");
207
    client.println();
208
    client.stop();
209
    delay(150);
210
  } 
211
  else {
212
    client.stop();
213
  }
214
}
215
216
// /json.htm?type=command&param=switchlight&idx=XX&switchcmd=On
217
void httpRequestswitch(int IDX, String status) {
218
  // if there's a successful connection:
219
  if (client.connect(domoticz, port)) {
220
    client.print( "GET /json.htm?type=command&param=switchlight&idx=");
221
    client.print(IDX);
222
    client.print("&switchcmd=");
223
    client.print(status);
224
    client.println( " HTTP/1.1");
225
    client.print( "Host: ");
226
    client.print(domoticz);
227
    client.print(":");
228
    client.println(port);
229
    client.println("User-Agent: Arduino-ethernet");
230
    client.println( "Connection: close");
231
    client.println();
232
    client.stop();
233
    delay(150);
234
  } 
235
  else {
236
    client.stop();
237
  }
238
}
239
240
241
242
// -----------------------------------------------------------------------------------------------------------------
243
244
void setup(){
245
  nefitSerial2.begin(9600);
246
  
247
 
248
  nefitSerial.begin(115200);
249
  nefitSerial.println("Nefit to Domoticz");
250
251
 nefitSerial1.begin(115200);
252
   WiFi.init(&nefitSerial1);
253
   if (WiFi.status() == WL_NO_SHIELD) {
254
    nefitSerial.println("WiFi shield not present");
255
    // don't continue
256
    while (true);
257
  }
258
259
 
260
  // attempt to connect to WiFi network
261
  while ( status != WL_CONNECTED) {
262
    nefitSerial.print("Attempting to connect to WPA SSID: ");
263
    nefitSerial.println(ssid);
264
    // Connect to WPA/WPA2 network
265
    status = WiFi.begin(ssid, pass);
266
  }
267
268
  // you're connected now, so print out the data
269
  nefitSerial.println("You're connected to the network");
270
  
271
  printWifiStatus();
272
  
273
    for (char i=0;i<=NEFIT_REG_MAX;i++) {
274
    nefitRegister[i]=0;
275
  }
276
}
277
278
279
// -----------------------------------------------------------------------------------------------------------------
280
281
void loop(){
282
  int ptr;
283
284
 if (nefitSerial2.available()){  // check if we need to read
285
  ptr = readBytes(buffer);
286
  if (ptr>4){
287
    if (crcCheckOK(buffer,ptr)){
288
      nefitFrame2register(buffer,ptr);
289
    }
290
  }
291
    }
292
293
    if(millis() - lastTime > interval) {
294
    lastTime = millis(); 
295
   for (int i = 0; i<=NEFIT_REG_MAX; i++){
296
   nefitSerial.print("nefitRegister["); nefitSerial.print(i); nefitSerial.print("]: ");
297
   nefitSerial.println(nefitRegister[i]);}
298
  nefitSerial.println("------------------------");
299
  nefitSerial.println("NEFIT EMS bus:");
300
  
301
  nefitSerial.print("cv aanvoertemp: ");
302
  nefitSerial.println((float)nefitRegister[0]/10,1);      
303
304
  nefitSerial.print("CV vermogen: ");
305
  nefitSerial.println((float)nefitRegister[1],1);      
306
307
  nefitSerial.print("Brander on/off: ");
308
  nefitSerial.println((float)nefitRegister[2],DEC);   // burner  
309
310
  nefitSerial.print("CV pomp on/off: ");
311
  nefitSerial.println((float)nefitRegister[3],DEC);   //cv pump  
312
 
313
  nefitSerial.print("Warm water on/off: ");
314
  nefitSerial.println((float)nefitRegister[4],DEC);    
315
316
  nefitSerial.print("ketel temp: ");
317
  nefitSerial.println((float)nefitRegister[5]/10,1);    //keteltemp
318
  
319
  nefitSerial.print("CV retourwatertemp: ");
320
  nefitSerial.println((float)nefitRegister[6]/10,1);    //waterterug temp
321
  
322
  nefitSerial.print("CV waterdruk: ");
323
  nefitSerial.println((float)nefitRegister[7]/10,1);    // waterpressure
324
325
  
326
  nefitSerial.print("Warmwater temp: ");
327
  nefitSerial.println((float)nefitRegister[10]/10,1);   //hotwatertemp
328
329
  nefitSerial.print("boiler heater on/off: ");
330
  nefitSerial.println((float)nefitRegister[11],DEC);  
331
332
  //nefitSerial.print(",");
333
  //nefitSerial.print(nefitRegister[14],DEC);           //thermostat 0=low, 1=manual, 2=auto
334
335
  nefitSerial.println("END");
336
  nefitSerial.println("------------------------");
337
  nefitSerial.println("------------------------");
338
}
339
340
341
342
343
  // loop for GET requests
344
  // The idea is to send the values only if they have changed.
345
  
346
  
347
  if(millis() - lastTimeeth > intervaleth) {
348
    lastTimeeth = millis(); 
349
    
350
    float supply = float(nefitRegister[0])/10;
351
    if(supply !=lastsupply){
352
    httpRequestvalue(IDXsupply , supply );
353
    }    
354
    lastsupply = supply;
355
    
356
    float burnerpower = nefitRegister[1];
357
    if(burnerpower >=0 && burnerpower != lastburnerpower){
358
    httpRequestvalue(IDXburnerpower , burnerpower );
359
    }
360
    lastburnerpower = burnerpower;
361
362
    float burner = nefitRegister[2];
363
    if (burner == 1){burnerstatus = "On";}
364
    else if (burner == 0){burnerstatus = "Off";}
365
    else {burnerstatus = "Off";}
366
    if (burner != lastburner){
367
    httpRequestswitch(IDXburner, burnerstatus);
368
    }
369
    lastburner = burner;
370
    
371
    float cvpump = nefitRegister[3];
372
    if (cvpump == 1){cvpumpstatus = "On";}
373
    else if (cvpump == 0){cvpumpstatus = "Off";}
374
    else {cvpumpstatus = "Off";}
375
    if (cvpump != lastcvpump) {
376
    httpRequestswitch(IDXcvpump, cvpumpstatus);
377
    }
378
    lastcvpump = cvpump;
379
380
    float hotwater = nefitRegister[4];
381
    if (hotwater ==1) {hotwaterstatus = "On";}
382
    else if (hotwater == 0) {hotwaterstatus = "Off";}
383
    else {hotwaterstatus = "Off";}
384
    if (hotwater != lasthotwater){
385
    httpRequestswitch(IDXhotwater, hotwaterstatus);
386
    }
387
    lasthotwater = hotwater;
388
    
389
    float cvreturn = float(nefitRegister[6])/10;
390
    if(cvreturn != lastcvreturn){
391
    httpRequestvalue(IDXcvreturn , cvreturn );
392
    } 
393
    lastcvreturn = cvreturn;
394
    
395
    float cvpressure = float(nefitRegister[7])/10;
396
    if(cvpressure != lastcvpressure){
397
    httpRequestvalue(IDXcvpressure , cvpressure );
398
    }
399
    lastcvpressure = cvpressure;
400
401
    float warmwatertemp = float(nefitRegister[10])/10;
402
    if(warmwatertemp != lastwarmwatertemp){
403
    httpRequestvalue(IDXwarmwatertemp , warmwatertemp );
404
    }
405
    lastwarmwatertemp = warmwatertemp;
406
407
}
408
  }//end GET requests
409
    
410
411
    
412
//end void loop
413
414
void printWifiStatus()
415
{
416
  // print the SSID of the network you're attached to
417
  nefitSerial.print("SSID: ");
418
  nefitSerial.println(WiFi.SSID());
419
420
  // print your WiFi shield's IP address
421
  IPAddress ip = WiFi.localIP();
422
  nefitSerial.print("IP Address: ");
423
  nefitSerial.println(ip);
424
425
  // print the received signal strength
426
  long rssi = WiFi.RSSI();
427
  nefitSerial.print("Signal strength (RSSI):");
428
  nefitSerial.print(rssi);
429
  nefitSerial.println(" dBm");
430
}

von delchrys (Gast)


Angehängte Dateien:

Lesenswert?

all the important error detection is in the library, i do not fully 
understand it but i'm getting there. I really like to make the arduino 
platform fully working with ems bus.
Thinking about making the TX part also so i can see if i can get some 
more info out of the bus, so will be working on that later.
For now it works and i have integrated it into my domoticz application 
to get some graphs.

von delchrys (Gast)


Lesenswert?

still looking for a good serial port analyzer to sniff the port and look 
at the raw bus data to see which parameter i can get without requesting. 
or is it always the same??? Also like to know if my thermostat 
communicates with the bus, i have a nefit moduline 100 or buderus rc10.

von IngoF (Gast)


Lesenswert?

I thought the problem was the reading from the serial-port and finding 
the end of the telegrams.

For a simple look on the bus you can use hterm to see the data like 
this:
Beitrag "Re: Logamatic 2107 Schnittstelle"
you must

the busmaster polls the bus and the clients send their data if the have 
their time. The busmaster sends itself the both telgrams periodically 
without polling.
You can also read all other telegrams if they are send to the busmaster.

von delchrys (Gast)


Angehängte Dateien:

Lesenswert?

so i did hterm and read the port.
Any strange things in it or is it normal????
i see the 00 08 00 34 part and 00 08 00 18 part
so i guess that's good???
now only nee to separate the rest of the parameters.

von IngoF (Gast)


Lesenswert?

delchrys schrieb:
> so i did hterm and read the port.
> Any strange things in it or is it normal????
> i see the 00 08 00 34 part and 00 08 00 18 part
> so i guess that's good???
> now only nee to separate the rest of the parameters.

You muist activate the checkbox show errors. then the bytes with error 
are marked red.

You must deaktivate the inputbuffer of the serial-port in windos. Set 
receiverbuffer size to 1.

Maybe your computer ist too slow to check each byte and you get this 
result:
Beitrag "Re: Logamatic 2107 Schnittstelle"

then you can resize the hterm-window to the minimum-size and you schould 
work much more better.

Maybe the "newline after ... ms" will help to seperate the data optical.

von IngoF (Gast)


Lesenswert?

i set the "newline at" 00 80 00, toor for the extra line breaks in the 
second screenshot..

von Delchrys (Gast)


Lesenswert?

I did newline at 00 08
Serial buffer will look in to that since I'm using a arduino in bridge 
mode to simulate a serial usb connection.
Don't think my laptop i7 is too slow, gaming laptop.....
Will only use this to identify the messages so I can adapt them in my 
arduino code. I like to read out everything my bus Is sending without 
using tx part.
First identify all the messages....

von Delchrys (Gast)


Lesenswert?

Any idea which code my thermostat uses? Buderus rc10.

von delchrys (Gast)


Angehängte Dateien:

Lesenswert?

now i did newline and fifobuffer at 1.
still no red colring on the 00 bit error.
but now i'm going to decode and see what exactly the message means.
any shortcuts on that??? so now i have to decode hex to decimal and make 
something out of it

von IngoF (Gast)


Lesenswert?

IngoF schrieb:
> You muist activate the checkbox show errors.

von Delchrys (Gast)


Lesenswert?

Hehe yes I see I made the screenshot with the checkbox unchecked. But it 
didn't make any difference.
I'm looking in to some python scripts from the heatronic topic. Maybe 
that can help me sort out the data.

von delchrys (Gast)


Lesenswert?

seems my code or my gateway has some sort of error because i cannot find 
my hotwater temperature in my arduino sketch the value of register 10 
stays a negative number, it must be the 0x08,0x34,0x01,0x05, value.
also when i look at my RAW data it seems to be a bit off.

think i will solder myself a new gateway, maybe i have made some 
mistake.
Strange because the rest of the data seems ok.

First i'm going to make myself a nice schematic which can easily be put 
on a protoboard pcb. I then add also the TX part.

Really like to figure this out but it must work with an arduino...
Found another great project with arduino and a WiFLy RN/XV module:
https://github.com/danidata/Calduino-WiFly-Arduino-EMS-Buderus/tree/master/Calduino

He used some great code also, maybe i can use bits of it.

von martin_b13 (Gast)


Lesenswert?

Hallole,

Über dem Sommer ist bei mir die Heizung vom Netz getrennt, nach dem die 
Heizung wieder mit Strom versort wird kommt es zu einer Fehlermeldung 
weil die Uhrzeit und Datum nicht merh stimmen. Ich würde gerne über den 
Aufbau mit möglichst wenig Aufwand das Datum und Uhrzeit setzen. Das 
NetIO ist über Telenet mit FHEM verbunden auf dem auch Dannys Collector 
läuft. Hat jemand eine Idee wie man das Umsetzten könnte?

Danke und VG
Martin

von ingof (Gast)


Lesenswert?

Woher kommt die Fehlermeldung dass Uhrzeit und Datum nicht mehr stimmen? 
Ist das FEHM?

Das einfachste wäre vermutlich über den Telnet-Port vom collectord. Dort 
über das Datum/Uhrzeit-Telegramm die richtigen Werte setzen.
Beim telegramm müssen mehrere Werte angegeben werden. Der Command-Port 
vom EMS-collector ist normalerweise 7777. Kann gerade keine Auflistung 
finden wie man das Telegramm sendet. Einfach mal über telnet auf Port 
7777 mit dem collectord verbinden. Vielleicht reicht die Hilfe vom 
collectord aus. Einfach mal help eingeben.

https://emswiki.thefischer.net/doku.php?id=wiki:ems:telegramme#rctimemessage

Kann es leider nicht testen weil der collectord zur Zeit bei mir nicht 
läuft.

von ingof (Gast)


Lesenswert?

Ganz oben auf der selben Seite ist auch ein Beispieltelegramm:
https://emswiki.thefischer.net/doku.php?id=wiki:ems:telegramme#zaehlweise

von Danny B. (maniac103)


Lesenswert?

EMS-Zeit setzen habe ich interessanterweise nie implementiert. Ich werde 
das bei Gelegenheit mal nachholen.

von Danny B. (maniac103)


Lesenswert?


von martin_b13 (Gast)


Lesenswert?

Auf dem Display vom BC10 steht der Servicecode A11 und auf dem Display 
vom RC35 steht: "Klappe öffnen um Datum/Uhrzeit mit OK-Taste 
einzustellen. Eingestelltes Datum 01.01.2000

Eventuell würde der Brenner sogar mit dieser Meldung irgendwann starten, 
vielleicht war ich da immer nur zu ungeduldig. :-P

Wenn ich im Command-Port die Zeichenfolge 0b 90 06 00 08 eingebe kommt 
ERRCMD zurück, muss dazu der RAW Modus aktiv sein? Das ist schon eine 
weile her als ich da das letzte mal mit rumgespielt habe. ;-)

@Danny: Vielen Dank für deine schnelle Umsetztung!!

Vielen Dank an alle die sich an diesem Projekt seither so fleissig 
beteiltigt haben.

Danke und Viele Grüße
Martin

von Danny B. (maniac103)


Lesenswert?

martin_b13 schrieb:
> Wenn ich im Command-Port die Zeichenfolge 0b 90 06 00 08 eingebe kommt
> ERRCMD zurück, muss dazu der RAW Modus aktiv sein? Das ist schon eine
> weile her als ich da das letzte mal mit rumgespielt habe. ;-)

Ich würd's (nach Update des Collectors) eher mal mit 'rc settime 
2017-09-11 21:12:00‘ probieren ;-)

von martin_b13 (Gast)


Lesenswert?

Bevor ich dem collector neu compeliert hatte, habe ich mit der 
Zeichenfolge 0b 90 06 00 08 rumgespielt, wie gesagt habe ich da nur 
ERRCMD zurück bekommen. :-(

Der neue "rc settime" Befehl im collector funktioniert bei mir perfekt. 
Vielen Dank nochmal! ;-)

Mein GB135-25 Öler hat ja auch so ein SAFe Feuerungsautomaten verbaut, 
als ich vor knapp 2 Jahren dieses Projekt nachgebaut habe, habe ich mir 
über die Hardware BC10, MC10, RC20, SAFe etc. gar kein Kopf gemacht. :-o

Die zum kleinen Teil unterschiedliche Telegramme zu den hier 
veröffentlichen Telegramme habe ich seither der RC20 zugeschrieben, seit 
ich auch eine RC35 habe weis ich das es nicht nur an der RC20 liegt. ;-) 
Aber das ist nicht schlimm, die meisten Funtionen tun was sie sollen, 
wie gesagt tolles Projekt.

Danke und Viele Grüße
Martin

von martin_b13 (Gast)


Lesenswert?

Die alte ist eine RC30 nicht eine RC20. ;-)

von Marco (Gast)


Lesenswert?

Hallo!
Meine Probleme mit dem Senden sind behoben. Es lag an einer fehlenden 
Lötverbindung :-(

Ein Problem ist aber noch da: Unter Heizkurve zeigt er mir bei "Minimale 
Aussentemperatur" 0°C und bei Auslegungstemperatur "wählen" an. Tag- und 
Nachttemperatur steht auch auf "wählen", meine Anlage ist aber 
außentemperatur geführt. Eine Verstellung der Temperaturen bringt auch 
keine Änderung an der RC35.

Eingestellt an der RC35 sind 32°C @-12°C.

Hat jemand eine Idee, woran das liegen kann? Die Graphen werden bei mir 
auch nicht angezeigt, das ist aber noch ein anderes (nicht so wichtiges) 
Problem (und liegt vermutlich an GnuPlot).

Viele Grüße,
Marco

von Patric S. (stroka)


Lesenswert?

Hallo,
besteht eigentlich die Möglichkeit, bei Fehlern (Therme)
eine Mail zu generieren oder eine andere Möglichkeit bei Fehlern
automatisch benachrichtigt zu werden ?

Gruß

von Marco (Gast)


Lesenswert?

Marco schrieb:

>
> Ein Problem ist aber noch da: Unter Heizkurve zeigt er mir bei "Minimale
> Aussentemperatur" 0°C und bei Auslegungstemperatur "wählen" an. Tag- und
> Nachttemperatur steht auch auf "wählen", meine Anlage ist aber
> außentemperatur geführt. Eine Verstellung der Temperaturen bringt auch
> keine Änderung an der RC35.

Mein Problem hat sich gelöst. Es lag daran, dass die Graphen nicht 
gezeichnet wurden. Seit die Graphen gehen, funktioniert auch die Anzeige 
der richtigen Werte bei der Heizkurve.

von Dominik H. (tech-nik82)


Lesenswert?

Hallo

erst mal ein großes Lob an alle die zu diesem tollen System beigetragen 
haben.

Habe es in dieser Woche endlich umgesetzt und es läuft fast ohne 
Probleme.

Nun zu meinem Problem / Wunsch.

Ist es möglich den Collector so einzustellen dass er auch die 
Betriebszeit der Solaranlage in die Datenbank schreibt.

von Dominik H. (tech-nik82)


Lesenswert?

Dominik H. schrieb:
> Ist es möglich den Collector so einzustellen dass er auch die
> Betriebszeit der Solaranlage in die Datenbank schreibt.

Kaum hatte ich die Frage gestellt habe ich schon die Lösung gefunden.

von Helmut B. (turbo112)


Lesenswert?

Hallo zusammen,
ich überlege ob ich mir auch so ein Konstrukt bauen soll.
Nur stellen sich mir nun einige Fragen. Ich weiß, jetzt kommt ließ doch 
das Wiki! Aber da habe ich schon meine Erste Frage:
Sind die beide ganz Offline?
Ich kann sie seit ein paar Tagen nicht erreichen.

Des weiteren, ich habe eine ganz neue Heizung, eine GB212 mit einer 
RC310 Steuerung. Wenn ich das richtig herausgefunden habe, spricht die 
EMS+.
Aber hilft mir das weiter?

Diese Steuerung besitzt auch einen Lan-Anschluß, da komme ich aber noch 
nicht dran, da ich dahin noch ein Kabel ziehen muss und der Wlan-AP ist 
noch nicht geliefert (der soll da übergangsweise dran).

Könnte ich darüber denn auch schon alles machen, was hier so beschrieben 
wird?
Oder muss ich dass alles probieren?
Was ich dann natürlich mache, wenn das noch keiner hat (und ja, ich 
würde dazu auch etwas schreiben, wenn ich Erkenntnisse habe)!!

Also, die Frage lautet auch, welchen Weg sollte ich gehen?

Tipps werden gern genommen ... :-)

Gruß,
Helmut


Schönen Abend!!

von ingof (Gast)


Lesenswert?

Helmut B. schrieb:
> Sind die beide ganz Offline?
> Ich kann sie seit ein paar Tagen nicht erreichen.

Wiki war bis gestern abend 22:00 noch erreichbar und ist dann 
abgeschmiert.
Hatte heute morgen den Server wieder am laufen aber die Wiki 
"vergessen".

Konnte ich jetzt nicht so schnell zum laufen bekommen und versuche es 
morgen früh wieder...

Helmut B. schrieb:
> spricht die EMS+

Das sollte auch klappen kann dazu aber nichts sagen weil ich nur EMS 
habe.


Es gab aber noch einen Thread mit einem WLAN-Modul (ESP?)

von Helmut B. (turbo112)


Lesenswert?

Hallo

ingof schrieb:
> Helmut B. schrieb:
>> Sind die beide ganz Offline?
>> Ich kann sie seit ein paar Tagen nicht erreichen.
>
> Wiki war bis gestern abend 22:00 noch erreichbar und ist dann
> abgeschmiert.

Einspruch euer Ehren. :-)
Das Wiki war am Samstag und gestern SICHER zwar vorhanden, aber leer.
Das es dann ab 22:00 Uhr gar nicht mehr ging kann sein ...

> Hatte heute morgen den Server wieder am laufen aber die Wiki
> "vergessen".

Ist doch kein Problem!!
Dann freue ich mich um so mehr wenn es wieder geht!! ;)

>
> Konnte ich jetzt nicht so schnell zum laufen bekommen und versuche es
> morgen früh wieder...
>

Auch kein Problem, nun weiß ich ja "es soll so nicht sein".
Dann probier ich eben immer wieder mal, damit habe ich keinerlei 
Probleme!

> Helmut B. schrieb:
>> spricht die EMS+
>
> Das sollte auch klappen kann dazu aber nichts sagen weil ich nur EMS
> habe.
>

Danke für Deine Auskunft und deine Mühen!!
Und bitte KEINE Hektik!

>
> Es gab aber noch einen Thread mit einem WLAN-Modul (ESP?)

Und genau das glaube ich auch gefunden zu haben, aber ich finde es nicht 
mehr wieder. Na ja ich werde noch mal suchen, sonst frage ich noch mal.

Danke und noch einen schönen Abend!

Gruß,
Helmut

von ingof (Gast)


Lesenswert?

Helmut B. schrieb:
> Einspruch euer Ehren. :-)

Wir sind hier ja nicht vor Gericht :-)

Ich wurde von der Technik gemobbt. Erst hat mich mein Internetanschluss 
mit längeren Aussetztern gemobbt. Als dann mein Server auch noch anfing 
mich zu mobben hatte ich die Internetproblerme schon vergessen.

Helmut B. schrieb:
>> Konnte ich jetzt nicht so schnell zum laufen bekommen und versuche es
>> morgen früh wieder...

Das Wiki lief wohl schon seit gestern wieder. Musste nur den Cache im 
Browser löschen damit es bei mir auch wieder lief.

Helmut B. schrieb:
> Und genau das glaube ich auch gefunden zu haben, aber ich finde es nicht
> mehr wieder.

Da ist er:
Beitrag "EMS > ESP8266-12 WLAN-Modul"

von Juergen O. (strolch)


Lesenswert?

ingof schrieb:
> Da ist er:
> Beitrag "EMS > ESP8266-12 WLAN-Modul"

Huch... da habe ich schon seit langem nichts mehr daran gemacht.
Das Teil schiebt einfach ganz brutal alle Telegramme, die es auf dem 
EMS-Bus sieht, an einen Telnet-Listener.
Ich habe seit längerem eine einfache JAVA-App laufen, die die Daten ein 
wenig aufbereitet und in einen Logserver transferiert, da dies für meine 
Zwecke ausreicht.

von Helmut B. (turbo112)


Lesenswert?

Hallo Ingo,

ingof schrieb:
> Helmut B. schrieb:
>> Einspruch euer Ehren. :-)
>
> Wir sind hier ja nicht vor Gericht :-)

Das war mir sehr wohl bewusst!
Aber mir viel gerade nichts besseres ein. :-)
>
> Ich wurde von der Technik gemobbt. Erst hat mich mein Internetanschluss
> mit längeren Aussetztern gemobbt. Als dann mein Server auch noch anfing
> mich zu mobben hatte ich die Internetproblerme schon vergessen.

Das ist aber nicht schön, wenn man von der eigenen Hardware gemobbt wird 
... ;)
>
> Helmut B. schrieb:
>>> Konnte ich jetzt nicht so schnell zum laufen bekommen und versuche es
>>> morgen früh wieder...
>
> Das Wiki lief wohl schon seit gestern wieder. Musste nur den Cache im
> Browser löschen damit es bei mir auch wieder lief.

Darin hatte ich Gestern schon mal gelesen und heute weiter. Das hat 
schon mal sehr geholfen. Aber so ganz klar bin ich mir noch nicht wie 
das geht, dazu muss ich mich noch weiter mit der Materie befassen.

Ach und danke für das Einstellen des tollen Wiki's!
Damit werde ich bestimmt noch zu tun haben!

Auch würde mich sehr interessieren, was mit der eingebauten Lan 
Schnittstelle alles zu machen ist. Aber da warte ich noch auf einen Wlan 
AP, den ich bestellt habe. Ich wollte mich nicht im Keller vor die 
Heizung setzen ... :-)
>
> Helmut B. schrieb:
>> Und genau das glaube ich auch gefunden zu haben, aber ich finde es nicht
>> mehr wieder.
>
> Da ist er:
> Beitrag "EMS > ESP8266-12 WLAN-Modul"

Ja, danke ich hatte es dann auch irgendwann gefunden! ;)

Mal sehen, wie weit ich komme, wenn ich doch noch fragen oder Probleme 
habe melde ich mich wieder.

Gruß,
Helmut

von Helmut B. (turbo112)


Lesenswert?

Hallo Juergen,

Juergen O. schrieb:
> ingof schrieb:
>> Da ist er:
>> Beitrag "EMS > ESP8266-12 WLAN-Modul"
>
> Huch... da habe ich schon seit langem nichts mehr daran gemacht.

Schade, aber wenn es das macht, was Du erwartest ...
Warum solltest Du auch!
> Das Teil schiebt einfach ganz brutal alle Telegramme, die es auf dem
> EMS-Bus sieht, an einen Telnet-Listener.

D.h. Du liest nur die Daten aus und legst sie dann irgend wo ab?
Du machst über diese Schnittstelle keine Änderungen an dem System?
> Ich habe seit längerem eine einfache JAVA-App laufen, die die Daten ein
> wenig aufbereitet und in einen Logserver transferiert, da dies für meine
> Zwecke ausreicht.

Die App macht die Daten also für Menschen lesbar, richtig?
Ist diese App irgendwo zu bekommen?

Na ja, ich würde schon gern schreibend zugreifen wollen, ich hab da so 
ein paar Ideen. Aber ob die machbar sind, weiß ich noch nicht.

So als Beispiel:
Ich möchte die WW Zirkulationspumpe schlafen schicken wenn keiner zu 
hause ist. Auch ein Absenken der Virtuellen Raumtemperatur wenn keiner 
zuhause ist wäre denkbar.

Aber naja, dafür muss ich die Funktion erst mal verstehen.

Danke für die Hinweise!

Gruß,
Helmut

von Susisstrolch (Gast)


Lesenswert?

Die App baut eine Telnet-Verbindung zum Interface auf und filtert (die 
für mich) interessanten Daten aus. Diese werden (momentan) dann via 
syslog an meine Syno geschoben.
Der Java-Code ist mit im Git. Kann relativ leicht auf bspw. MySql 
umgeschrieben werden.

Der schreibende Zugriff auf den EMS-Bus ist nicht ganz so einfach (für 
mich) zu implementieren, da der ESP eine 128 Byte FIFO hat, aber die 
Logik ein Read after Write erfordert - mit Break-Erkennung.
Mal schauen ob ich über Weihnachten dazu komme.
Allerdings gibt mir Susi immer die Prio-1 Projekte vor :)

von Ferdinand S. (sir_bacon)


Lesenswert?

Guten Tag,

Gerne möchte ich mich hier melden, aus die Niederlande. Seit längere 
Zeit beobachte ich diese Thread schon, weil ich ein Nefit Gas Heizung 
habe die auch EMS spricht. Der arbeitet zusammen mit eine OEG 
Solarthermie Anlage die mit eine (vom OEG angesteuerte) 3-wegventil 
zusammen gebunden sind. Also Solar Warmwasser Bereitung mit 
Heizungsunterstützung.

Jetzt aber macht der Steuerung vom 3-Wegventil mich ärger, Funktioniert 
nur wenn es nicht soll funktionieren und umgekehrt. Meine Installateur 
ist noch dran. Aber ich möchte gerne selber sehen was zumindest der 
Nefit Heizung macht.

Also bin ich auf der Suche nach eine (hoffentlich einfache) Weg um die 
Heizung aus zu werten. Ich möchte nur auswerten, nicht von außen 
steuern. Etwas mit eine Raspberry Pi werde Bevorzugt, damit kenne ich 
mir aus.

Softwaremäßig möchte ich gerne mit der SW von Danny Baumann arbeiten, 
seht ja gut aus. Also brauch ich noch Hardware.

Es gibt ja hier oben ein Schaltplan, aber ich bin nicht gut im Sache 
Hardware. Hat jemand noch etwas liegen was ich erwerben kann? 
Funktioniert der SW vom Danny auch mit der ht_pitiny-Adapter vom Norbert 
im Nachbar Thread (Beitrag "Heatronic 3 Adapter (Junkers Heizung) fuer Raspberry Pi")?

Gruß, Ferdinand

von Ferdinand S. (sir_bacon)


Lesenswert?

Hallo,

Mittlerweile gibt es ein neue Möglichkeit für die Hardware Link. Im 
Domoticz Forum gibt es jetzt ein Platine zum Umsetzung vom EMS auf UART:
http://www.domoticz.com/forum/viewtopic.php?f=38&t=14132&start=100
Diese ist gedacht für ein Arduino Anbinding, sollte aber auch an ein 
Raspberry Pi funktionieren. Entweder über direkte UART Verbindung oder 
UART-USB adapter wie:
http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm

Der Platine habe ich mir besorgt. Jetzt komt der Umsetzung von Software. 
Ich habe for der Platine an ein Raspberry Pi zu verknöpfen um dan mit 
der EMS Collector von Maniac103 der Bus aus zu werten. Zu dies wird ich 
noch Fragen im Buderus Faktensammlung Thread 
(Beitrag "Faktensammlung Buderus EMS") stellen.

Gruß

von AlexS (Gast)


Lesenswert?

Hi Leute,

bin neu und unerfahren. Spiele mich seit tagen mit dem Net-IO.
Ich habe die Software gebrannt mit dem HEX file. der Net-IO lässt sich 
auf
192.168.0.0 anpingen. Ich bekomme aber keine Verbindung über Safari, 
geschweige denn kann ich die ip, etc. änder. was mache ich falsch?

von RaspiNick (Gast)


Lesenswert?

Hallo
Die IP 192.168.0.0 lässt sich deswegen an pingen da dies eine 
Netzadresse und den Rechner selber antwortet und nicht als IP-Adresse 
für ein Gerät verwendbar ist. Ebenfalls die IP 192.168.0.255 kann nicht 
verwendet werden.

Wähle bitte eine andere z.B.: 192.168.0.245 aus und flashe den Net-IO 
nochmals neu mit der dieser IP.

von AlexS (Gast)


Lesenswert?

Hi RaspiNick,

ich habe das hex-file vom Ems-wiki genommen, da ich das hex-file nicht
erstellen konnte. Hast du evtl ein Hex-File, welches ich flashen kann?

Danke.

von AlexS (Gast)


Lesenswert?

Hi zusammen,

nun stehe ich vor dem nächsten Problem. Nachdem im Wiki immer von Wheezy 
ausgegangen wird und mein Raspi 3b+ das aber nicht unterstützt bin ich 
etwas ratlos. Im Forum finde ich auch nicht wirklich was. Leider habe 
ich keinen "alten" Raspi. Gerne würde ich das aktuell Openhabian-Image 
nehmen, denn der collector und openhab sollen darauf gemeinsam arbeiten. 
Hat jemand einen Rat für mich.

Danke an Alle, auch für die tolle Arbeit die hier geleistet wurde und 
wird.


AS

von Udo Hartmann (Gast)


Lesenswert?

Das sollte eigentlich keine Rolle spielen - kann sein, dass man mit den 
Versionen etwas spielen muss.

von Knut S. (dk6lg)



Lesenswert?

Hallo,
nachdem hier alles jahrelang einwandfrei funktionierte ist mir vor 
einigen Tagen der kleine Server "stehen" geblieben.
Alles tot.

Also flugs ein Cubieboard mit einer Dauerlauf festen  Platte 
ausgestattet und tapfer eine Neuinstallation gemacht.
Diesmal mit PHP7 statt PHP5, aber jetzt tauchen Fehler im Serverlog auf, 
die ich auch nach längere Suche nicht abstellen konnte.
Funktioniert:
Lifestatus
Schaltpunkte
Heizkurve
Einstellungen
Statistik
Also die wesentlichen Funktionen.

Fehler treten auf bei (Auszüge aus dem Serverlog ohne Datum):
Fehlerspeicher

(mod_fastcgi.c.2543) FastCGI-stderr: PHP Notice:  Undefined index: A0800 
in /var/www/html/a_emserr.php on line 53

Protokoll

mod_fastcgi.c.2543) FastCGI-stderr: PHP Fatal error:  Uncaught Error: 
Call to undefined function mysql_connect() in 
/usr/local/emsincludes/includes/emsqry.inc:404
(mod_fastcgi.c.2543) FastCGI-stderr: Stack trace:
(mod_fastcgi.c.2543) FastCGI-stderr: #0 /var/www/html/a_emslog.php(16): 
getEmsStatusCodes()
(mod_fastcgi.c.2543) FastCGI-stderr: #1 /var/www/html/index.php(31): 
require('/var/www/html/a...')
(mod_fastcgi.c.2543) FastCGI-stderr: #2 {main}
(mod_fastcgi.c.2543) FastCGI-stderr:   thrown in 
/usr/local/emsincludes/includes/emsqry.inc on line 404


Bin dankbar für jeden Tipp.

Gruss Knut

von Dominik H. (tech-nik82)


Lesenswert?

Hallo Knut

Das Problem kommt daher das im php7 leider das mysql_connect entfernt 
wurde.

Hatte das selbe Problem und die Datei 
"/usr/local/ems-tools/includes/emsqry.inc" geändert.

Nachfolgend der Teil des Codes ca. ab Zeile 404 den ich geändert habe.

function getEmsStatusCodes(){
  global $mysql_host, $mysql_user, $mysql_pass;
  //$link=mysql_connect($mysql_host, $mysql_user, $mysql_pass)
     //or die("Keine Verbindung zur Datenbank moeglich: " . 
mysql_error());
  //mysqli_query("use ems_data");
  $mysqli = new mysqli($mysql_host, $mysql_user, $mysql_pass, 
'ems_data');
  if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
  }

  /*$result = mysql_query("SELECT a.value as sc, b.value as fc, 
a.starttime as time ".
                      "FROM state_data a, state_data b ".
                      "WHERE a.sensor = 200 and b.sensor = 201 ".
                      "       and a.starttime = b.starttime ".
                      "ORDER BY time DESC" )
        or die("Abfrage fehlgeschlagen! ". mysql_error());*/
  $query = "SELECT a.value as sc, b.value as fc, a.starttime as time 
FROM state_data a, state_data b WHERE a.sensor = 200 and b.sensor = 201 
and a.starttime = b.starttime ORDER BY time DESC";
  if ($result = $mysqli->query($query)) {

    $res = array();
    while($row = mysqli_fetch_assoc($result) ){
      $res[]=str_replace(" 
","|",trim($row['time']))."|".$row['sc']."|".$row['fc'];
    }
    return $res;
  }
}

Danach werden die Meldungen im Protokoll wieder ausgegeben.

Das Problem mit dem fehlenden Statuscode konnte ich bislang auch bei mir 
nicht direkt lösen. Habe da einfach in der Datei 
"/usr/local/ems-tools/includes/emsscdes.inc" , vor der schließenden 
Klammer am Ende der Datei die fehlenden Codes eingetragen z.B.:
"A0800" => "Unbekannter Status der Heizung.",

Schöne Grüße
Dominik

von dk6lg (Gast)


Lesenswert?

Danke Dominik,

jetzt spielt wieder alles wie ich es in Erinnerung hatte.

Da wäre ich nie allein drauf gekommen.

Vielleicht fühlt sich ja mal jemand in der Lage die SW zu aktualisieren, 
denn  das Programm ist doch wirklich klasse und ich denke, dass ich 
nicht der Einzige bin, der solche Probleme hatte.

Gruss
Knut

von Ingo F. (ingof)


Lesenswert?

dk6lg schrieb:
> Vielleicht fühlt sich ja mal jemand in der Lage die SW zu aktualisieren,

habs mal ungetestet übernommen.

Moosy pfleg sein Repository ja nicht mehr. Ich hatte die EMS-Tools 
damals etwas modifiziert aber länger nicht mehr wirklich benutzt.

Habe es gerade mal upgedatet:
https://github.com/ingof/ems-tools

Oder hattet Ihr noch eine andere alte Quelle

Wenn jemand was geändert am besten ein PullRequest loslassen und ich 
übernehme es dann so...

: Bearbeitet durch User
von Knut S. (dk6lg)


Lesenswert?

Hallo Dominik,

jetzt habe ich doch noch eine Frage: Wie werde ich die messages los?

Er müllt mir das /lighttpd/errorlog mit folgenden Nachrichten zu:

FastCGI-stderr: PHP Notice:  Trying to get property of non-object in 
/var/www/html/sensor_utils.php.inc on line 11

und auch für die Zeilen 12, 20, 21, 85, 87

Meine Suche ergab, dass es ja nur eine "Notice" sei, aber mich stört es 
;-)

Falls Du eine Idee hast bitte immer her damit!

Gruss
Knut

von Dominik H. (tech-nik82)


Lesenswert?

Hallo Knut

das Kannst du deaktivieren, indem du in der php.ini
bei mir im Pfad unter "/etc/php/7.0/apache2"
den Eintrag "error_reporting= E_ALL"
auf
"error_reporting= E_ALL & ~E_DEPRECATED & ~E_STRICT"

änderst.

Das ist die empfohlene Einstellungen für Produktivsysteme. Dann werden 
Notizen und Warnungen wegen veraltetem Code nicht mehr angezeigt und 
geloggt.

Du kannst es aber auch über die Einstellungen

"display_errors = Off" und log_errors = "Off" komplett abschalten.

"display_errors" sollte sowieso auf "Off" stehen um keine Zugangsdaten 
zu veröffentlichen bei Datenbank- oder Skript-Fehlern.

Schönes Wochenende
Dominik

: Bearbeitet durch User
von Bernd Gewehr (Gast)


Lesenswert?

Hallo,

vielleicht wisst Ihr Rat:

Seit ich mit den Einstellungen im EMS-php UI und am RC35 rumgespielt 
habe, springt meine Einstellung immer wieder auf 
raumtemperaturgesteuert, obwohl ich immer wieder 
aussentemperaturgesteuert auswähle.

Einstellung im RC35 ist für nur einen Heizkreis auf 
außentemperaturgesteuert.

Bei Starten meckert die Heizung jedoch, dass die Einstellung für 
raumtemperaturgesteuert gewählt ist, aber keine Fühler angeschlossen 
sind.

Was kann das sein? Ideen?

von Knut S. (dk6lg)


Lesenswert?

Hallo Dominik,
es hat geholfen.

log_errors = "Off"

stand auf "On", die anderen Einstellungen stimmten schon.

Nun ist endlich wieder Ruhe im log.

Danke!

Gruss
Knut

von Jens Heruth (Gast)


Lesenswert?

Hallo Bernd, das Problem taucht bei mir auch auf ... eine Lösung habe 
ich bisher noch nicht gefunden. Evtl. weiß ja jemand anderes Rat !?
Evtl. wird in den erweiterten Einstellungen ein falscher Wert übergeben 
(Regelung/Führungsgröße) ?

von MC110 - RC310 (Gast)


Lesenswert?

Nach langem Suchen bin ich auf folgende Seite gestossen:

https://github.com/Th3M3/buderus_ems-wiki

Hier sind die Telegramme von MC110, RC310 und MM50 dokumentiert. Diese 
haben mir sehr geholfen.
Kennt jemand die Telegramme vom Mischermodul MM100?

von Helmut J. (helmbrot)


Lesenswert?

Danny B. schrieb:
> Marco schrieb:
....
>
>> 4.) In den Einstellungen wird die "minimale Außentemperatur" als 0°C
>> ausgelesen. Die Anlage steht aber auf -10. Ich kann den Wert über das
>> Webinterface erfolgreich setzen, aber auch dann wird wieder 0°C
>> angezeigt. In den Rohdaten tauchen die -10 Grad unter "mintemperature"
>> auf.
>
> Ich gehe mal davon aus, dass sie dort als 'rc mintemperature' auftaucht?
> Wenn ja, ist das ein Frontend-Problem, da kann ich dir leider nicht
> helfen.

Hallo Danny B.: Ich beziehe mich auf den obrigen Beitrag #4903983:.
In emssetvalue.inc und emsgetvalue.inc steht tatsächlich rc ..
"gebaeude" => "rc buildingtype",
"daempfung" => "rc outdoortempdamping",
"minaussentemp" => "rc mintemperature",

Nachdem löschen von dem rc wird der Wert „gebaede“ und „daempfung“ auch 
tatsächlich richtig angezeigt. Nur "mintemperature" ist aber immer noch 
falsch!
Ich dachte das Problem mit der mintemperature ist gefixt, ich habe die 
aktuelle collector Version installiert.

An IngoF: könntest du die Bugs in emssetvalue.inc und emsgetvalue.inc 
korrigieren?

von Helmut J. (helmbrot)


Lesenswert?

Helmut J. schrieb:
> Danny B. schrieb:
>> Marco schrieb:
> ....
>>
>>> 4.) In den Einstellungen wird die "minimale Außentemperatur" als 0°C
>>> ausgelesen. Die Anlage steht aber auf -10. Ich kann den Wert über das
>>> Webinterface erfolgreich setzen, aber auch dann wird wieder 0°C
>>> angezeigt. In den Rohdaten tauchen die -10 Grad unter "mintemperature"
>>> auf.
>>
>> Ich gehe mal davon aus, dass sie dort als 'rc mintemperature' auftaucht?
>> Wenn ja, ist das ein Frontend-Problem, da kann ich dir leider nicht
>> helfen.
>
> Hallo Danny B.: Ich beziehe mich auf den obrigen Beitrag #4903983:.
> In emssetvalue.inc und emsgetvalue.inc steht tatsächlich rc ..
> "gebaeude" => "rc buildingtype",
> "daempfung" => "rc outdoortempdamping",
> "minaussentemp" => "rc mintemperature",
>
> Nachdem löschen von dem rc wird der Wert „gebaede“ und „daempfung“ auch
> tatsächlich richtig angezeigt. Nur "mintemperature" ist aber immer noch
> falsch!
> Ich dachte das Problem mit der mintemperature ist gefixt, ich habe die
> aktuelle collector Version installiert.
>
> An IngoF: könntest du die Bugs in emssetvalue.inc und emsgetvalue.inc
> korrigieren?

Mit dem aktuellen collectord ist das Probelm behoben. Es muss jetzt 
wieder wie im Original:
"rc buildingtype",
"rc outdoortempdamping",
"rc mintemperature",
heißen.

von Bernd G. (bernd_g)


Lesenswert?

Jens Heruth schrieb:
> Hallo Bernd, das Problem taucht bei mir auch auf ... eine Lösung habe
> ich bisher noch nicht gefunden. Evtl. weiß ja jemand anderes Rat !?
> Evtl. wird in den erweiterten Einstellungen ein falscher Wert übergeben
> (Regelung/Führungsgröße) ?

Ich habe jetzt den Collectord von Moosy aus 
https://github.com/moosy/ems-collector eingesetzt und auch seinen Stand 
des Web-Interfaces. Dort habe ich das Problem nicht mehr. Grund bisher 
unbekannt.

von Bernd G. (bernd_g)


Lesenswert?

Welche Parameter für die Heizkurve verwendet Ihr?

Insbesondere Eure mindest-Außentemperatur und die Auslegungstemperatur 
interessiert mich. Warum ist die Einstellung Auslegungstemperatur auf 
50° beschränkt? Das ist doch die maximale Vorlauftemperatur bei der 
minimalen Außentemperatur, oder? Scheint mir wenig zu sein... Oder 
verstehe ich das falsch?

von Paul M. (Gast)


Lesenswert?

Hallo ins Forum,

ich verwende den ems-collector und das WEB-frontend seit knapp 4 Jahren 
an meinem Buderus-Heizkessel und bin damit sehr zufrieden.
Damals habe ich alles auf einem Raspberry Pi 3B installiert, auf 
Raspbian Jessie. Alles prima, damals.

Nun gab es ja mehrfach Updates u.a. auf Buster und da das Upgrade von 
Jessie auf Buster nicht wirklich unterstützt wurde, wollte ich das neu 
aufsetzen, auf einem Raspberry 4.

Tja, war nicht ganz einfach, aber ich habe fast alles hingekriegt (auch 
die Sache mit PHP7), nur an zwei Problemen beisse ich mir noch die Zähne 
aus:

- a)
der ems-collector läßt sich auf Buster nicht mehr compilieren, da das 
Paket libmysql++-dev nicht mehr zur Verfügung steht. Das stellt doch 
eigentlich alle User, die die Software neu installieren wollen vor 
Probleme. Läßt sich da was dran machen?

Ich habe mir geholfen, indem ich den collectord vom alten System kopiert 
habe und dann die Komponenten rübergezogen habe, nach denen er beim 
Starten geschrieen hat. Das waren:
  + /usr/lib/arm-linux-gnueabihf/libboost_system.so.1.62.0
  + /usr/lib/arm-linux-gnueabihf/libboost_program_options.so.1.62.0
  + /usr/lib/libmysqlpp.so.3
  + /usr/lib/libmariadbclient.so.18

Dann lief wieder alles und ich hab mich schon gefreut, leider etwas zu 
früh und damit kommen wir zu meinem zweiten Problem:
-b)
es sieht so aus als ob der ems-collector (collectord) immer mal wieder 
unregelmäßig, so alle 10-15 Minuten für ein paar Minuten einfriert. Das 
erkennt man beispielsweise dran, dass die normalerweise gelben Parameter 
der Live-Rohdatenanzeige nicht mehr aktualisiert und so mit der Zeit 
grau werden.

Nach einer Weile schüttelt sich dann der collectord und kappt 
beispielsweise die telnet localhost 7777 Verbindung. Man kann aber bis 
kurz vorher mit "cache fetch" Daten holen. Nur neue Rohdaten werden 
nicht weitergegeben obwohl die entsprechenden LEDs am NetIO Gateway brav 
alle paar Sekunden blinken.
PHP meldet dann "connection reset by peer" und dann geht es wieder für 
ein paar Minuten gut. Damit ist die Aufzeichnung in der Datenbank etwas 
lückenhaft, soweit immer noch brauchbar aber es stört mich ungemein, 
wenn was nicht sauber funktioniert.

Ich habe den collectord auch mit der debug-Option -d 
all=/home/pi/collector.log laufen lassen und beobachtet, ob während des 
Einfrierens Ausgaben kommen. Nein, die Ausgabe friert ein, aber ohne 
Fehlermeldung: die letzte Zeile ist beispielsweise "DATA: 
Zirkulation-Bertriebsart = Automatik". Irgendwann geht es dann nahtlos 
weiter aber die Rohdaten-Telegramme in der Zwischenzeit gehen wohl 
verloren. Beispiel:

IO: Got bytes 0xaa 0x55 0x1f 0x8 00 0x18 00 0xb 0x1 0x1e 0x64 00 00 00 
00 00 0x2 0x16 0x7d 00 0x1 0x53 00 0x1 0x13 0x30 0x48 00 00 0xff 00 00 
0x80 00 0x4e
MESSAGE[31.08.2020 19:29:38]: source 0x08, dest 0x00, type 0x18, offset 
0, data: 0x0b 0x01 0x1e 0x64 0x00 0x00 0x00 0x00 0x00 0x02 0x16 0x7d 
0x00 0x01 0x53 0x00 0x01 0x13 0x30 0x48 0x00 0x00 0xff 0x0$
DATA: Kessel-Solltemperatur = 11 °C
DATA: Kessel-Isttemperatur = 28.6 °C
DATA: Brenner-Sollwert Modulation = 100 %
DATA: Brenner-Istwert Modulation = 0 %
DATA: Flamme = AUS
DATA: Brenner = AUS
DATA: Zündung = AUS
DATA: Kessel-Pumpe = AUS
DATA: 3-Wege-Ventil auf WW = AUS
DATA: Zirkulation = AUS
DATA: Rücklauf-Isttemperatur = 33.9 °C
DATA: Flammenstrom = 0.1 µA
DATA: Systemdruck = 1.9 bar
DATA: Ansaugluft-Isttemperatur = nicht verfügbar
DATA: Servicecode = 0H
DATA: Fehlercode = 0
IO: Got bytes 0xaa 0x55 0xe 0x8 00 0x18 0x1b 00 00 00 00 00 00 00 0xb 00 
00 00
MESSAGE[31.08.2020 19:29:39]: source 0x08, dest 0x00, type 0x18, offset 
27, data: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0b 0x00 0x00
IO: Got bytes 0xaa 0x55 0x14 0x8 00 0x34 00 0x3a 0x2 0x16 0x7d 00 0x21 
00 0x1 0x3 00 0x3 0x15 0xb4 00 0x23 0x61 0xac
MESSAGE[31.08.2020 19:29:39]: source 0x08, dest 0x00, type 0x34, offset 
0, data: 0x3a 0x02 0x16 0x7d 0x00 0x21 0x00 0x01 0x03 0x00 0x03 0x15 
0xb4 0x00 0x23 0x61
DATA: Warmwasser-Solltemperatur = 58 °C
DATA: Warmwasser-Isttemperatur = 53.4 °C
DATA: Warmwasser-Tagbetrieb = AN
DATA: Warmwasser-Einmalladung = AUS
DATA: Warmwasser-Therm. Desinfektion = AUS
DATA: WW-Bereitung = AUS
DATA: Warmwasser-Nachladung = AUS
DATA: WW-Temperatur OK = AN
DATA: Warmwasser-Fühler 1 defekt = AUS
DATA: Warmwasser-Fühler 2 defekt = AUS
DATA: Warmwasser-Störung = AUS
DATA: Warmwasser-Störung Desinfektion = AUS
DATA: Zirkulation-Tagbetrieb = AN
DATA: Zirkulation = AUS
DATA: Warmwasser-Ladevorgang = AUS
DATA: WW-System-Typ = groß
DATA: Warmwasser-Durchflussmenge = 0 l/min
DATA: WW-Bereitungszeit = 202164 min
DATA: WW-Bereitungen  = 9057
DATA: Zirkulation-Betriebsart = Automatik
1
IO: Got bytes 0x45 0x52 0x52 0x4f 0x52 0x3a 0x20 0x43 0x6f 0x6e 0x6e 0x65 0x63 0x74 0x69 0x6f 0x6e 0x20 0x62 0x6c 0x6f 0x63 0x6b 0x65 0x64 0xa 00
IO: Got bytes 0xaa 0x55 0x1f 0x8 00 0x18 00 0xb 0x1 0x1e 0x64 00 00 00 
00 00 0x2 0x13 0x7d 00 0x1 0x5a 00 0x1 0x13 0x30 0x48 00 00 0xff 00 00 
0x80 00 0x42
MESSAGE[31.08.2020 19:32:58]: source 0x08, dest 0x00, type 0x18, offset 
0, data: 0x0b 0x01 0x1e 0x64 0x00 0x00 0x00 0x00 0x00 0x02 0x13 0x7d 
0x00 0x01 0x5a 0x00 0x01 0x13 0x30 0x48 0x00 0x00 0xff 0x0$
DATA: Kessel-Solltemperatur = 11 °C
DATA: Kessel-Isttemperatur = 28.6 °C
DATA: Brenner-Sollwert Modulation = 100 %
DATA: Brenner-Istwert Modulation = 0 %
DATA: Flamme = AUS
DATA: Brenner = AUS
DATA: Zündung = AUS
DATA: Kessel-Pumpe = AUS
DATA: 3-Wege-Ventil auf WW = AUS
DATA: Zirkulation = AUS
DATA: Rücklauf-Isttemperatur = 34.6 °C
DATA: Flammenstrom = 0.1 µA
DATA: Systemdruck = 1.9 bar
DATA: Ansaugluft-Isttemperatur = nicht verfügbar
DATA: Servicecode = 0H
DATA: Fehlercode = 0
IO: Got bytes 0xaa 0x55 0xe 0x8 00 0x18 0x1b 00 00 00 00 00 00 00 0xb 00 
00 00
MESSAGE[31.08.2020 19:32:58]: source 0x08, dest 0x00, type 0x18, offset 
27, data: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x0b 0x00 0x00
IO: Got bytes 0xaa 0x55 0x14 0x8 00 0x34 00 0x3a 0x2 0x13 0x7d 00 0x21 
00 0x1 0x3 00 0x3 0x15 0xb4 00 0x23 0x61 0xa9
MESSAGE[31.08.2020 19:32:59]: source 0x08, dest 0x00, type 0x34, offset 
0, data: 0x3a 0x02 0x13 0x7d 0x00 0x21 0x00 0x01 0x03 0x00 0x03 0x15 
0xb4 0x00 0x23 0x61
DATA: Warmwasser-Solltemperatur = 58 °C
DATA: Warmwasser-Isttemperatur = 53.1 °C
DATA: Warmwasser-Tagbetrieb = AN
DATA: Warmwasser-Einmalladung = AUS
DATA: Warmwasser-Therm. Desinfektion = AUS
DATA: WW-Bereitung = AUS
DATA: Warmwasser-Nachladung = AUS
DATA: WW-Temperatur OK = AN
DATA: Warmwasser-Fühler 1 defekt = AUS
DATA: Warmwasser-Fühler 2 defekt = AUS
DATA: Warmwasser-Störung = AUS
DATA: Warmwasser-Störung Desinfektion = AUS
DATA: Zirkulation-Tagbetrieb = AN
DATA: Zirkulation = AUS
DATA: Warmwasser-Ladevorgang = AUS
DATA: WW-System-Typ = groß
DATA: Warmwasser-Durchflussmenge = 0 l/min
DATA: WW-Bereitungszeit = 202164 min
DATA: WW-Bereitungen  = 9057
DATA: Zirkulation-Betriebsart = Automatik
IO: Got bytes 0xaa 0x55 0x13 0x8 00 0x7 00 0xb 0x1 00 00 00 00 0x1 00 00 
00 00 00 00 00 00 0x4
MESSAGE[31.08.2020 19:33:01]: source 0x08, dest 0x00, type 0x07, offset 
0, data: 0x0b 0x01 0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 
0x00 0x00 0x00
DATA: Unhandled message received(source 0x08, type 0x07).

In der Mitte nach dem "Automatik" beginnt die Wartezeit von rund 3 
Minuten.
Die nächste Meldung danach ist die markierte, die mit IO: OHNE(!) die 
0xaa 0x55 als die ersten beiden Bytes ausgibt. Vielleicht hat er sich 
dran verschluckt und auf mehr gewartet?!

Ich habe noch eine kurze Kontrolle über ein paar Stunden mit der alten 
Installation vorgenommen mit genau dem gleichen NetIO Gateway, da tritt 
der Einfrier-Effekt nicht auf.

Was kann das sein? Hat jemand eine Idee?

Grüße
Paul

von Sven K. (svenk)


Lesenswert?

Hallo,

probiere mal nach Paket default-libmysqlclient-dev zu suchen .

Lg Sven

von Paul M. (Gast)


Lesenswert?

Hallo Sven,
erst mal vielen Dank für die schnelle Reaktion.

Ja, das Paket default-libmysqlclient-dev wird gefunden und erfolgreich 
installiert. Aber das Problem beim compilieren bleibt das gleiche ... 
;-( Es fehlen leider immer noch die mysql C++ header.

1
/ems-collector/collector $ make
2
g++ -Wall -c -O2 -std=c++0x -DHAVE_DAEMONIZE -DHAVE_MYSQL -I/usr/include/mysql main.cpp
3
In file included from main.cpp:28:
4
Database.h:25:10: fatal error: mysql++/connection.h: Datei oder Verzeichnis nicht gefunden
5
 #include <mysql++/connection.h>
6
          ^~~~~~~~~~~~~~~~~~~~~~
7
compilation terminated.

Grüße
Paul

von Paul M. (Gast)


Lesenswert?

Hallo Forum,

das Problem #b (Einfrieren des Collectors) in meinem Posting vom 
31.08.2020 20:06 ist vorerst verschwunden. Es war über zwei Tage 
reproduzierbar alle 10-15 Minuten zu beobachten. Jetzt wollte ich nach 
einer Woche der Sache nochmal weiter nachgehen, aber im Moment 
funktionert es.

Ich mag Fehler nicht, die von selbst verschwinden. ;-(

Aber das Problem #a (Neukompilieren des Collectors geht nicht weil das 
Paket libmysql++-dev auf Raspbian Buster nicht zur Verfügung steht) ist 
noch offen.

Viele Grüße
Paul

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.