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
Weiter geht es dann im Zeiten teil….
09.02.15 um 11:43
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
10.02.15 um 10:52
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
11.07.15 um 21:00
Ich wäre ja durchaus interessiert an Teil zwei! 🙂
11.08.15 um 09:29
Hallo !!!
Ich finde das ist eine Super Idee.
Ich warte ungeduldig auf Teil_2
Danke
11.08.15 um 19:31
Hallo
Super Idee.
Wann kommt Teil_2 ?
12.08.15 um 07:56
Hallo, ja sorry ist fast fertig kam nur noch nicht zur Veröffentlichung dank Umzugstress.
01.10.15 um 11:58
[…] Raw code in pilight gui mit eigenen Protokoll […]