Page 1 of 2
OTmonitor als daemon op Raspberry Pi
Posted: Tue Nov 25, 2014 5:04 pm
by rtenklooster
Hallo allen,
Ik ben al de hele middag bezig om de gateway + opentherm monitor in daeamon modus automatisch te laten starten op mij raspberry pi.
Ik heb een rc.d script geregistreerd:
Code: Select all
#! /bin/sh
# /etc/init.d/otgw
### BEGIN INIT INFO
# Provides: otgw
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Simple script to start a program at boot
# Description: A simple script from www.stuffaboutcode.com which will start / stop a program a boot / shutdown.
### END INIT INFO
# If you want a command to always run, put it here
myscript()
{
sleep 60
/home/pi/otmonitor-ahf --webserver 8085 --daemon --datafile=/var/www/otstate &
}
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting otgw"
# run application you want to start
#/home/pi/otmonitor-ahf --webserver 8085 --daemon --datafile=/var/www/otstate &
myscript &
;;
stop)
echo "Stopping otgw"
# kill application you want to stop
killall otmonitor-ahf
;;
*)
echo "Usage: /etc/init.d/otgw {start|stop}"
exit 1
;;
esac
exit 0
De sleep functie heb ik er al bij tussen gezet, maar dit is niet de oplossing.
Wat doet hij: bij een boot van de rPi start de otmonitor keurig op.
Hij is dan echter niet connected met de usb poort. Er komt dus geen data binnen. kun je hier ook nog een usb device ingeven: /home/pi/otmonitor-ahf --webserver 8085 --daemon --datafile=/var/www/otstate
Ik heb het idee dat het script rc.local sneller opstart dan de usb converter is geinnitialiseerd, maar zeker weten doe ik het niet.
Iemand die me kan helpen? Zodra ik via putty inlog en init.d/otgw stop / start doe, maakt hij keurig verbinding.
Re: OTmonitor als daemon op Raspberry Pi
Posted: Tue Nov 25, 2014 5:25 pm
by yjb
Hallo,
(ik benatwoord dit vanuit generieke Linux kennis, moeyt in principe ook op een PI werken).
Sleep 60 gaat niet werken omdat alle init scripts serieel worden uitgevoerd. Je zult de required start zodanig moeten invullen dat eerst je andere dependencies worden uitgevoerd. Dus even kijken welk script USB initialiseerd. Misschien iets van required $sshd (dan weet je zeker dat het netwerk ook "op" is).
Ysbrand
Re: OTmonitor als daemon op Raspberry Pi
Posted: Tue Nov 25, 2014 5:41 pm
by rtenklooster
yjb wrote:Hallo,
(ik benatwoord dit vanuit generieke Linux kennis, moeyt in principe ook op een PI werken).
Sleep 60 gaat niet werken omdat alle init scripts serieel worden uitgevoerd. Je zult de required start zodanig moeten invullen dat eerst je andere dependencies worden uitgevoerd. Dus even kijken welk script USB initialiseerd. Misschien iets van required $sshd (dan weet je zeker dat het netwerk ook "op" is).
Ysbrand
Dankje,
Helaas is dit nog steeds niet de oplossing.
Misschien probeert hij verbinding te maken met de (verkeerde) usb device. Is er een mogelijkheid om deze te forceren? Iets als -x /dev/ttyUSB0?
Re: OTmonitor als daemon op Raspberry Pi
Posted: Sat Nov 29, 2014 9:26 pm
by hvxl
De
nieuwste otmonitor versie 4.1 blijft herhaaldelijk proberen om de verbinding op te zetten. Dus als otmonitor eerder start dan je USB serieel apparaat beschikbaar is, zou het na verloop van tijd toch moeten gaan werken.
Re: OTmonitor als daemon op Raspberry Pi
Posted: Sat Nov 29, 2014 10:33 pm
by MarFan
Ik probeer ook dit script werkend te krijgen.
Het script lijkt op zich te werken, ik krijg response van de webserver (dus otMonitor draait), alleen veranderen er geen gegevens.
Als ik het script start en op de commandline met het commando
Code: Select all
/home/pi/otmonitor-ahf --webserver 8085 --daemon --datafile=/var/www/otstate &
, werkt alles wel (inclusief graph)
Dus zowel bij het opstarten als met de hand het script starten/stoppen werkt het niet. Direct op de commandline wel.
Kan dit een rechten zaak zijn ?
Re: OTmonitor als daemon op Raspberry Pi
Posted: Sat Nov 29, 2014 11:07 pm
by hvxl
Je specificeert geen device en als je het script van rtenklooster gebruikt zal otmonitor als root draaien (slecht idee). Om dat te laten werken moet er een /root/.otmonitorrc file zijn waar het juiste device in staat.
Ik zou otmonitor liever als een gewone user, zoals pi, draaien. Dan pikt hij ook de settings op die je als pi hebt gemaakt. Je kunt voor de zekerheid het juiste device in het commando meegeven. Dat wordt dan in /etc/init.d/otgw iets als:
Code: Select all
sudo -u pi /home/pi/otmonitor-ahf --webserver 8085 --daemon /dev/ttyUSB0 &
Ik zou trouwens op een Raspberry Pi de datafile niet naar /var/www/otstate schrijven. De datafile wordt elke halve minuut geschreven en een SD kaart kan maar een beperkt aantal schrijfacties aan. Het lijkt mij beter om een directory onder /run (dat is een tmpfs in ram) te maken waar pi schrijfrechten heeft en daar de datafile te schrijven. Je kunt dan eventueel /var/www/otstate een symbolic link naar /run/otmon/otstate maken.
Re: OTmonitor als daemon op Raspberry Pi
Posted: Sun Nov 30, 2014 12:05 am
by MarFan
Dank voor de snelle en duidelijke response, dit lijkt te werken, gaaf

Re: OTmonitor als daemon op Raspberry Pi
Posted: Wed Dec 03, 2014 2:07 pm
by rtenklooster
hvxl wrote:
Code: Select all
sudo -u pi /home/pi/otmonitor-ahf --webserver 8085 --daemon /dev/ttyUSB0 &
Bedankt voor de nieuwe versie! Mooi dat je een device kunt specificeren, had geen idee hoe dat moest vanuit de command line. En runnen als user pi, das een goeie.
Ik ga de boel eventjes updaten en kom er eventjes op terug.
Verder is /var/www bij mij een gemounte netwerk share, zou dus geen problemen moeten opleveren.
Nogmaals dank voor het meedenken en voor je fantastische werk!
Re: OTmonitor als daemon op Raspberry Pi
Posted: Wed Dec 03, 2014 2:21 pm
by rtenklooster
Net alles geupdate,
het werkt super! Onwijs bedankt

Re: OTmonitor als daemon op Raspberry Pi
Posted: Wed Dec 03, 2014 9:30 pm
by yjb
hvxl wrote:De
nieuwste otmonitor versie 4.1 blijft herhaaldelijk proberen om de verbinding op te zetten. Dus als otmonitor eerder start dan je USB serieel apparaat beschikbaar is, zou het na verloop van tijd toch moeten gaan werken.
Ik heb zojuist ook de nieuwe versie van otmonitor geïnstalleerd. otmonitor probeert inderdaad de verbinding op te bouwen totdat dit inderdad lukt. Maar als de verbinding wegvalt, lijkt het erop dat otmonitor dat niet merkt. (Misschien moet ik langer dan 30 minuten wachten?).
<Edit>
Nog wat verder gekeken: otmonitor does een prima job en bouwt de verbinding opnieuw op, maar de gateway stuurt geen informatie meer totdat otmonitor een commando stuurt. Ik heb dit getest door:
- verbinding verbreken (reboot LAN server connected to OTGW)
- verbinding wordt opnieuw opgebouwd, geen messages meer zichtbaar
- na een hele nacht geen messages in otmonitor: PR=A
- messages komen weer binnen
Ik weet niet of dit komt omdat ik de gateway op dit moment niet aan opentherm heb hangen (standalone)
</Edit>
Is het mogelijk om iets van een heartbeat in otmonitor in te bouwen? Iets in de trant van: als er langer dan 5 minuten geen meldingen binnenkomen, dan de verbinding afbreken, en na een timeout opnieuw opbouwen (met een melding in de logfile oid)?
<Edit>
Verbinding gata dus wel goed, dus misschien alleen een "dummy commando"?
</Edit>
Ysbrand
Re: OTmonitor als daemon op Raspberry Pi
Posted: Thu Dec 04, 2014 12:23 pm
by hvxl
yjb wrote:Nog wat verder gekeken: otmonitor does een prima job en bouwt de verbinding opnieuw op, maar de gateway stuurt geen informatie meer totdat otmonitor een commando stuurt.
...
Verbinding gata dus wel goed, dus misschien alleen een "dummy commando"?
De gateway zou wel degelijk informatie moeten sturen, maar blijkbaar verdwijnt dat ergens onderweg.
Als je onder Options->Thermostat (F2) de optie "Automatically update the gateway clock" aan zet, stuurt otmonitor elke minuut een SC commando naar de gateway. Wellicht geeft dat de gewenste bijwerking.
Re: OTmonitor als daemon op Raspberry Pi
Posted: Thu Dec 04, 2014 1:14 pm
by yjb
Dank je wel voor je snelle antwoord:
Ja, die optie aanzetten geeft inderdaad het juiste effect, die is wat ik zie als de setting in the GUI wordt aangzet:
Code: Select all
12:02:00.001490 Command: SC=12:02/4
12:02:00.030274 SC: 12:02/4
maar het lijkt erop dat die setting niet volledig uit de config file wordt opgepikt (na een herstart van otmonitor).
In de config file:
Code: Select all
clock {
year false
date false
auto true
}
En de GUI geeft ook een mark in de checkbox (Automatically update the gateway clock). Maar ik zie geen SC commando in de log. Pas als ik de checkmark
uit en dan weer
aan zet komen de SC commando's elke minuut weer terug.
Re: OTmonitor als daemon op Raspberry Pi
Posted: Thu Dec 04, 2014 1:51 pm
by hvxl
Wat er precies moet gebeuren is het volgende:
- OTmonitor ontvangt een BXXXXXXXX bericht. Dan stuurt hij een PR=A commando.
- OTmonitor ontvangt "OpenTherm Gateway 4.1". Dat is de trigger om te beginnen SC commando's te sturen.
Als er geen ketel is aangesloten zal dit inderdaad niet gaan werken, maar in een normale opstelling wel.
Dit zijn de eerste regels die ik krijg als ik otmonitor opstart:
Code: Select all
12:34:32.248101 T10010A00 Write-Data Control setpoint: 10.00
12:34:32.294326 BD0010A00 Write-Ack Control setpoint: 10.00
12:34:32.295662 Command: PR=A
12:34:32.403834 PR: A=OpenTherm Gateway 4.1
12:34:32.404544 Command: SC=12:34/4
12:34:32.404892 Command: SR=22:7,222
12:34:32.515366 SC: 12:34/4
12:34:32.515983 SR: 22:7/222
Re: OTmonitor als daemon op Raspberry Pi
Posted: Thu Dec 04, 2014 2:03 pm
by yjb
Ok, ik ga dat vanavond testen, dank je wel voor je uitleg.
<Edit>
Hele spul aangesloten, en de verbinding komt inderdaad automatisch terug; ook nadat de LAN gateway de verbinding tijdelijk heeft verbroken.
Code: Select all
21:59:52.533968 T90013400 Write-Data Control setpoint: 52.00
21:59:52.642556 B50013400 Write-Ack Control setpoint: 52.00
22:00:30.644336 BF0090000
AC0091580
T00000300
BC000030A
T10013500
BD0013500Unk-DataIdRemote override room setpoint: 0.00
22:00:30.645098 T00110000 Read-Data Relative modulation level: 0.00
22:00:30.645480 BC0110000 Read-Ack Relative modulation level: 0.00
22:00:30.645888 T80190000 Read-Data Boiler water temperature: 0.00
22:00:30.646313 BC0193700 Read-Ack Boiler water temperature: 55.00
22:00:30.646705 T00300000 Read-Data DHW setpoint boundaries: 0 0
22:00:30.647127 BC0304B14 Read-Ack DHW setpoint boundaries: 75 20
Nu nog kijken hoe ik het e.e.a. in FHEM ga proppen, maar dat is weer een heel ander verhaal.
Nogmaals: bedankt!
</Edit>
Re: OTmonitor als daemon op Raspberry Pi
Posted: Mon Jan 05, 2015 4:31 pm
by jeroen__online
I recently set up a Raspberry Pi and OTGW as well and I wanted to share the script I use to run otmonitor as a daemon. It uses the start-stop-daemon (readily available in Raspbian), a dedicated PID file and can be easily configured (for example to run as a separate user).
Code: Select all
#! /bin/sh
### BEGIN INIT INFO
# Provides: otmonitor
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Should-Start: $NetworkManager
# Should-Stop: $NetworkManager
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts instance of otmonitor
# Description: starts instance of otmonitor using start-stop-daemon
### END INIT INFO
############### EDIT ME ##################
# path to app
APP_PATH=/home/pi
# user
RUN_AS=otmonitor
# path to otmonitor bin
DAEMON=/usr/bin/otmonitor
STARTSTOPDAEMON=/sbin/start-stop-daemon
# Path to store PID file
PID_FILE=/var/run/otmonitor/server.pid
PID_PATH=$(dirname $PID_FILE)
# script name
NAME=otmonitor
# app name
DESC="OpenTherm Monitor"
# startup args
DAEMON_OPTS="--daemon -f /home/pi/.otmonitorrc -w 8080"
############### END EDIT ME ##################
test -x $DAEMON || exit 0
set -e
case "$1" in
start)
echo "Starting $DESC"
rm -rf $PID_PATH || return 1
install -d --mode=0755 -o $RUN_AS $PID_PATH || return 1
$STARTSTOPDAEMON -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
sleep 2
if [ ! -f $PID_FILE ]; then
pidof $DAEMON > $PID_FILE
fi
;;
stop)
echo "Stopping $DESC"
$STARTSTOPDAEMON --stop --pidfile $PID_FILE --retry 15
;;
restart|force-reload)
echo "Restarting $DESC"
$STARTSTOPDAEMON --stop --pidfile $PID_FILE --retry 15
$STARTSTOPDAEMON -d $APP_PATH -c $RUN_AS --start --background --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
I have the otmonitor executable in /usr/bin/otmonitor (defined in "DAEMON") and use the /home/pi/.otmonitorrc file as default config file, but this can of course be omitted or changed (by editing "DAEMON_OPTS"). If you run otmonitor as a separate user and have the OTGW connected through USB, make sure the user belongs to the dialout group (usermod -G dialout <OTMONITOR_USER>) so it can access the OTGW device.
Although you've already found a working script, hope this helps
