init.d Script zum Starten des pilight-daemons

Hier mein Skript zum Starten des pilight-daemon von pilight beim Systemstart.

Nachtrag vom 25. September 2013: CurlyMoo hat das Skript mittlerweile in die git repository integriert.

Zum anlegen einfach die Datei öffnen:

sudo nano /etc/init.d/pilight

und mit folgendem füllen:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#! /bin/sh
### BEGIN INIT INFO
# Provides:          pilight-daemon
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Starts pilight-daemon
# Description:       Starts pilight-daemon
#                  
### END INIT INFO

# Author: Foo Bar <foobar@baz.org>
#
# Please remove the "Author" lines above and replace them
# with your own name if you copy and modify this script.

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
NAME=pilight
DAEMON=/usr/local/sbin/pilight-daemon
#Should be the same as in: /etc/pilight/settings.json
PIDFILE=/var/run/pilight.pid
DAEMON_ARGS=
SCRIPTNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
# [ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
    # Return
    #   0 if daemon has been started
    #   1 if daemon was already running
    #   2 if daemon could not be started
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
        || return 1
    start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON $DAEMON_ARGS \
        || return 2
    # Add code here, if necessary, that waits for the process to be ready
    # to handle requests from services started subsequently which depend
    # on this one.  As a last resort, sleep for some time.
}

#
# Function that stops the daemon/service
#
do_stop()
{
    # Return
    #   0 if daemon has been stopped
    #   1 if daemon was already stopped
    #   2 if daemon could not be stopped
    #   other if a failure occurred
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE
    RETVAL="$?"
    # Many daemons don't delete their pidfiles when they exit.
    rm -f $PIDFILE
    return "$RETVAL"
}



case "$1" in
  start)
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
    do_start
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  stop)
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
    do_stop
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  status)
    status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
    ;;
  restart|force-reload)
    #
    # If the "reload" option is implemented then remove the
    # 'force-reload' alias
    #
    log_daemon_msg "Restarting "$NAME""
    do_stop
    case "$?" in
      0|1)
        do_start
        case "$?" in
            0) log_end_msg 0 ;;
            1) log_end_msg 1 ;; # Old process is still running
            *) log_end_msg 1 ;; # Failed to start
        esac
        ;;
      *)
        # Failed to stop
        log_end_msg 1
        ;;
    esac
    ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
    exit 3
    ;;
esac

:

Rechte korrigieren:

sudo chmod +x /etc/init.d/pilight
sudo chown root:root /etc/init.d/pilight

Und zum Schluss die Runlevel-Konfiguration aktualisieren:

sudo update-rc.d pilight defaults
 

21 Antworten

  1. Hey du hast echt super Tutorials hier in deinem Blog !
    Erst einmal vielen Dank!

    Die Steuerung der Funksteckdosen funktioniert super, aber der Autostartteil leider nicht.
    Ich habe alles was du oben schreibst befolgt, nur beim letzten Aufruf „sudo update-rc.d pilight defaults“ scheitert es. Ich bekomme die Meldung

    1
    sudo: update-rc.d pilight: command not found

    Kannst du mir helfen? Kenne mich überhaupt nicht aus bei Linux und weiß daher nicht was dieser Befehl überhaupt macht.

    Google konnte mir auch nicht helfen, daher frag ich einfach hier direkt.

    Danke und viele Grüße
    David

    • Hallo David,

      in der Anleitung gehe ich davon aus, dass die Raspbian Distribution benutzt wird. Wenn du Arch Linux oder etwas Anderes auf deinem Raspberry Pi laufen hast, dann ist der Befehl ein Anderer.

      Wenn du mehr über init.d-Skripte erfahren willst, empfehle ich dir die ubuntuusers.de wiki. Da ist alles für Debian Systeme, wie es Ubuntu und Raspbian sind, erklärt.

      Viele Grüße
      Oliver

      • Hallo Oliver,

        vielen Dank für deine schnelle Hilfe!

        Ich habe Raspian / Wheezy laufen. Ist das das gleiche System wie deins? Habe mir mal den Wikilink angeschaut, leider aber noch nicht ganz rauslesen können, was genau am Befehl geändert werden muss. Im Wiki steht ja selber auch der update-rc.d Befehl.

        Hmm wo genau liegt mein Fehler? Hoffe du kannst mir weiterhelfen.

        Vielen Dank und viele Grüße
        David

        • Hallo David,

          in der Tat sollte es mit Raspian funktionieren. Poste mal Deine Ausgabe von

          1
          whereis update-rc.d

          Wenn „update-rc.d“ existiert müsstest du folgendes angezeigt bekommen:

          1
          update-rc: /usr/sbin/update-rc.d

          Falls hier auch nichts gefunden wird, schau mal Deinen Pfad an:

          1
          echo $PATH

          Dort muss „/usr/sbin“ mit dabei stehen. Beispiel bei mir:

          1
          /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

          Viele Grüße
          Oliver

          • Hey Oliver,
            nach 5 weiteren Neustarts des Raspberry hat der Befehl plötzlich funktioniert. Allerdings wird der Daemon trotzdem nicht gestartet. Sehr komisch… Hab das jetzt über eine local Datei hinbekommen, also dort einfach den Befehl zum starten des Daemons eingetragen und alles läuft wunderbar!

            Webserver ist auch bereits aufgesetzt und die GUI für meine Steckdosen steht. Gefällt mir richtig gut! Nochmals vielen Dank für deine Anleitung!

            Bei mir laufen jetzt 3 Intertechnosteckdosen. Nun wollte ich noch 3 Elro hinzufügen. Habe das Fernbedienungssignal mit dem Receiver ausgelesn und bekam die ID 31 und Unit 1 aber wenn ich pilight benutzen will passiert nix.

            Der Befehl ist ja auch etwas anders als bei den Intertechno (Kaku_switch):

            Intertechno
            „pilight-send -p kaku_switch -i 10946633 -u 1 -t“

            Elro
            „pilight-send -p elro -s 31 -u 1 -t“

            Leider passiert überhaupt nix wenn ich den Befehl abfeuer.
            Auf der Rückseite der Elrosteckdose sind alle Zahlenschalter (1-5) und A ist oben der Rest unten.

            Hast du eine Idee?

            Viele Grüße David

          • Hi David,

            freut mich zu hören, dass es jetzt klappt. Leider kann ich Dir mit den Elro Steckdosen nicht helfen, da dich selbst keine besitze. Du kannst aber mal ins pilight forum schauen, ob dort vielleicht jemand ein ähnliches Problem hat.

            Viele Grüße
            Oliver

          • Du meintest „Allerdings wird der Daemon trotzdem nicht gestartet. Sehr komisch… Hab das jetzt über eine local Datei hinbekommen, also dort einfach den Befehl zum starten des Daemons eingetragen und alles läuft wunderbar!“
            Könntest Du die Vorgehensweise für einen Laien näher beschreiben?

            Danke & Viele Grüsse

  2. […] sweet pi – sweet home – init.d Script zum Starten des pilight-daemons […]

  3. Hallo,

    Ich habe deinen Ausführungen gefolgt und alles hat wunderbar funktioniert.
    Nun habe ich die entsprechende Hardware und alles noch mal durchgeführt.
    Bisher fehlten mir der Empfänger und die Kabel.
    Jetzt startet das Skript nach einem Neustart für kurze Zeit dann ist die Webseite wieder weg hast du eine Idee?

    Vielen Dank liebe Grüße Michael

  4. Vielen Dank für die tolle Anleitung – ich habe auch was gespendet!
    Ich habe alles wie beschrieben ausgeführt, einmal konnte ich die Steckdose ein- u. ausschalten. Jetzt bekomme ich nach jedem Befehl,wie „pilight-send -p kaku_switch -i 13228278 -u 2 -t“ die Meldung “ pilight-send: ERROR: no pilight ssdp connections found“. Der pilight daemon läuft „pilight-daemon: NOTICE: already active (pid 2154)“
    Kannst Du helfen? Danke im Voraus
    Walter

  5. Kann man Pilight auch auf dem banana Pi laufen lassen??

  6. Hey,

    ich versuche gerade dein Script anzupassen, sodass ich den daemon wie folgt starten kann: pi@raspberrypi ~ $ sudo pilight-daemon -S 192.168.178.46 -P 5000 -D

    (Hier der Link zu meinem Thread im pilight-Forum: http://forum.pilight.org/Thread-AdHoc-Defining-MainDaemon?pid=15053#pid15053)

    Wenn ich die Argumente for -S und -P bei DAEMON_ARGS eintrage, werden sie an start-stop-daemon weitergegeben, aber nicht an den pilight-daemon. Wie kann ich das ändern?

    Danke und Gruß,
    tobid

  7. Hallo!
    Nach jedem Neustart bekomme ich die Meldung beim Schalten einer Funksteckdose „could not send request to pilight-daemon“. Wenn ich dann aber ins Terminal „sudo pilight-daemon“ schreibe, funktionierts wieder.
    Ich habe diese Anleitung schon probiert aber ich habe trotzdem das gleiche Problem.

    lg

  8. Hallo :)

    vielen Dank erstmal für das Tutorial (so viel Zeit muss sein)

    nachdem beim kompilieren immer die nicht vorhandene libpcap angemeckert wurde, habe ich folgendes nachinstalliert :

    sudo apt-get install libunwind-dev libunwind8 libpcap-dev libpcap0.8

    dann ging es

    die beschriebenen 2 Dateien in /etc/pilight/ wurden nicht generiert, dafür habe ich 2 andere Dateien :
    config.json und
    tzdata.json

    ???

    pilight-receive reagiert nicht egal wie nah und aus welcher Richtung ich mit den Original-Remotes rumfummle

    habe intertechno-plugs und hab dann mal pilight-send -p intertechno_switch -i 1 -u 1 -t eingegeben
    an meinem Telldus-Duo kann ich sehen, dass etwas gesendet wird, allerdings stimmt die id natürlich nicht !?!

    ohne pilight-receive bin ich natürlich aufgeschmissen.

    wäre dankbar für hilfreiche Antwort

    Isaak

  9. Hallo nochmal

    der Fehler saß vorm Gerät :)

    musste nur intertechno_old benutzen und nun geht es …. HURRA

    danke nochmal :)

  10. thanks for this countless revealing website, keep up the momentous work check out this casino offers

  11. For example, you may be transmitting a conventional demand for your doctor to get a copy of your medical files or which they be sent to your new physician. Instructions When transmitting a correspondence by email, it is more appropriate to send your correspondence to your physicians office address in the place of her residence address. For example, in case your physician was established to discover the cause of signs you were having that another physician disregarded or didn’t take seriously enough, express how grateful you are he did take it really. Express your assurance within your doctor’s abilities as well as as his bed side manner. End your letter by articulating your intention to keep to remain his patient, or in case you are relocating, your dreams that you will be luckily enough to locate a fresh physician as competent and caring as he.
    research case study template

  12. With MLA Model, it is necessary to make sure you have effectively outlined every one of the in-text citations, producing it simple for readers to find each ticket inside the Works Cited list. HINT 2. You may have a teacher who provides you with recommendations for crafting the thesis or dissertation that vary marginally from those in MLA Style. TIP 3. Reports that follow correct syntax are more more likely to get good marks from an instructor. To put it differently, ensure the subjects of one’s phrases are doing something in the phrase, rather than the themes having anything done for them. Don’t use slang or jargon within your paper, unless youare writing about a subject that requires such vocabulary. Stay away from producing total phrases, specially when you are explaining an impression. TIP 4. For most people, proofreading may be the least pleasurable activity for compiling a conventional paper. You may have one of the most persuasive debate your teacher has ever noticed, but unintentionally, enabling many grammatical and punctuation mistakes to appear in your document will make it difficult to consider your argument seriously. When possible, have a day or two off between proofreading periods. Remember that, while word processing application spell checkers are handy, they do not catch every problem, including „to,“ „too,“ and „two.“ TIP 5. Through the publishing phase or the proofreading period, you have to keep sufficient time to finish the document.
    essay writing service employment

Schreibe einen Kommentar

Home pilight init.d Script zum Starten des pilight-daemons
© sweet pi - sweet home
Top