OTmonitor als daemon op Raspberry Pi

This Forum is about the Opentherm gateway (OTG) from Schelte

Moderator: hvxl

OTmonitor als daemon op Raspberry Pi

Postby rtenklooster » Tue Nov 25, 2014 4:04 pm

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.
rtenklooster
Starting Member
Starting Member
 
Posts: 22
Joined: October 2013

Re: OTmonitor als daemon op Raspberry Pi

Postby yjb » Tue Nov 25, 2014 4:25 pm

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
yjb
Member
Member
 
Posts: 187
Joined: April 2009
Location: Venhuizen, Netherlands

Re: OTmonitor als daemon op Raspberry Pi

Postby rtenklooster » Tue Nov 25, 2014 4:41 pm

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?
rtenklooster
Starting Member
Starting Member
 
Posts: 22
Joined: October 2013

Re: OTmonitor als daemon op Raspberry Pi

Postby hvxl » Sat Nov 29, 2014 8:26 pm

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.
Schelte
hvxl
Senior Member
Senior Member
 
Posts: 1201
Joined: June 2010

Re: OTmonitor als daemon op Raspberry Pi

Postby MarFan » Sat Nov 29, 2014 9:33 pm

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 ?
MarFan
Starting Member
Starting Member
 
Posts: 15
Joined: September 2013

Re: OTmonitor als daemon op Raspberry Pi

Postby hvxl » Sat Nov 29, 2014 10:07 pm

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.
Schelte
hvxl
Senior Member
Senior Member
 
Posts: 1201
Joined: June 2010

Re: OTmonitor als daemon op Raspberry Pi

Postby MarFan » Sat Nov 29, 2014 11:05 pm

Dank voor de snelle en duidelijke response, dit lijkt te werken, gaaf :)
MarFan
Starting Member
Starting Member
 
Posts: 15
Joined: September 2013

Re: OTmonitor als daemon op Raspberry Pi

Postby rtenklooster » Wed Dec 03, 2014 1:07 pm

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!
rtenklooster
Starting Member
Starting Member
 
Posts: 22
Joined: October 2013

Re: OTmonitor als daemon op Raspberry Pi

Postby rtenklooster » Wed Dec 03, 2014 1:21 pm

Net alles geupdate,
het werkt super! Onwijs bedankt :-)
rtenklooster
Starting Member
Starting Member
 
Posts: 22
Joined: October 2013

Re: OTmonitor als daemon op Raspberry Pi

Postby yjb » Wed Dec 03, 2014 8:30 pm

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
yjb
Member
Member
 
Posts: 187
Joined: April 2009
Location: Venhuizen, Netherlands

Re: OTmonitor als daemon op Raspberry Pi

Postby hvxl » Thu Dec 04, 2014 11:23 am

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.
Schelte
hvxl
Senior Member
Senior Member
 
Posts: 1201
Joined: June 2010

Re: OTmonitor als daemon op Raspberry Pi

Postby yjb » Thu Dec 04, 2014 12:14 pm

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.
yjb
Member
Member
 
Posts: 187
Joined: April 2009
Location: Venhuizen, Netherlands

Re: OTmonitor als daemon op Raspberry Pi

Postby hvxl » Thu Dec 04, 2014 12:51 pm

Wat er precies moet gebeuren is het volgende:
  1. OTmonitor ontvangt een BXXXXXXXX bericht. Dan stuurt hij een PR=A commando.
  2. 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
Schelte
hvxl
Senior Member
Senior Member
 
Posts: 1201
Joined: June 2010

Re: OTmonitor als daemon op Raspberry Pi

Postby yjb » Thu Dec 04, 2014 1:03 pm

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>
yjb
Member
Member
 
Posts: 187
Joined: April 2009
Location: Venhuizen, Netherlands

Re: OTmonitor als daemon op Raspberry Pi

Postby jeroen__online » Mon Jan 05, 2015 3:31 pm

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 :-)
jeroen__online
Starting Member
Starting Member
 
Posts: 4
Joined: January 2015

Next

Return to Opentherm Gateway Forum

Who is online

Users browsing this forum: hvxl and 1 guest