MNH Gedankensprudel

nicht nur ein stilles Wasser

Raw code in pilight gui mit eigenen Protokoll

23.01.15 (Allgemein)

Pilight sieht es offensichtlich nicht vor Rawcode von unbekannten Protokollen in der GUI zuzulassen, jedenfalls  gibt es laut Docu keine config dafür.

Dafür aber eine Anleitung wie man seine eigenen Protokolle implementieren kann.

Als erstes mal die Umgebung

Mein Umfeld:

Ich arbeite in diesen Beispiel mit Raspbian unter den Benutzer pi. Als Entwiklungsmaschine dient mir mein Windows 8.1 PC mit Netbeans 8.0.2.

Nachtrag: Ich gehe hier im Tutorial von der manuellen Installation aus sprich über das Git Repository dies ist auch notwendig um an den Sourcecode zu kommen.  Je nach dem unter welchen Beutzer ihr arbeitet oder wohin ihr die Dateien clont können die Pfade anderst sein

Entwicklungsumgebung/Editor:

Ich benutze bereits für meine Webprojekte Netbeans dort habe ich einfach die C++ Plugins installiert und schon kann es losgehen.
Ihr könnt natürlich eure favorisierte IDE oder Editor (z.B. Notepad++) verwenden.

Dateizugriff:

Um schnell kompelieren zu können belasse ich die Dateien auf dem rasperry pi und Kompeliere gleich dort, so muss man sich nicht mit Einstellungen für die passende Plattform rumärgern. Dazu mounte ich per sftp mein home Verzeichnis auf meine Entwicklungsmaschine. Das geht in Linux mit „Bordmitteln“ für Windos nutze ich momentan „SFTP Net Mount Free“. Natürlich könnt ihr das git repositorry aber auch auf die entwicklungs Maschine clonen.

Auf geht´s

So jetzt haben wir also was zum Editieren und Zugriff auf die Dateien dann kann es ja jetzt losgehen.
Als erstes navigieren wir zum Verzeichnis libs\protocols und erstellen dort zwei Dateien mit unseren Protokollnamen einmal „Protokollnamen.h“ und „Protokollnamen.c“.
Bei mir sieht es folgender masen aus:

~/pilight/libs/protocols/bhc9938d.h
~/pilight/libs/protocols/bhc9938d.c
          Pfad           Datein. Endung

Diese sollten auch noch gefüllt werden das geschieht jetzt streng nach Beispiel:

#ifndef _PROTOCOL_BHC9938D_H_
#define _PROTOCOL_BHC9938D_H_
 
struct protocol_t *bhc9938d;
void bhc9938dInit(void);
 
#endif
#include "../../pilight.h"
#include "common.h"
#include "protocol.h"
#include "bhc9938d.h"
 
#ifndef MODULE
__attribute__((weak))
#endif

//BHC9938D bhc9938d
void bhc9938dInit(void) {
    protocol_register(&bhc9938d);
    protocol_set_id(bhc9938d, "bhc9938d");
    protocol_device_add(bhc9938d, "bhc9938d", "bhc9938d protocol");
    bhc9938d->devtype = RAW;
}
 
#ifdef MODULE
void compatibility(struct module_t *module) {
    module->name = "bhc9938d";
    module->version = "0.1";
    module->reqversion = "5.0";
    module->reqcommit = NULL;
}
 
void init(void) {
    bhc9938dInit();
}
#endif

Dabei habe ich den Quellcode einfach aus den Beispiel übernommen und das Dummy Protokoll einfach gegen meinen eigenen Protokoll Namen sprich BHC9938D getauscht. Dabei immer schön auf Groß,- und Kleinschreibung achten und am besten den Formatierungsstiel beibehalten.
Damit das ganze mitcompeliert wird müssen wir noch zwei einträge machen:
Protokoll „definieren“ in CMakeConfig.txt:

set(PROTOCOL_BHC9938D ON CACHE BOOL "support for my own BHC9938D protocol")

Nun suchen wir in der Datei „CMakeLists.txt“ nach if(${PROTOCOL  bei mir ab Zeile 159 und fügen kurz davor unseren eigen Absatz ein um die Source Files bekannt zu machen:

if(${PROTOCOL_BHC9938D} MATCHES "OFF")
    list(REMOVE_ITEM pilight_headers "${PROJECT_SOURCE_DIR}/libs/protocols/bhc9938d.h")
    list(REMOVE_ITEM pilight "${PROJECT_SOURCE_DIR}/libs/protocols/bhc9938d.c")
endif()

Nach diesen beiden schritten kann das Protokoll zur Instillation ausgewählt werden

Probieren geht über studieren

Nun sind wir bereit das ganze zu testen.
Im folgenden gehe ich aus das ihr piligt schon mal erfolgreich installiert/compiliert habt wenn nicht könnt ihr gleich zum Punkt Erstellen wechseln.

Sicherheit geht vor

Als erstes fertigen wir ein Backup von /etc/piligh insbesondere unsere config.json wenn dort schon Geräte für die Weboberfläche eingetragen sind.

Reinemachen

Zuerst mal mit sudo service pilight stop den Service beenden. Danach sauber deinstallieren.
Ein ./setup.sh help bringt uns folgende Hilfe zu tage:

Usage: ./setup.sh [options]
         clean          remove all cmake and make generated files
         install        install pilight
         uninstall      uninstall pilight

also erstmal mit sudo ./setup.sh uninstall deinstallieren und danach mit sudo ./setup.sh clean saubermachen

Erstellen

nun einfach sudo ./setup.sh ausführen un ihr soltet folgende bild erhalten

Installation von pilight

Installation von pilight

Weiter geht es dann im Zeiten teil….

Carschrotter
ist leidenschaftlicher Technik Fan beigester von allen was mit dem Web zu tuen hat und Vollblut Nerd. Deshalb war auch sein Ausbildung zum Fachinformatiker ein logischer schritt.

7 Kommentare

  • 1
    Walter:

    Hallo zusammen,

    Ich bin Anfänger in Sachen pilight und suche nun verzweifelt nach dem Verzeichnis /libs/protocols.
    Wie kann ich das per Putty und Konsole finden?

    Vielen Dank,
    Walter

  • 2
    Carschrotter:

    Hallo,
    das kommt ganz darauf an wo sie die Dateien von pilight gespeichert haben, bzw ob sie pilight als Repository oder z.B. als deb installiert haben.
    Ich gehe hier im Tutorial von der manuellen Installation aus sprich über das Git Repository dies ist auch notwendig um an den source code zu kommen.
    Ich habe alle Befehle aus meinen home Verzeichnis aus ausgeführt deshalb ist der Pfad bei mir /home/pi/pilight/libs/protocols sollten sie die Anleitung mit sudo su befolgen natürlich /root/pilight/libs/protocols usw.
    Dabei ist pilight der Ordner der von git erstellt wird und alle Dateien beinhaltet.
    Ich hoffe ich konnte ihnen damit weiterhelfen.
    Mfg carschrotter

  • 3
    Me:

    Ich wäre ja durchaus interessiert an Teil zwei! 🙂

  • 4
    Hansi:

    Hallo !!!

    Ich finde das ist eine Super Idee.

    Ich warte ungeduldig auf Teil_2

    Danke

  • 5
    Hansi:

    Hallo

    Super Idee.

    Wann kommt Teil_2 ?

  • 6
    Carschrotter:

    Hallo, ja sorry ist fast fertig kam nur noch nicht zur Veröffentlichung dank Umzugstress.

  • 7
    Raw code in pilight gui mit eigenen Protokoll 2 /// MNH Gedankensprudel:

    […] Raw code in pilight gui mit eigenen Protokoll […]

Kommentar schreiben

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.

XHTML: Sie können diese Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre prompt="" escaped="">