From 3798e63a45538ab7c0b0d3bd0fda324a98cf22a3 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Sun, 10 Jun 2018 19:48:23 +0000 Subject: [PATCH] [NF] Refactoring Hue-Bot [NF] Now Running as Service --- Hue-Bot.sln | 14 +- Hue-Bot/Hue-Bot.csproj | 57 ++++---- Hue-Bot/Interfaces/AModul.cs | 72 ---------- Hue-Bot/License.txt | 108 +++++++++++++++ Hue-Bot/Moduls/Mqtt.cs | 129 ++++++------------ Hue-Bot/Program.cs | 78 ++--------- Hue-Bot/Properties/AssemblyInfo.cs | 11 +- Hue-Bot/Properties/Resources.Designer.cs | 4 +- Hue-Bot/bin/Release/Bot-Utils.dll | Bin 0 -> 20480 bytes Hue-Bot/bin/Release/ConnectorDataMqtt.dll | Bin 6656 -> 6144 bytes Hue-Bot/bin/Release/Hue-Bot.exe | Bin 460800 -> 454656 bytes Hue-Bot/bin/Release/Hue.dll | Bin 53248 -> 53248 bytes Hue-Bot/bin/Release/Iot-Interfaces.dll | Bin 0 -> 6144 bytes Hue-Bot/bin/Release/M2Mqtt.dll | Bin 50176 -> 50688 bytes Hue-Bot/bin/Release/Mono.Posix.dll | Bin 0 -> 211968 bytes Hue-Bot/bin/Release/Utils-IoT.dll | Bin 14848 -> 13824 bytes Hue-Bot/bin/Release/Utils.dll | Bin 25088 -> 29184 bytes .../Release/config-example/mqtt.conf.example | 6 + .../config-example/settings.conf.example | 6 + Hue-Bot/bin/Release/control/control.sh | 92 ------------- Hue-Bot/bin/Release/control/join.sh | 10 -- Hue-Bot/bin/Release/control/loop.sh | 21 --- Hue-Bot/bin/Release/control/restart.sh | 28 ---- Hue-Bot/bin/Release/control/settings.cfg | 23 ---- Hue-Bot/bin/Release/control/start.sh | 14 -- Hue-Bot/bin/Release/control/stop.sh | 29 ---- Hue-Bot/bin/Release/control/stuff.sh | 10 -- Hue-Bot/bin/Release/control/view.sh | 3 - Hue-Bot/bin/Release/litjson.dll | Bin 50688 -> 50688 bytes Hue-Bot/config-example/mqtt.conf.example | 6 + Hue-Bot/config-example/settings.conf.example | 6 + Hue-Bot/control/control.sh | 92 ------------- Hue-Bot/control/join.sh | 10 -- Hue-Bot/control/loop.sh | 21 --- Hue-Bot/control/restart.sh | 28 ---- Hue-Bot/control/settings.cfg | 23 ---- Hue-Bot/control/start.sh | 14 -- Hue-Bot/control/stop.sh | 29 ---- Hue-Bot/control/stuff.sh | 10 -- Hue-Bot/control/view.sh | 3 - Hue-Bot/dpkg/control | 10 ++ Hue-Bot/dpkg/create-Builds.bat | 3 + Hue-Bot/dpkg/huebot-logrotate | 10 ++ Hue-Bot/dpkg/huebot.service | 20 +++ Hue-Bot/dpkg/make-deb.sh | 49 +++++++ Hue-Bot/dpkg/make-exe.nsi | 94 +++++++++++++ Hue-Bot/dpkg/make-exe.sh | 14 ++ Hue-Bot/dpkg/postinst | 7 + Hue-Bot/dpkg/preinst | 6 + Hue-Bot/dpkg/prerm | 3 + Hue-Bot/lib/Events.cs | 72 ---------- Hue-Bot/lib/Helper.cs | 79 ----------- 52 files changed, 448 insertions(+), 876 deletions(-) delete mode 100644 Hue-Bot/Interfaces/AModul.cs create mode 100644 Hue-Bot/License.txt create mode 100644 Hue-Bot/bin/Release/Bot-Utils.dll create mode 100644 Hue-Bot/bin/Release/Iot-Interfaces.dll create mode 100644 Hue-Bot/bin/Release/Mono.Posix.dll create mode 100644 Hue-Bot/bin/Release/config-example/mqtt.conf.example create mode 100644 Hue-Bot/bin/Release/config-example/settings.conf.example delete mode 100755 Hue-Bot/bin/Release/control/control.sh delete mode 100755 Hue-Bot/bin/Release/control/join.sh delete mode 100755 Hue-Bot/bin/Release/control/loop.sh delete mode 100755 Hue-Bot/bin/Release/control/restart.sh delete mode 100644 Hue-Bot/bin/Release/control/settings.cfg delete mode 100755 Hue-Bot/bin/Release/control/start.sh delete mode 100755 Hue-Bot/bin/Release/control/stop.sh delete mode 100755 Hue-Bot/bin/Release/control/stuff.sh delete mode 100755 Hue-Bot/bin/Release/control/view.sh create mode 100644 Hue-Bot/config-example/mqtt.conf.example create mode 100644 Hue-Bot/config-example/settings.conf.example delete mode 100644 Hue-Bot/control/control.sh delete mode 100644 Hue-Bot/control/join.sh delete mode 100644 Hue-Bot/control/loop.sh delete mode 100644 Hue-Bot/control/restart.sh delete mode 100644 Hue-Bot/control/settings.cfg delete mode 100644 Hue-Bot/control/start.sh delete mode 100644 Hue-Bot/control/stop.sh delete mode 100644 Hue-Bot/control/stuff.sh delete mode 100644 Hue-Bot/control/view.sh create mode 100644 Hue-Bot/dpkg/control create mode 100644 Hue-Bot/dpkg/create-Builds.bat create mode 100644 Hue-Bot/dpkg/huebot-logrotate create mode 100644 Hue-Bot/dpkg/huebot.service create mode 100644 Hue-Bot/dpkg/make-deb.sh create mode 100644 Hue-Bot/dpkg/make-exe.nsi create mode 100644 Hue-Bot/dpkg/make-exe.sh create mode 100644 Hue-Bot/dpkg/postinst create mode 100644 Hue-Bot/dpkg/preinst create mode 100644 Hue-Bot/dpkg/prerm delete mode 100644 Hue-Bot/lib/Events.cs delete mode 100644 Hue-Bot/lib/Helper.cs diff --git a/Hue-Bot.sln b/Hue-Bot.sln index d4b7856..84a0083 100644 --- a/Hue-Bot.sln +++ b/Hue-Bot.sln @@ -15,7 +15,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConnectorDataMqtt", "..\Uti EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Utils-IoT", "..\Utils\IoT\Utils-IoT.csproj", "{B870E4D5-6806-4A0B-B233-8907EEDC5AFC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "M2Mqtt", "..\Librarys\mqtt\M2Mqtt\M2Mqtt.csproj", "{A11AEF5A-B246-4FE8-8330-06DB73CC8074}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "M2Mqtt_4.7.1", "..\Librarys\mqtt\M2Mqtt\M2Mqtt_4.7.1.csproj", "{A11AEF5A-B246-4FE8-8330-06DB73CC8074}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bot-Utils", "..\Utils\Bot-Utils\Bot-Utils.csproj", "{BB7BFCB5-3DB0-49E1-802A-3CE3EECC59F9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Iot-Interfaces", "..\Utils\IoT\Interfaces\Iot-Interfaces.csproj", "{4DAADA29-C600-4CF3-8AD3-9C97C8D7F632}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -51,6 +55,14 @@ Global {A11AEF5A-B246-4FE8-8330-06DB73CC8074}.Debug|Any CPU.Build.0 = Debug|Any CPU {A11AEF5A-B246-4FE8-8330-06DB73CC8074}.Release|Any CPU.ActiveCfg = Release|Any CPU {A11AEF5A-B246-4FE8-8330-06DB73CC8074}.Release|Any CPU.Build.0 = Release|Any CPU + {BB7BFCB5-3DB0-49E1-802A-3CE3EECC59F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BB7BFCB5-3DB0-49E1-802A-3CE3EECC59F9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BB7BFCB5-3DB0-49E1-802A-3CE3EECC59F9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BB7BFCB5-3DB0-49E1-802A-3CE3EECC59F9}.Release|Any CPU.Build.0 = Release|Any CPU + {4DAADA29-C600-4CF3-8AD3-9C97C8D7F632}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4DAADA29-C600-4CF3-8AD3-9C97C8D7F632}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4DAADA29-C600-4CF3-8AD3-9C97C8D7F632}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4DAADA29-C600-4CF3-8AD3-9C97C8D7F632}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Hue-Bot/Hue-Bot.csproj b/Hue-Bot/Hue-Bot.csproj index bd81970..95ac8c7 100644 --- a/Hue-Bot/Hue-Bot.csproj +++ b/Hue-Bot/Hue-Bot.csproj @@ -6,7 +6,7 @@ AnyCPU {4C2F9593-4CF6-47DC-85D3-2D098C404C70} Exe - BlubbFish.IoT.Bot.HueBot + BlubbFish.IoT.Bots.HueBot Hue-Bot v4.7.1 512 @@ -62,9 +62,6 @@ - - - @@ -81,33 +78,22 @@ - - Always + + PreserveNewest - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always + + PreserveNewest + + + + + + + + + + @@ -119,10 +105,18 @@ {91a14cd2-2940-4500-8193-56d37edddbaa} litjson_4.7.1 + + {bb7bfcb5-3db0-49e1-802a-3ce3eecc59f9} + Bot-Utils + {ee6c8f68-ed46-4c1c-abdd-cfcdf75104f2} ConnectorDataMqtt + + {4daada29-c600-4cf3-8ad3-9c97c8d7f632} + Iot-Interfaces + {b870e4d5-6806-4a0b-b233-8907eedc5afc} Utils-IoT @@ -144,5 +138,10 @@ false + + + + + \ No newline at end of file diff --git a/Hue-Bot/Interfaces/AModul.cs b/Hue-Bot/Interfaces/AModul.cs deleted file mode 100644 index dc1be07..0000000 --- a/Hue-Bot/Interfaces/AModul.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using System.Collections.Generic; -using BlubbFish.IoT.Bot.HueBot.lib; -using BlubbFish.IoT.Hue; -using BlubbFish.Utils; - -namespace BlubbFish.IoT.Bot.HueBot.Interfaces { - abstract class AModul { - protected HueController hue; - private InIReader settings; - protected Dictionary> config = new Dictionary>(); - - public Boolean HasConfig { get; private set; } - public Boolean ConfigPublic { get; private set; } - - public delegate void ModulEvent(Object sender, ModulEventArgs e); - public abstract event ModulEvent Update; - - public AModul(HueController huec, InIReader settings) { - this.HasConfig = false; - this.ConfigPublic = false; - this.hue = huec; - this.settings = settings; - this.ParseConfig(); - } - - private void ParseConfig() { - if (this.settings != null) { - this.HasConfig = true; - foreach (String item in this.settings.GetSections(false)) { - this.config.Add(item, this.settings.GetSection(item)); - } - if (this.config.ContainsKey("modul")) { - this.ConfigPublic = this.config["modul"].ContainsKey("config") && this.config["modul"]["config"].ToLower() == "public"; - } - } - } - - public Dictionary> GetConfig() { - if (this.HasConfig && this.ConfigPublic) { - Dictionary> ret = new Dictionary>(this.config); - if (ret.ContainsKey("modul")) { - ret.Remove("modul"); - } - return ret; - } - return new Dictionary>(); - } - - public virtual void Interconnect(Dictionary moduls) { } - - public virtual void SetInterconnection(String param, Action hook, Object data) { } - - public abstract void Dispose(); - - internal void SetConfig(Dictionary> newconf) { - if (this.HasConfig && this.ConfigPublic) { - if (newconf.ContainsKey("modul")) { - newconf.Remove("modul"); - } - if (this.config.ContainsKey("modul")) { - newconf.Add("modul", this.config["modul"]); - } - this.config = newconf; - this.settings.SetSections(this.config); - this.UpdateConfig(); - } - } - - protected abstract void UpdateConfig(); - } -} diff --git a/Hue-Bot/License.txt b/Hue-Bot/License.txt new file mode 100644 index 0000000..6acc673 --- /dev/null +++ b/Hue-Bot/License.txt @@ -0,0 +1,108 @@ +Namensnennung-Nicht kommerziell-Share Alike 4.0 International + +Die Creative Commons Corporation (“Creative Commons”) ist keine Rechtsanwaltskanzlei und bietet weder Rechtsdienstleistungen noch Rechtsberatung. Die Verbreitung von Creative Commons Public Licenses führt zu keinem Mandatsverhältnis und keiner sonstigen Rechtsbeziehung. Creative Commons macht seine Lizenzen und die dazugehörigen Informationen so zugänglich, wie sie sind. Creative Commons übernimmt keinerlei Gewährleistung hinsichtlich seiner Lizenzen, jedweder unter deren Bedingungen lizenzierter Materialien oder darauf bezogener Informationen. Creative Commons schließt jegliche Haftung für Schäden, die aus ihrer Verwendung resultieren, so weit wie möglich aus. + +Verwendung der Creative Commons Public Licenses + +Creative Commons Public Licenses sind standardisierte Zusammenstellungen rechtlicher Bedingungen, die Urheber und andere Rechteinhaber verwenden können, um ihre selbst geschaffenen Werke und andere Materialien, die urheberrechtlich oder durch bestimmte andere Rechte geschützt sind, die unten in der Public License genauer benannt werden, zur Nutzung freizugeben. Die folgenden Überlegungen haben lediglich informativen Charakter, sind keineswegs vollständig und nicht Teil unserer Lizenzen. + +Überlegungen für Lizenzgeber: Unsere Public Licenses sind zur Verwendung durch diejenigen gedacht, die rechtlich befugt sind, der Allgemeinheit solche Nutzungen von Material zu erlauben, die sonst durch das Urheberrecht oder bestimmte andere Rechte untersagt wären. Unsere Lizenzen sind unwiderruflich. Lizenzgeber sollten die Bedingungen der Lizenz, die sie auswählen, lesen und verstehen, bevor sie die Lizenz verwenden. Lizenzgeber sollten zudem alle erforderlichen Rechte einholen, die für die Verwendung unserer Lizenzen notwendig sind, damit die Allgemeinheit das lizenzierte Material wie erwartet nutzen kann. Lizenzgeber sollten jegliches Material, für welches die Lizenz nicht gilt, klar kenntlich machen. Das gilt auch für anderes CC-lizenziertes Material und für Material, das gemäß einer urheberrechtlichen Beschränkung oder Ausnahme genutzt wird. Weitere Überlegungen für Lizenzgeber finden Sie im Creative Commons Wiki (in Englisch). +Überlegungen für die Allgemeinheit: Durch die Verwendung einer unserer Public Licenses gibt ein Lizenzgeber der Allgemeinheit die Erlaubnis, das lizenzierte Material unter bestimmten Bedingungen zu nutzen. Falls die Erlaubnis des Lizenzgebers aus irgendwelchen Gründen gar nicht erforderlich ist – beispielsweise wegen einer urheberrechtlichen Ausnahme oder Beschränkung – dann wird die entsprechende Nutzung auch nicht durch die Lizenz geregelt. Die Erlaubnisse in unseren Lizenzen beziehen sich nur auf das Urheberrecht und bestimmte andere Rechte, hinsichtlich derer der Lizenzgeber Erlaubnisse geben kann. Die Nutzung des lizenzierten Materials kann aber dennoch aus anderen Gründen untersagt sein, etwa weil Dritte Urheber- oder andere Rechte am Material haben. Ein Lizenzgeber kann auch besondere Wünsche haben, etwa indem er dazu auffordert, alle Veränderungen zu kennzeichnen oder zu beschreiben. Obwohl dies dann nicht verpflichtend im Sinne unserer Lizenzen ist, sollten Sie sich bemühen, derlei Wünschen nach Möglichkeit nachzukommen. Weitere Überlegungen für die Allgemeinheit finden Sie im Creative Commons Wiki (in Englisch). +Creative Commons Namensnennung-Nicht kommerziell-Share Alike 4.0 International Public License +Durch die Ausübung der lizenzierten Rechte (wie unten definiert) erklären Sie sich rechtsverbindlich mit den Bedingungen dieser Creative Commons Namensnennung – Nicht kommerziell – Share Alike 4.0 International Public License (“Public License”) einverstanden. Soweit die vorliegende Public License als Lizenzvertrag anzusehen ist, gewährt Ihnen der Lizenzgeber die in der Public License genannten lizenzierten Rechte im Gegenzug dafür, dass Sie die Lizenzbedingungen akzeptieren, und gewährt Ihnen die entsprechenden Rechte in Hinblick auf Vorteile, die der Lizenzgeber durch das Verfügbarmachen des lizenzierten Materials unter diesen Bedingungen hat. + +Abschnitt 1 – Definitionen + +Abgewandeltes Material bezeichnet Material, welches durch Urheberrechte oder ähnliche Rechte geschützt ist und vom lizenzierten Material abgeleitet ist oder darauf aufbaut und in welchem das lizenzierte Material übersetzt, verändert, umarrangiert, umgestaltet oder anderweitig modifiziert in einer Weise enthalten ist, die aufgrund des Urheberrechts oder ähnlicher Rechte des Lizenzgebers eine Zustimmung erfordert. Im Sinne der vorliegenden Public License entsteht immer abgewandeltes Material, wenn das lizenzierte Material ein Musikwerk, eine Darbietung oder eine Tonaufnahme ist und zur Vertonung von Bewegtbildern verwendet wird. +Abwandlungslizenz bezeichnet die Lizenz, die Sie in Bezug auf Ihr Urheberrecht oder ähnliche Rechte an Ihren Beiträgen zum abgewandelten Material in Übereinstimmng mit den Bedingungen der vorliegenden Public License erteilen. +BY-NC-SA-kompatible Lizenz bezeichnet eine unter creativecommons.org/compatiblelicenses genannte Lizenz, die Creative Commons als der vorliegenden Public License im Wesentlichen gleichwertig anerkannt hat. +Urheberrecht und ähnliche Rechte bezeichnet das Urheberrecht und/oder ähnliche, dem Urheberrecht eng verwandte Rechte, einschließlich insbesondere des Rechts des ausübenden Künstlers, des Rechts zur Sendung, zur Tonaufnahme und des Sui-generis-Datenbankrechts, unabhängig davon, wie diese Rechte genannt oder kategorisiert werden. Im Sinne der vorliegenden Public License werden die in Abschnitt 2(b)(1)-(2) aufgeführten Rechte nicht als Urheberrecht und ähnliche Rechte angesehen. +Wirksame technische Schutzmaßnahmen bezeichnet solche Maßnahmen, die gemäß gesetzlichen Regelungen auf der Basis des Artikels 11 des WIPO Copyright Treaty vom 20. Dezember 1996 und/oder ähnlicher internationaler Vereinbarungen ohne entsprechende Erlaubnis nicht umgangen werden dürfen. +Ausnahmen und Beschränkungen bezeichnet Fair Use, Fair Dealing und/oder jegliche andere Ausnahme oder Beschränkung des Urheberrechts oder ähnlicher Rechte, die auf Ihre Nutzung des lizenzierten Materials Anwendung findet. +Lizenzelemente bezeichnet die Lizenzeigenschaften, die in der Bezeichnung einer Creative Commons Public License aufgeführt werden. Die Lizenzelemente der vorliegenden Public License sind Namensnennung, Nicht kommerziell und Share Alike. +Lizenziertes Material bezeichnet das Werk der Literatur oder Kunst, die Datenbank oder das sonstige Material, welches der Lizenzgeber unter die vorliegende Public License gestellt hat. +Lizenzierte Rechte bezeichnet die Ihnen unter den Bedingungen der vorliegenden Public License gewährten Rechte, welche auf solche Urheberrechte und ähnlichen Rechte beschränkt sind, die Ihre Nutzung des lizenzierten Materials betreffen und die der Lizenzgeber zu lizenzieren berechtigt ist. +Lizenzgeber bezeichnet die natürliche(n) oder juristische(n) Person(en), die unter der vorliegenden Public License Rechte gewährt (oder gewähren). +Nicht kommerziell meint nicht vorrangig auf einen geschäftlichen Vorteil oder eine geldwerte Vergütung gerichtet. Der Austausch von lizenziertem Material gegen anderes unter Urheberrecht oder ähnlichen Rechten geschütztes Material durch digitales File-Sharing oder ähnliche Mittel ist nicht kommerziell im Sinne der vorliegenden Public License, sofern in Verbindung damit keine geldwerte Vergütung erfolgt. +Weitergabe meint, Material der Öffentlichkeit bereitzustellen durch beliebige Mittel oder Verfahren, die gemäß der lizenzierten Rechte Zustimmung erfordern, wie zum Beispiel Vervielfältigung, öffentliche Vorführung, öffentliche Darbietung, Vertrieb, Verbreitung, Wiedergabe oder Übernahme und öffentliche Zugänglichmachung bzw. Verfügbarmachung in solcher Weise, dass Mitglieder der Öffentlichkeit auf das Material von Orten und zu Zeiten ihrer Wahl zugreifen können. +Sui-generis Datenbankrechte bezeichnet Rechte, die keine Urheberrechte sind, sondern gegründet sind auf die Richtlinie 96/9/EG des Europäischen Parlaments und des Rates vom 11. März 1996 über den rechtlichen Schutz von Datenbanken in der jeweils gültigen Fassung bzw. deren Nachfolgeregelungen, sowie andere im Wesentlichen funktionsgleiche Rechte anderswo auf der Welt. +Sie bezeichnet die natürliche oder juristische Person, die von lizenzierten Rechten unter der vorliegenden Public License Gebrauch macht. Ihr bzw. Ihre hat die entsprechende Bedeutung. +Abschnitt 2 – Umfang + +Lizenzgewährung +Unter den Bedingungen der vorliegenden Public License gewährt der Lizenzgeber Ihnen eine weltweite, vergütungsfreie, nicht unterlizenzierbare, nicht-ausschließliche, unwiderrufliche Lizenz zur Ausübung der lizenzierten Rechte am lizenzierten Material, um: +das lizenzierte Material ganz oder in Teilen zu vervielfältigen und weiterzugeben, jedoch nur für nicht kommerzielle Zwecke; und +abgewandeltes Material zu erstellen, zu vervielfältigen und weiterzugeben, jedoch nur für nicht kommerzielle Zwecke. +Ausnahmen und Beschränkungen. Es sei klargestellt, dass, wo immer gesetzliche Ausnahmen und Beschränkungen auf Ihre Nutzung Anwendung finden, die vorliegende Public License nicht anwendbar ist und Sie insoweit ihre Bedingungen nicht einhalten müssen. +Laufzeit. Die Laufzeit der vorliegenden Public License wird in Abschnitt 6(a) geregelt. +Medien und Formate; Gestattung technischer Modifikationen. Der Lizenzgeber erlaubt Ihnen, die lizenzierten Rechte in allen bekannten und zukünftig entstehenden Medien und Formaten auszuüben und die dafür notwendigen technischen Modifikationen vorzunehmen. Der Lizenzgeber verzichtet auf jegliche und/oder versichert die Nichtausübung jeglicher Rechte und Befugnisse, Ihnen zu verbieten, technische Modifikationen vorzunehmen, die notwendig sind, um die lizenzierten Rechte ausüben zu können, einschließlich solcher, die zur Umgehung wirksamer technischer Schutzmaßnahmen erforderlich sind. Im Sinne der vorliegenden Public License entsteht kein abgewandeltes Material, soweit lediglich Modifikationen vorgenommen werden, die nach diesem Abschnitt 2(a)(4) zulässig sind. +Nachfolgende Empfänger +Angebot des Lizenzgebers – Lizenziertes Material. Jeder Empfänger des lizenzierten Materials erhält automatisch ein Angebot des Lizenzgebers, die lizenzierten Rechte unter den Bedingungen der vorliegenden Public License auzuüben. +Zusätzliches Angebot des Lizenzgebers – Abgewandeltes Material. Jeder, der abgewandeltes Material von Ihnen erhält, erhält automatisch vom Lizenzgeber ein Angebot, die lizenzierten Rechte am abgewandelten Material unter den Bedingungen der durch Sie vergebenen Abwandlungslizenz auszuüben. +Keine Beschränkungen für nachfolgende Empfänger. Sie dürfen keine zusätzlichen oder abweichenden Bedingungen fordern oder das lizenzierte Material mit solchen belegen oder darauf wirksame technische Maßnahmen anwenden, sofern dadurch die Ausübung der lizenzierten Rechte durch Empfänger des lizenzierten Materials eingeschränkt wird. +Inhaltliche Indifferenz. Die vorliegende Public License begründet nicht die Erlaubnis, zu behaupten oder den Eindruck zu erwecken, dass Sie oder Ihre Nutzung des lizenzierten Materials mit dem Lizenzgeber oder den Zuschreibungsempfängern gemäß Abschnitt 3(a)(1)(A)(i) in Verbindung stehen oder durch ihn gefördert, gutgeheißen oder offiziell anerkannt werden. +Sonstige Rechte + +Urheberpersönlichkeitsrechte, wie etwa zum Schutz vor Werkentstellungen, werden durch die vorliegende Public License ebenso wenig mitlizenziert wie das Recht auf Privatheit, auf Datenschutz und/oder ähnliche Persönlichkeitsrechte; gleichwohl verzichtet der Lizenzgeber auf derlei Rechte bzw. ihre Durchsetzung, soweit dies für Ihre Ausübung der lizenzierten Rechte erforderlich und möglich ist, jedoch nicht darüber hinaus. +Patent- und Kennzeichenrechte werden durch die vorliegende Public License nicht lizenziert. +Soweit wie möglich verzichtet der Lizenzgeber auf Vergütung durch Sie für die Ausübung der lizenzierten Rechte, sowohl direkt als auch durch eine Verwertungsgesellschaft unter welchem freiwilligen oder abdingbaren gesetzlichen oder Pflichtlizenzmechanismus auch immer eingezogen. In allen übrigen Fällen behält sich der Lizenzgeber ausdrücklich jedes Recht vor, Vergütungen zu fordern, einschließlich für Nutzungen des lizenzierten Materials für andere als nicht kommerzielle Zwecke. +Abschnitt 3 – Lizenzbedingungen + +Ihre Ausübung der lizenzierten Rechte unterliegt ausdrücklich folgenden Bedingungen. + +Namensnennung + +Wenn Sie das lizenzierte Material weitergeben (auch in veränderter Form), müssen Sie: + +die folgenden Angaben beibehalten, soweit sie vom Lizenzgeber dem lizenzierten Material beigefügt wurden: +die Bezeichnung der/des Ersteller(s) des lizenzierten Materials und anderer, die für eine Namensnennung vorgesehen sind (auch durch Pseudonym, falls angegeben), in jeder durch den Lizenzgeber verlangten Form, die angemessen ist; +einen Copyright-Vermerk; +einen Hinweis auf die vorliegende Public License; +einen Hinweis auf den Haftungsausschluss; +soweit vernünftigerweise praktikabel einen URI oder Hyperlink zum lizenzierten Material; +angeben, ob Sie das lizenzierte Material verändert haben, und alle vorherigen Änderungsangaben beibehalten; und +angeben, dass das lizenzierte Material unter der vorliegenden Public License steht, und deren Text oder URI oder einen Hyperlink darauf beifügen. +Sie dürfen die Bedingungen des Abschnitts 3(a)(1) in jeder angemessenen Form erfüllen, je nach Medium, Mittel und Kontext in bzw. mit dem Sie das lizenzierte Material weitergeben. Es kann zum Beispiel angemessen sein, die Bedingungen durch Angabe eines URI oder Hyperlinks auf eine Quelle zu erfüllen, die die erforderlichen Informationen enthält. +Falls der Lizenzgeber es verlangt, müssen Sie die gemäß Abschnitt 3(a)(1)(A) erforderlichen Informationen entfernen, soweit dies vernünftigerweise praktikabel ist. +Share Alike +Zusätzlich zu den Bedingungen in Abschnitt 3(a) gelten die folgenden Bedingungen, falls Sie abgewandeltes Material weitergeben, welches Sie selbst erstellt haben. + +Die Abwandlungslizenz, die Sie vergeben, muss eine Creative-Commons-Lizenz der vorliegenden oder einer späteren Version mit den gleichen Lizenzelementen oder eine BY-NC-SA-kompatible Lizenz sein. +Sie müssen den Text oder einen URI oder Hyperlink auf die von Ihnen gewählte Abwandlungslizenz beifügen. Diese Bedingung dürfen Sie in jeder angemessenen Form erfüllen, je nach Medium, Mittel und Kontext in bzw. mit dem Sie abgewandeltes Material weitergeben. +Sie dürfen keine zusätzlichen oder abweichenden Bedingungen anbieten oder das abgewandelte Material mit solchen belegen oder darauf wirksame technische Maßnahmen anwenden, sofern dadurch die Ausübung der Rechte am abgewandelten Material eingeschränkt wird, die Sie unter der Abwandlungslizenz gewähren. +Abschnitt 4 – Sui-generis-Datenbankrechte + +Soweit die lizenzierten Rechte Sui-generis-Datenbankrechte beinhalten, die auf Ihre Nutzung des lizenzierten Materials Anwendung finden, gilt: + +es sei klargestellt, dass Abschnitt 2(a)(1) Ihnen lediglich zu nicht kommerziellen Zwecken das Recht gewährt, die gesamten Inhalte der Datenbank oder wesentliche Teile davon zu entnehmen, weiterzuverwenden, zu vervielfältigen und weiterzugeben; +sofern Sie alle Inhalte der Datenbank oder wesentliche Teile davon in eine Datenbank aufnehmen, an der Sie Sui-generis-Datenbankrechte haben, dann gilt die Datenbank, an der Sie Sui-generis-Datenbankrechte haben (aber nicht ihre einzelnen Inhalte) als abgewandeltes Material, insbesondere in Bezug auf Abschnitt 3(b); und +Sie müssen die Bedingungen des Abschnitts 3(a) einhalten, wenn sie alle Datenbankinhalte oder wesentliche Teile davon weitergeben. +Es sei ferner klargestellt, dass dieser Abschnitt 4 Ihre Verpflichtungen aus der vorliegenden Public License nur ergänzt und nicht ersetzt, soweit die lizenzierten Rechte andere Urheberrechte oder ähnliche Rechte enthalten. +Abschnitt 5 – Gewährleistungsausschluss und Haftungsbeschränkung + +Sofern der Lizenzgeber nicht separat anderes erklärt und so weit wie möglich, bietet der Lizenzgeber das lizenzierte Material so wie es ist und verfügbar ist an und sagt in Bezug auf das lizenzierte Material keine bestimmten Eigenschaften zu, weder ausdrücklich noch konkludent oder anderweitig, und schließt jegliche Gewährleistung aus, einschließlich der gesetzlichen. Dies umfasst insbesondere das Freisein von Rechtsmängeln, Verkehrsfähigkeit, Eignung für einen bestimmten Zweck, Wahrung der Rechte Dritter, Freisein von (auch verdeckten) Sachmängeln, Richtigkeit und das Vorliegen oder Nichtvorliegen von Irrtümern, gleichviel ob sie bekannt, unbekannt oder erkennbar sind. Dort, wo Gewährleistungsausschlüsse ganz oder teilweise unzulässig sind, gilt der vorliegende Ausschluss möglicherweise für Sie nicht. +Soweit wie möglich, haftet der Lizenzgeber Ihnen gegenüber nach keinem rechtlichen Konstrukt (einschließlich insbesondere Fahrlässigkeit) oder anderweitig für irgendwelche direkten, speziellen, indirekten, zufälligen, Folge-, Straf- exemplarischen oder anderen Verluste, Kosten, Aufwendungen oder Schäden, die sich aus der vorliegenden Public License oder der Nutzung des lizenzierten Materials ergeben, selbst wenn der Lizenzgeber auf die Möglichkeit solcher Verluste, Kosten, Aufwendungen oder Schäden hingewiesen wurde. Dort, wo Haftungsbeschränkungen ganz oder teilweise unzulässig sind, gilt die vorliegende Beschränkung möglicherweise für Sie nicht. +Der Gewährleistungsausschluss und die Haftungsbeschränkung oben sollen so ausgelegt werden, dass sie soweit wie möglich einem absoluten Haftungs- und Gewährleistungsausschluss nahe kommen. +Abschnitt 6 – Laufzeit und Beendigung + +Die vorliegende Public License gilt bis zum Ablauf der Schutzfrist des Urheberrechts und der ähnlichen Rechte, die hiermit lizenziert werden. Gleichwohl erlöschen Ihre Rechte aus dieser Public License automatisch, wenn Sie die Bestimmungen dieser Public License nicht einhalten. +Soweit Ihr Recht, das lizenzierte Material zu nutzen, gemäß Abschnitt 6(a) erloschen ist, lebt es wieder auf: + +automatisch zu dem Zeitpunkt, an welchem die Verletzung abgestellt ist, sofern dies innerhalb von 30 Tagen seit Ihrer Kenntnis der Verletzung geschieht; oder +durch ausdrückliche Wiedereinsetzung durch den Lizenzgeber. +Es sei klargestellt, dass dieser Abschnitt 6(b) die Rechte des Lizenzgebers, Ausgleich für Ihre Verletzung der vorliegenden Public License zu verlangen, nicht einschränkt. +Es sei klargestellt, dass der Lizenzgeber das lizenzierte Material auch unter anderen Bedingungen anbieten oder den Vertrieb des lizenzierten Materials jederzeit einstellen darf; gleichwohl erlischt dadurch die vorliegende Public License nicht. +Die Abschnitte 1, 5, 6, 7 und 8 gelten auch nach Erlöschen der vorliegenden Public License fort. +Abschnitt 7 – Sonstige Bedingungen + +Der Lizenzgeber ist nicht an durch Sie gestellte zusätzliche oder abweichende Bedingungen gebunden, wenn diese nicht ausdrücklich vereinbart wurden. +Jedwede das lizenzierte Material betreffenden und hier nicht genannten Umstände, Annahmen oder Vereinbarungen sind getrennt und unabhängig von den Bedingungen der vorliegenden Public License. +Abschnitt 8 – Auslegung + +Es sei klargestellt, dass die vorliegende Public License weder besagen noch dahingehend ausgelegt werden soll, dass sie solche Nutzungen des lizenzierten Materials verringert, begrenzt, einschränkt oder mit Bedingungen belegt, die ohne eine Erlaubnis aus dieser Public License zulässig sind. +Soweit wie möglich soll, falls eine Klausel der vorliegenden Public License als nicht durchsetzbar anzusehen ist, diese Klausel automatisch im geringst erforderlichen Maße angepasst werden, um sie durchsetzbar zu machen. Falls die Klausel nicht anpassbar ist, soll sie von der vorliegenden Public License abgeschieden werden, ohne dass die Durchsetzbarkeit der verbleibenden Bedingungen tangiert wird. +Auf keine Bedingung der vorliegenden Public License wird verzichtet und kein Verstoß dagegen soll als hingenommen gelten, außer der Lizenzgeber hat sich damit ausdrücklich einverstanden erklärt. +Nichts in der vorliegenden Public License soll zu einer Beschränkung oder Aufhebung von Privilegien und Immunitäten führen, die dem Lizenzgeber oder Ihnen insbesondere aufgrund rechtlicher Regelungen irgendeiner Rechtsordnung oder Rechtsposition zustehen, oder dahingehend interpretiert werden. +Creative Commons ist keine Vertragspartei seiner Public Licenses. Dennoch kann Creative Commons sich dazu entscheiden, eine seiner Public Licenses für selbst publiziertes Material zu verwenden, und ist in diesen Fällen als „Lizenzgeber” zu betrachten. Der Text der Creative Commons Public Licenses selbst wird mittels der CC0 Verzichtserklärung der Gemeinfreiheit überantwortet. Abgesehen vom begrenzten Zweck, darauf hinzuweisen, dass Material unter einer Creative Commons Public License freigegeben ist, und falls es nicht anderweitig erlaubt wird durch die Creative-Commons-Policies, die unter creativecommons.org/policies veröffentlicht sind, erlaubt Creative Commons es nicht, dass die Marke “Creative Commons” oder eine andere Marke oder ein anderes Logo von Creative Commons ohne vorherige schriftliche Zustimmung genutzt werden, insbesondere in Verbindung mit nicht autorisierten Veränderungen seiner Public Licenses oder sonstigen Regelungen, Übereinkünften oder Vereinbarungen in Bezug auf die Nutzung lizenzierten Materials. Es sei klargestellt, dass dieser Absatz nicht Teil der Public Licenses ist. + +Creative Commons kann kontaktiert werden unter creativecommons.org. \ No newline at end of file diff --git a/Hue-Bot/Moduls/Mqtt.cs b/Hue-Bot/Moduls/Mqtt.cs index 00eac4d..12db3ae 100644 --- a/Hue-Bot/Moduls/Mqtt.cs +++ b/Hue-Bot/Moduls/Mqtt.cs @@ -1,52 +1,64 @@ using System; -using System.Collections.Generic; using System.Text.RegularExpressions; -using BlubbFish.IoT.Bot.HueBot.Interfaces; -using BlubbFish.IoT.Bot.HueBot.lib; using BlubbFish.IoT.Hue; using BlubbFish.IoT.Hue.Events; using BlubbFish.IoT.Hue.Interfaces; using BlubbFish.Utils; +using BlubbFish.Utils.IoT.Bots; +using BlubbFish.Utils.IoT.Bots.Events; +using BlubbFish.Utils.IoT.Bots.Moduls; using BlubbFish.Utils.IoT.Connector; +using BlubbFish.Utils.IoT.Events; using LitJson; -namespace BlubbFish.IoT.Bot.HueBot.Moduls { - class Mqtt : AModul, IDisposable { - private ADataBackend mqtt; - private Dictionary modules; - +namespace BlubbFish.IoT.Bots.HueBot.Moduls { + class Mqtt : Mqtt { public override event ModulEvent Update; - public Mqtt(HueController hue, InIReader settings) : base(hue, settings) { - if (this.config.ContainsKey("settings")) { - this.mqtt = ADataBackend.GetInstance(this.config["settings"]); - this.mqtt.MessageIncomming += this.Mqtt_MessageIncomming; - this.hue.Update += this.ZwayEvent; - } + public Mqtt(HueController hue, InIReader settings) : base(hue, settings) { } + + #region Mqtt + protected override void Connect() { + this.mqtt = ABackend.GetInstance(this.config["settings"], ABackend.BackendType.Data); + this.mqtt.MessageIncomming += this.EventInput; + this.library.Update += this.EventOutput; } - private void ZwayEvent(Object sender, AllUpdateEvent e) { + protected override void Disconnect() { + if (this.mqtt != null) { + this.mqtt.MessageIncomming -= this.EventInput; + } + this.library.Update -= this.EventOutput; + if (this.mqtt != null) { + this.mqtt.Dispose(); + } + this.mqtt = null; + } + #endregion + + #region Events + protected virtual void EventOutput(Object sender, AllUpdateEvent e) { String topic = ""; String data = ""; - if (e.Parent.GetType().HasInterface("IMqtt")) { + if (e.Parent.GetType().HasInterface(typeof(IMqtt))) { IMqtt sensor = (IMqtt)e.Parent; - topic = "/hue/" + sensor.MqttTopic(); + topic = "hue/" + sensor.MqttTopic(); data = sensor.ToJson(); } if (topic != "" && data != "") { - this.mqtt.Send(topic, data); + ((ADataBackend)this.mqtt).Send(topic, data); this.Update?.Invoke(this, new MqttEvent(topic, data)); } } - private void Mqtt_MessageIncomming(Object sender, MqttEventArgs e) { - if (e.Topic.StartsWith("/hue/") && (e.Topic.EndsWith("/set") || e.Topic.EndsWith("/get"))) { + private void EventInput(Object sender, BackendEvent e) { + if (e.From.ToString().StartsWith("hue/") && (e.From.ToString().EndsWith("/set") || e.From.ToString().EndsWith("/get"))) { //return "sensor/" + this.SensorId; (Int32) //return "scene/" + this.SceneId; (String) //return "light/" + this.LightId; (Int32) //return "group/" + this.GroupId; (Int32) //return "config"; - Match m = new Regex("^/hue/(config)/[gs]et$|^/hue/(scene)/([^/]+)/[gs]et$|^/hue/(sensor|light|group)/(\\d+)/[gs]et$").Match(e.Topic); + Match m = new Regex("^hue/(config)/[gs]et$|^hue/(scene)/([^/]+)/[gs]et$|^hue/(sensor|light|group)/(\\d+)/[gs]et$").Match(e.From.ToString()); String type = ""; String id = ""; if (m.Groups[1].Success) { @@ -60,11 +72,11 @@ namespace BlubbFish.IoT.Bot.HueBot.Moduls { type = m.Groups[4].Value; id = m.Groups[5].Value; } - AConnector c = this.hue.GetConnector(type, id); + AConnector c = this.library.GetConnector(type, id); if (c == null) { return; } - if (e.Topic.EndsWith("/set")) { + if (e.From.ToString().EndsWith("/set")) { try { JsonData a = JsonMapper.ToObject(e.Message); foreach (String item in a.Keys) { @@ -75,76 +87,17 @@ namespace BlubbFish.IoT.Bot.HueBot.Moduls { } } } catch (Exception) { } - } else if (e.Topic.EndsWith("/get")) { + } else if (e.From.ToString().EndsWith("/get")) { c.PollOnce = true; - this.mqtt.Send("/hue/" + ((IMqtt)c).MqttTopic(), ((IMqtt)c).ToJson()); - this.Update?.Invoke(this, new MqttEvent(e.Topic, "Dataget")); + ((ADataBackend)this.mqtt).Send("hue/" + ((IMqtt)c).MqttTopic(), ((IMqtt)c).ToJson()); + this.Update?.Invoke(this, new MqttEvent(e.From.ToString(), "Dataget")); } } - if (e.Topic.StartsWith("/huebot/config/") && (e.Topic.EndsWith("/set") || e.Topic.EndsWith("/get"))) { - Match m = new Regex("^/huebot/config/(\\w+)/[gs]et$|").Match(e.Topic); - if (!m.Groups[1].Success) { - return; - } - AModul modul = null; - foreach (KeyValuePair item in this.modules) { - if (item.Key.ToLower() == m.Groups[1].Value) { - modul = item.Value; - } - } - if (modul == null) { - return; - } - if (e.Topic.EndsWith("/get") && modul.HasConfig && modul.ConfigPublic) { - String topic = "/huebot/config/" + m.Groups[1].Value; - String data = JsonMapper.ToJson(modul.GetConfig()).ToString(); - this.mqtt.Send(topic, data); - this.Update?.Invoke(this, new MqttEvent(topic, data)); - } - if (e.Topic.EndsWith("/set") && modul.HasConfig && modul.ConfigPublic) { - try { - JsonData a = JsonMapper.ToObject(e.Message); - Dictionary> newconf = new Dictionary>(); - foreach (String section in a.Keys) { - Dictionary sectiondata = new Dictionary(); - foreach (String item in a[section].Keys) { - sectiondata.Add(item, a[section][item].ToString()); - } - newconf.Add(section, sectiondata); - } - modul.SetConfig(newconf); - this.Update?.Invoke(this, new MqttEvent("New Config", "Write")); - } catch (Exception) { } - } + Tuple cs = this.ChangeConfig(e, "huebot/config/"); + if (cs.Item1) { + this.Update?.Invoke(this, cs.Item2); } } - - public override void Interconnect(Dictionary moduls) { - this.modules = moduls; - } - - protected override void UpdateConfig() { } - - #region IDisposable Support - private Boolean disposedValue = false; - - protected virtual void Dispose(Boolean disposing) { - if (!this.disposedValue) { - if (disposing) { - this.mqtt.Dispose(); - } - this.disposedValue = true; - } - } - - ~Mqtt() { - Dispose(false); - } - - public override void Dispose() { - Dispose(true); - GC.SuppressFinalize(this); - } #endregion } } diff --git a/Hue-Bot/Program.cs b/Hue-Bot/Program.cs index 0c46fdb..fb65c0a 100644 --- a/Hue-Bot/Program.cs +++ b/Hue-Bot/Program.cs @@ -1,88 +1,32 @@ using System; using System.Collections.Generic; -using System.IO; -using System.Reflection; -using BlubbFish.IoT.Bot.HueBot.Interfaces; -using BlubbFish.IoT.Bot.HueBot.lib; using BlubbFish.IoT.Hue; -using BlubbFish.IoT.Hue.Events; using BlubbFish.Utils; +using BlubbFish.Utils.IoT.Bots; -namespace BlubbFish.IoT.Bot.HueBot { - class Program { +namespace BlubbFish.IoT.Bots.HueBot { + class Program : Bot { static void Main(String[] args) => new Program(args); - private HueController hue; - private Dictionary moduls = new Dictionary(); public Program(String[] args) { - if (!File.Exists("settings.ini")) { + InIReader.SetSearchPath(new List() { "/etc/huebot", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\huebot" }); + if (!InIReader.ConfigExist("settings")) { Helper.WriteError("No settings.ini found. Abord!"); return; } - this.hue = new HueController(InIReader.GetInstance("settings.ini").GetSection("hue")); - this.hue.Update += this.HueDataUpdate; - this.ModulLoader(); + this.logger.SetPath(InIReader.GetInstance("settings").GetValue("logging", "path")); + HueController hue = new HueController(InIReader.GetInstance("settings").GetSection("hue")); + hue.Update += this.HueDataUpdate; + this.ModulLoader("BlubbFish.IoT.Bots.HueBot.Moduls", hue); this.ModulInterconnect(); this.ModulEvents(); this.WaitForShutdown(); this.ModulDispose(); + hue.Dispose(); } - private void ModulLoader() { - Assembly asm = Assembly.GetExecutingAssembly(); - foreach (Type item in asm.GetTypes()) { - if (item.Namespace == "BlubbFish.IoT.Bot.HueBot.Moduls") { - Type t = item; - String name = t.Name; - if (File.Exists(name.ToLower() + ".ini")) { - this.moduls.Add(name, (AModul)t.GetConstructor(new Type[] { typeof(HueController), typeof(InIReader) }).Invoke(new Object[] { this.hue, InIReader.GetInstance(name.ToLower() + ".ini") })); - Console.WriteLine("Load Modul " + name); - } else if (t.HasInterface("IForceLoad")) { - this.moduls.Add(name, (AModul)t.GetConstructor(new Type[] { typeof(HueController), typeof(InIReader) }).Invoke(new Object[] { this.hue, null })); - Console.WriteLine("Load Modul Forced " + name); - } - } - } - } - - private void ModulInterconnect() { - foreach (KeyValuePair item in this.moduls) { - item.Value.Interconnect(this.moduls); - } - } - - private void ModulEvents() { - foreach (KeyValuePair item in this.moduls) { - item.Value.Update += this.ModulUpdate; - } - } - - private void WaitForShutdown() { - while (true) { - System.Threading.Thread.Sleep(100); - if (Console.KeyAvailable) { - ConsoleKeyInfo key = Console.ReadKey(false); - if (key.Key == ConsoleKey.Escape) { - break; - } - } - } - } - - private void ModulDispose() { - foreach (KeyValuePair item in this.moduls) { - item.Value.Dispose(); - Console.WriteLine("Modul entladen: " + item.Key); - } - this.hue.Dispose(); - } - - private void HueDataUpdate(Object sender, AllUpdateEvent e) { + private void HueDataUpdate(Object sender, Hue.Events.AllUpdateEvent e) { Console.WriteLine("-> Hue [" + e.UpdateTime + "]: " + e.Parent.ToString()); } - - private void ModulUpdate(Object sender, ModulEventArgs e) { - Console.WriteLine(e.ToString()); - } } } diff --git a/Hue-Bot/Properties/AssemblyInfo.cs b/Hue-Bot/Properties/AssemblyInfo.cs index 6050e60..ad6e79f 100644 --- a/Hue-Bot/Properties/AssemblyInfo.cs +++ b/Hue-Bot/Properties/AssemblyInfo.cs @@ -1,6 +1,5 @@ -using System.Resources; -using System.Reflection; -using System.Runtime.CompilerServices; +using System.Reflection; +using System.Resources; using System.Runtime.InteropServices; // Allgemeine Informationen über eine Assembly werden über die folgenden @@ -11,7 +10,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("BlubbFish")] [assembly: AssemblyProduct("Hue-Bot")] -[assembly: AssemblyCopyright("Copyright © 2018 - 15.04.2018")] +[assembly: AssemblyCopyright("Copyright © 2018 - 10.06.2018")] [assembly: AssemblyTrademark("BlubbFish")] [assembly: AssemblyCulture("")] @@ -33,7 +32,7 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden, // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.1.0")] +[assembly: AssemblyFileVersion("1.1.0")] [assembly: NeutralResourcesLanguage("de-DE")] diff --git a/Hue-Bot/Properties/Resources.Designer.cs b/Hue-Bot/Properties/Resources.Designer.cs index d79e800..24fbdf2 100644 --- a/Hue-Bot/Properties/Resources.Designer.cs +++ b/Hue-Bot/Properties/Resources.Designer.cs @@ -8,7 +8,7 @@ // //------------------------------------------------------------------------------ -namespace BlubbFish.IoT.Bot.HueBot.Properties { +namespace BlubbFish.IoT.Bots.HueBot.Properties { using System; @@ -39,7 +39,7 @@ namespace BlubbFish.IoT.Bot.HueBot.Properties { internal static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BlubbFish.IoT.Bot.HueBot.Properties.Resources", typeof(Resources).Assembly); + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("BlubbFish.IoT.Bots.HueBot.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; diff --git a/Hue-Bot/bin/Release/Bot-Utils.dll b/Hue-Bot/bin/Release/Bot-Utils.dll new file mode 100644 index 0000000000000000000000000000000000000000..2d216bb7c32456a33cdbabcc12f13d5d0c6e9389 GIT binary patch literal 20480 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 E5AeVSFaQ7m literal 0 HcmV?d00001 diff --git a/Hue-Bot/bin/Release/ConnectorDataMqtt.dll b/Hue-Bot/bin/Release/ConnectorDataMqtt.dll index 2f76942494eb119807f3062e583ede70a78c825e..8a55d3d0f7ad5ceec0454dd3243ae179957bb4ef 100644 GIT binary patch delta 2221 zcmZuzTWl0n82-*VGqc@oopyKI?S&Smt(K+5QY^-(5e16U5NcrsMU1l66*jIrwYzc= zaob3=7*U()15x4y<-tn~QWYW(YBVG!A`ckgK?%l0AAAsF)TjyZJ7*Vy#+l4F|Ns5h z`Olfjj4vARdttKUvr^jzRE~4#@Tx^0P)EWklZO^ey|vEWxB$3a6Sn|I)Kq)CW+PBT zJ=qJi2JLcwuwKlK9H}Mc@u~}+5j`Rnd?@CML~vGgG*2^wK34FOu(7QJI9LscU?O&1 zDc%>tJ+ufQDpitcBHo4&QSM+bkumb4ew5Pu#N|wkOfpW0$O_GjqrRq{M16gtP)}(m zgDshqe5CGppMy_K2duNh7%n&pB{+o!y7~!1B~$aIlBo*Qd5Kw4j!ibwJrcu(1nUUD z=|91`jmtx|?lWzqt7p!?6O=B?;J0Xxvb}Ln8xvoZ7`vLK_c!jDZM4RH{w(d&{jyB9 zQm}k_MSL15&LJi}LZMwtoN}c5-EuZn@#b?x{3{7v(o)8^RCc~fJKtS)o?lbG`(2t$ zbYoVZjf*=)?%*`7tJkRcl}SiF#fw9n%ZUH$-%pyFX6*hv%4b#AS;+dGf)SQ%+^Lgx zL+IUyYAhav;()~sveD;ebY!wSh}-i@ud-6-6Wo3l@T^TaRUFIaHx+c$-Y~F;_s+E` zd`VfS>b!03-~jL6Q2&}s-nlgA-%nj1tSIhm+#jY1_)GMI8-On0h_uaI+=k|5(0n(z zSKNw06aT%~8;`8gybfC-J1qwv7<^p(qH3{>Z98~FJg*$|NR2fH_Zi%5aKhkGB zm?3ZQXEG%Rr$o1kphlcz@Qq?pxoEH#+YUk~GWDOBB>%Ui`NP&42EV2z>935xFxGp; zR?Ec+Yq7l&hxE!}m_80pN{!Vj$85JTa|Cnkb5;Zki4M9L%jXBU-*^af)?t&~k0lk& zvrkYuBTr)3(>_l%9apo-95LDiBoj;QYS*?2oWUt-?-=bEF5p{OI8)ZDp2uOfb>3*7 zi(%0~ZF7g7KaOEo=%>{!yvuP4yv=8j_)RY-^5iAf8S9-&VmZP%&IO4Q9W)aom`AL` zLW9>ETw-w0;A(^G4W@|=$Qt<(jU{Y1$^>yXK4k+*ehJ6z>xdjo0uyHsMVSs2mw-j~d)cY!;7m(dw}a?_q)1O?j1ij`9P@L5OYkG{WMzdXcs2 z)$1tzi38SK3`?tnr2devQ`WB$;w;pPUheNE zVh_vpqTk?+2A3IrC9Wl(GRy{pBUnY|A#4@BEhu1@XyJe*hYbYyo{|lPzF;C8kKWB! zl52A5I2IfT&r>NI!Rhey6`L}}`vwck{Cqw$QVfcb&DPTN$V0*DNPm2AAX^yq3+elF z84RS0nLDx%2RB!HGf!4;6E~zD9UUFZ6biRy^XXjnu?&X%V)nu9%W~OFzL?77AK(`N z%kv|?5iU2*l&+W&HK{^wc+4;QBYv(BEOZ;}uot4W?`7 z#C69*{#LN(Vmg~Itjuf=KCW%)2|vm~WH1JVM>+QbPbmG}0Qx7l$dQd|`R+Mi74}&1 zEy4NPmXZpIs<07BZK!)hUT#^LiE$+G2s>6@nv#xp3x!uZ%4N6DSOSHz;>lR#BB_V@v>wdbX zyv7&*Ao%j3l{;d9zXSvP@UBS>q)tEa>>}}Wky&$+IzH7#<|5b&(^3TQlH_t?yeil=Gp??5P!f`7A delta 2684 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 J@@d+W{{s%m;!*$r diff --git a/Hue-Bot/bin/Release/Hue.dll b/Hue-Bot/bin/Release/Hue.dll index e0351da7c49bd56c8134f63997b150c081e64a4b..58a28cc6c7f1b31135563f416bc7573ce7f4da8f 100644 GIT binary patch delta 70 zcmZozz}&Eac|r%v;dl>h($ delta 70 zcmZozz}&Eac|r$^>-(2c8+&SY3sl-vU*1yv$)Tgj<*?bd*ngWP_ONh+r6(&Kmk`ht ZNL=ykJ)hUU>eekf#q55YJ&y0-004`WAQS)q diff --git a/Hue-Bot/bin/Release/Iot-Interfaces.dll b/Hue-Bot/bin/Release/Iot-Interfaces.dll new file mode 100644 index 0000000000000000000000000000000000000000..8da7220a77c272708fa0c8895091b2882bbefadc GIT binary patch literal 6144 zcmeHLYit}>6+ZLu`jL7QKVs6xNybf5IjOx}Kk6hjP5oFq-6Vd*UOQ=O$(h|9ucw}! z+0Mg_DJe-)S{2bMNC-rQP}3hs1%xO3h@U;$`8bkf*_QFgb+|55>P1NJ9l>1 z>jy#nLu#*czd4V4&pqedGk5P~^vq>ah)6}hd6Vc>Jh}A?yfs{aI=bt%D1EE;YTK*Q ziK}g?1=G_Cu9I{1yq3{z+wrxup}B#rnYNY~pVIP9)`->D*X=2qo){)NAu06cCw4qs zTJ1XBscn+tFb+vgDE&hxo*H^TI?)zE%c0*ah%j)wfDSn~h0cDGhw{IbXOU$Q+81GW zoQZy-W=_J|c9!Ti$g&+ot!s6+;)8t$6Uj5Fpzzvv*>KA1-+v66Af0dg1p9gMPuJ&s-oN4h)!=J zl7#eshn@1{n5yo_6CQ{s%1hnDT3&EI0^$B}0(*e{RQC_c zirS7UipW*xg#e1GwTe(Mb!<>7M$UO$>W#%?J@KBdL!5^yvViAcV)qk7@8Efw=_%he z?VQIW4kH?fX!rCK^@HYZ+I@67nZR=bd<_EKJ!m;;@Z7*kr*^zlTML5TlX`f+5D_5? zLUzPna(Q5?knz^Sxfcvfd9Hb@gJ~iYNx`@2}S^feIKv#vnh5iO^3o=_LxbG8ls8r%0 zqeyrX@kFVO;$#A61P)=h+UVot08Mf!5~+h^=0Z#jfKSPceS-cIG2JZa6fkT*ta?}8 zi}gy}cB^!iJ_5rt0m%u{;2LvVso)q|yKpnUhx#jVX3S1WWEHHvSV);cuU!;GM2Kp6b^a@?Z z8dvBSbPs)p-c$N8@-Aeo2B+(BphgqGJv0q$r!&9~nghlui=BKN+8Ax3Zvva>yTI-A z7H~KH3V1i-jZqJ6m11-sZ3hks`ElA0dP+zh7TOGrL$XNAK#!i5283l@;6;Hi3cMol z4T0AM{*o@yk0nXEL_d|qkiZ;sBd(J#N{%^*mTWy=R??7@FPN6$9yM&k z)qNv7;NuWa2R?=bW(Aip(m^h#W2u!9m^@>8<|^5M=Nb95wVX2j%AsYkt7nb8?k=ua zN$GA5k>i?VJmyp?N^?fw;EdsVrem+nDk+B?d)~|i@O?vd!tgS#Sy-(MgBCL;4NE^K zC~v*(2^aN|@z*PcoWine<`y4GS7?VE?3>}vZ~=y8NK?z6 zZ{%aed9h;TC^)p^K>rjuxth$2b5Tf zhV39v*n>H{WO>qdEH+sXHml-zR4)eB>eJ$x=>i1#VA z;5v_a62`F`L`@P!R~H}A4vDs{6r(opxLVRlbx!%g{5&pf90Wxrsx9w6(H@C*mESMz z&6hQ;JKl9r>(t`ivG~0)W{CDlw5K<#>sh_~P-mtu9`EeU%=dI2)U!REhcbr_WDaHz z%=h(l5y3uc}4BeOX44Ba!JT6I(uvT1hj|FZp{_-)3{{hVoy zsr9Y&4Hs(Wh8#CxS);mXhrjKH5#s}q+s(bOvF7VBoE0M9wu!c3YbvFD>)@(IF|CvH zIR17#-H-n}5cdq0Fx?BB!L4f!I82kElK9dd1D^zrgkRnCy86d|g|`}Bfm`@|AY_Q& z@$gkE3h+pvOR%crUO$2xs6_^B+BA>bKDRw$Rtj1jQV)8ae2jCzh3y;aHux&RCm*9s z$a5Q5x`BlyL|yvpr8MV&j^VB>;cn?r9)Gx8zzTl=vJXCZ7oO;p0p%gx?3IgW63-NM ziZugBaTcKUim#f`Rzdi?jO^&bF6#&3eSme-!at7|ARD30Sicl`LadV!aTHd?$t(I; zaU;Ljb{vP@ik%tZxmS^=F5IT$<<9FiVf>0U8-7|9-rj1x81C=*wdQ3J%P!bCf%S62 z0!LqMx#XhZ` wzjn9Q?$tptX8=)pBIYzASVq47+dN+H!}bBnfENBg)4TV7fMWhI)N%&?4MPp8x&QzG literal 0 HcmV?d00001 diff --git a/Hue-Bot/bin/Release/M2Mqtt.dll b/Hue-Bot/bin/Release/M2Mqtt.dll index 95d997a7a5dccb6e15cfaef62cbca995dcb71e30..a984130b6089ee439f98c44de8142ff8dd372dcd 100644 GIT binary patch literal 50688 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"mKCq*i4kwPg_ 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 literal 50176 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 YpVh{U`vLiPAves;;Ql}2{}K!QZ>T!~v;Y7A diff --git a/Hue-Bot/bin/Release/Mono.Posix.dll b/Hue-Bot/bin/Release/Mono.Posix.dll new file mode 100644 index 0000000000000000000000000000000000000000..9e281ad6f01f6fe76e145366ea7942cfd2fcf3e0 GIT binary patch literal 211968 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 literal 0 HcmV?d00001 diff --git a/Hue-Bot/bin/Release/Utils-IoT.dll b/Hue-Bot/bin/Release/Utils-IoT.dll index 1503ad90552eecb3e0ce38029d0c3d00c784ee7e..66160d27249692d19da2c419ca3b2d966e18a918 100644 GIT binary patch literal 13824 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 OdwgE||HuEm2>d70*nHdo literal 14848 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 diff --git a/Hue-Bot/bin/Release/Utils.dll b/Hue-Bot/bin/Release/Utils.dll index 5ef1787227d52de9a547947d22c9bdefd1aef77e..ce82120ab85e72f822437524c6cb731607f3335a 100644 GIT binary patch literal 29184 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 BQ}O@+ diff --git a/Hue-Bot/bin/Release/config-example/mqtt.conf.example b/Hue-Bot/bin/Release/config-example/mqtt.conf.example new file mode 100644 index 0000000..7fdb045 --- /dev/null +++ b/Hue-Bot/bin/Release/config-example/mqtt.conf.example @@ -0,0 +1,6 @@ +[modul] +config=private + +[settings] +type=mqtt +server=localhost diff --git a/Hue-Bot/bin/Release/config-example/settings.conf.example b/Hue-Bot/bin/Release/config-example/settings.conf.example new file mode 100644 index 0000000..81bb997 --- /dev/null +++ b/Hue-Bot/bin/Release/config-example/settings.conf.example @@ -0,0 +1,6 @@ +[hue] +server=192.168.0.1 +key=abcdefghijklmno + +[logging] +path=/var/log/huebot.log \ No newline at end of file diff --git a/Hue-Bot/bin/Release/control/control.sh b/Hue-Bot/bin/Release/control/control.sh deleted file mode 100755 index 490e7c0..0000000 --- a/Hue-Bot/bin/Release/control/control.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/bash - -# Read Settings -DIR=`dirname $0` -source $DIR/settings.cfg -cd $control_root - - -for(( ; ; )) -do - # Test for Running Servers - servers=$(./view.sh | grep $screen_name) - - clear - - if [[ -z $servers ]]; - then - echo "Hut-Botr not Running!" - echo "" - echo "1) Start Hut-Bot" - - else - echo "Hut-Bot is Running :)" - echo "" - echo "2) Stop Hut-Bot" - echo "3) Restart Hut-Bot" - echo "4) Attach to Servers Screen-Session" - echo "5) Put Command to Hut-Bot" - fi - - echo "q) Quit" - echo "" - read -p "Choice: " choice - - case "$choice" in - q) #Quit - exit 0 - ;; - 1) #Start Server - if [[ -z $servers ]]; - then - echo "Starting Hut-Bot..." - ./start.sh - else - echo "Hut-Bot Allready started!" - fi - ;; - - 2) #Stop Server - if [[ -z $servers ]]; - then - echo "Hut-Bot is not Running!" - else - echo "Stopping Hut-Bot..." - ./stop.sh - fi - ;; - - 3) #Restart Server - if [[ -z $servers ]]; - then - echo "Hut-Bot is not Running!" - else - echo "Restarting Hut-Bot..." - ./restart.sh - fi - ;; - - 4) #Attach to Screen - if [[ -z $servers ]]; - then - echo "Hut-Bot is not Running!" - else - ./join.sh - fi - ;; - - 5) #Put Command to Server - if [[ -z $servers ]]; - then - echo "Hut-Bot is not Running!" - else - read -p "Please enter Hut-Bot-Command: " mc_cmd - ./stuff.sh "$mc_cmd" - fi - ;; - - *) #Invalid Selection - echo "Wrong Selection!" - ;; - esac -done \ No newline at end of file diff --git a/Hue-Bot/bin/Release/control/join.sh b/Hue-Bot/bin/Release/control/join.sh deleted file mode 100755 index 1f8077c..0000000 --- a/Hue-Bot/bin/Release/control/join.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -# Read Settings -DIR=`dirname $0` -source $DIR/settings.cfg - -echo Press STRG+A then D to detach from Console -read -p "Press [Enter] to continue..." - -screen -R $screen_name diff --git a/Hue-Bot/bin/Release/control/loop.sh b/Hue-Bot/bin/Release/control/loop.sh deleted file mode 100755 index 9f2e144..0000000 --- a/Hue-Bot/bin/Release/control/loop.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -# Read Settings -DIR=`dirname $0` -source $DIR/settings.cfg - -rm $control_root/stop_server.info - -for(( ; ; )) -do - if [ ! -e $control_root/stop_server.info ]; - then - cd $mc_root - $mc_cmd - else - echo "Stopped Server!" - break - fi -done - -rm $control_root/stop_server.info diff --git a/Hue-Bot/bin/Release/control/restart.sh b/Hue-Bot/bin/Release/control/restart.sh deleted file mode 100755 index e819975..0000000 --- a/Hue-Bot/bin/Release/control/restart.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash - -# Read Settings -DIR=`dirname $0` -source $DIR/settings.cfg -cd $control_root - -# Be Shure theere is no Stop-Info -rm $control_root/stop_server.info - -echo "Server will be restarted in 5 Seconds..." -./stuff.sh "/say ReStarting Server in 5 seconds!" -sleep 1 -echo "4..." -./stuff.sh "/say 4..." -sleep 1 -echo "3..." -./stuff.sh "/say 3..." -sleep 1 -echo "2..." -./stuff.sh "/say 2..." -sleep 1 -echo "1..." -./stuff.sh "/say 1..." -sleep 1 -echo "Restarting Server..." -./stuff.sh "/say Restart Now!" -./stuff.sh "stop" diff --git a/Hue-Bot/bin/Release/control/settings.cfg b/Hue-Bot/bin/Release/control/settings.cfg deleted file mode 100644 index 188cd86..0000000 --- a/Hue-Bot/bin/Release/control/settings.cfg +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash -# Minecraft Control-Scripts Config-File - -# (please remember that there are no spaces allowed around the =-Sign -# in the config-lines) - -# Minecraft-Dir & JAR - -# Directory where minecraft is in -mc_root="~/Hue-Bot" - -# Root of Control-Scripts -control_root="$mc_root/control" - - -# MC-Server-Jar (will be executed in mc_root) -mc_jar="$mc_root/Hue-Bot.exe" - -# MC-Server Start-Command -mc_cmd="mono $mc_jar" - -# Screen -screen_name="Hue-Bot" \ No newline at end of file diff --git a/Hue-Bot/bin/Release/control/start.sh b/Hue-Bot/bin/Release/control/start.sh deleted file mode 100755 index 60786ca..0000000 --- a/Hue-Bot/bin/Release/control/start.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -# Read Settings -DIR=`dirname $0` -source $DIR/settings.cfg - -# Start Loop in Screen -screen -A -m -d -S $screen_name $control_root/loop.sh - -# Allow other users to control this screen-Session! -screen -r $screen_name -X multiuser on -screen -r $screen_name -X addacl www-data -screen -r $screen_name -X addacl mc -screen -r $screen_name -X addacl mw diff --git a/Hue-Bot/bin/Release/control/stop.sh b/Hue-Bot/bin/Release/control/stop.sh deleted file mode 100755 index a84bb57..0000000 --- a/Hue-Bot/bin/Release/control/stop.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -# Read Settings -DIR=`dirname $0` -source $DIR/settings.cfg -cd $control_root - -# Create Stop-Info! -touch $control_root/stop_server.info - -echo "Shutting Down Server in 5 Seconds!" -./stuff.sh "/say Shutting Down Server in 5 Seconds!" -sleep 1 -echo "4..." -./stuff.sh "/say 4..." -sleep 1 -echo "3..." -./stuff.sh "/say 3..." -sleep 1 -echo "2..." -./stuff.sh "/say 2..." -sleep 1 -echo "1..." -./stuff.sh "/say 1..." -sleep 1 -echo "Shuting Down Server..." -./stuff.sh "/say Shutdown Now!" -./stuff.sh "stop" -screen -R $screen_name diff --git a/Hue-Bot/bin/Release/control/stuff.sh b/Hue-Bot/bin/Release/control/stuff.sh deleted file mode 100755 index add95f6..0000000 --- a/Hue-Bot/bin/Release/control/stuff.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -# Read Settings -DIR=`dirname $0` -source $DIR/settings.cfg - -# screen -r $screen_name -X stuff "$1\n" - -screen -p 0 -S $screen_name -X eval "stuff '$1'\015" -# as_user "screen -p 0 -S minecraft -X eval 'stuff \"$command\"\015'" diff --git a/Hue-Bot/bin/Release/control/view.sh b/Hue-Bot/bin/Release/control/view.sh deleted file mode 100755 index 5789033..0000000 --- a/Hue-Bot/bin/Release/control/view.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -screen -ls diff --git a/Hue-Bot/bin/Release/litjson.dll b/Hue-Bot/bin/Release/litjson.dll index 606ca725970eb1b34ef83ad24ee520fe68f63427..ba8f59bfacdddf2c4361e638808c64b81f7dfe7e 100644 GIT binary patch delta 17729 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 delta 17704 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 v= 5.4.1.6) +Maintainer: BlubbFish +Description: Hue-Bot + Hue-Bot manage a HueBridge + so that it has more features diff --git a/Hue-Bot/dpkg/create-Builds.bat b/Hue-Bot/dpkg/create-Builds.bat new file mode 100644 index 0000000..beffeb9 --- /dev/null +++ b/Hue-Bot/dpkg/create-Builds.bat @@ -0,0 +1,3 @@ +bash.exe -c "./make-deb.sh armhf" +bash.exe -c "./make-exe.sh" +pause \ No newline at end of file diff --git a/Hue-Bot/dpkg/huebot-logrotate b/Hue-Bot/dpkg/huebot-logrotate new file mode 100644 index 0000000..32f49b9 --- /dev/null +++ b/Hue-Bot/dpkg/huebot-logrotate @@ -0,0 +1,10 @@ +/var/log/huebot.log { + compress + copytruncate + daily + delaycompress + missingok + notifempty + rotate 4 + size=10M +} \ No newline at end of file diff --git a/Hue-Bot/dpkg/huebot.service b/Hue-Bot/dpkg/huebot.service new file mode 100644 index 0000000..859a03b --- /dev/null +++ b/Hue-Bot/dpkg/huebot.service @@ -0,0 +1,20 @@ +# If you modify this, please also make sure to edit init.sh + +[Unit] +Description=Hue-Bot manage a HueBridge so that it has more features +After=network-online.target + +[Service] +User=huebot +Group=huebot +WorkingDirectory=/usr/local/bin/huebot +# ExecStartPre=/bin/rm /var/log/huebot.log && /bin/touch /var/log/huebot.log && /bin/chown huebot:huebot /var/log/huebot.log && /bin/chmod 644 /var/log/huebot.log +ExecStart=/usr/bin/mono /usr/local/bin/huebot/Hue-Bot.exe +KillMode=control-group +Restart=on-failure +StandardOutput=null +StandardError=syslog + +[Install] +WantedBy=multi-user.target +Alias=huebot.service diff --git a/Hue-Bot/dpkg/make-deb.sh b/Hue-Bot/dpkg/make-deb.sh new file mode 100644 index 0000000..5102edf --- /dev/null +++ b/Hue-Bot/dpkg/make-deb.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +HOMEDIR="/home/blubb" +ROOT="$HOMEDIR/deb" +OUTPUT="../bin/Release" + +EXEC="$ROOT/usr/local/bin/huebot" +CONFIG="$ROOT/etc/huebot" +SYSTEMD="$ROOT/etc/systemd/system" +LOGROTATE="$ROOT/etc/logrotate.d" + +DEBIAN="$ROOT/DEBIAN" +VMAJOR=$(grep -e "^\[assembly: AssemblyVersion(\"" ../Properties/AssemblyInfo.cs | cut -d'"' -f 2 | cut -d'.' -f 1) +VMINOR=$(grep -e "^\[assembly: AssemblyVersion(\"" ../Properties/AssemblyInfo.cs | cut -d'"' -f 2 | cut -d'.' -f 2) +VBUILD=$(grep -e "^\[assembly: AssemblyVersion(\"" ../Properties/AssemblyInfo.cs | cut -d'"' -f 2 | cut -d'.' -f 3) +ARCHT=$1 + +mkdir -p $EXEC +mkdir -p $CONFIG +mkdir -p $DEBIAN +mkdir -p $SYSTEMD +mkdir -p $LOGROTATE + +cp control $DEBIAN +cp preinst $DEBIAN +cp postinst $DEBIAN +cp prerm $DEBIAN +sed -i s/Version:\ x\.x-x/"Version: $VMAJOR.$VMINOR-$VBUILD"/ $DEBIAN/control +sed -i s/Architecture:\ any/"Architecture: $ARCHT"/ $DEBIAN/control +chmod 755 $DEBIAN -R + +cp huebot.service $SYSTEMD +chmod 644 $SYSTEMD/huebot.service + +cp $OUTPUT/*.exe $EXEC/ +find $OUTPUT -name \*.dll ! -name Mono.Posix.dll -exec cp {} $EXEC/ \; +chmod 644 $EXEC/* +chmod 755 $EXEC + +cp $OUTPUT/config-example/* $CONFIG +chmod 644 $CONFIG/* +chmod 755 $CONFIG + +cp huebot-logrotate $LOGROTATE/huebot +chmod 644 $LOGROTATE/* + +dpkg-deb --build $ROOT +mv $HOMEDIR/deb.deb ../../../Builds/"$ARCHT-huebot_$VMAJOR.$VMINOR-$VBUILD.deb" +rm $HOMEDIR/deb -r \ No newline at end of file diff --git a/Hue-Bot/dpkg/make-exe.nsi b/Hue-Bot/dpkg/make-exe.nsi new file mode 100644 index 0000000..1a28677 --- /dev/null +++ b/Hue-Bot/dpkg/make-exe.nsi @@ -0,0 +1,94 @@ +;-------------------------------- +;Include Modern UI + !include "MUI2.nsh" +;-------------------------------- +;General + Name "Hue-Bot x.x.x" + OutFile "Hue-Bot x.x.x.exe" + + InstallDir "$LOCALAPPDATA\Hue-Bot" + InstallDirRegKey HKCU "Software\Hue-Bot" "" + RequestExecutionLevel user + ShowInstDetails show + ShowUninstDetails show + SetCompressor lzma + SetDateSave off + VIAddVersionKey "ProductName" "Hue-Bot" + VIAddVersionKey "CompanyName" "BlubbFish" + VIAddVersionKey "LegalTrademarks" "BlubbFish" + VIProductVersion x.x.x +;-------------------------------- +;Variables + Var StartMenuFolder +;-------------------------------- +;Interface Settings + !define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU" + !define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Hue-Bot" + !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder" + !define MUI_ICON "..\Resources\Icon.ico" + !define MUI_UNICON "..\Resources\Icon.ico" + !define MUI_FINISHPAGE_NOAUTOCLOSE + !define MUI_UNFINISHPAGE_NOAUTOCLOSE + !define MUI_STARTMENUPAGE_DEFAULTFOLDER "Hue-Bot" +;-------------------------------- +;Pages + !insertmacro MUI_PAGE_WELCOME + !insertmacro MUI_PAGE_LICENSE "..\License.txt" + !insertmacro MUI_PAGE_COMPONENTS + !insertmacro MUI_PAGE_DIRECTORY + !insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder + !insertmacro MUI_PAGE_INSTFILES + !insertmacro MUI_PAGE_FINISH + + !insertmacro MUI_UNPAGE_WELCOME + !insertmacro MUI_UNPAGE_CONFIRM + !insertmacro MUI_UNPAGE_INSTFILES + !insertmacro MUI_UNPAGE_FINISH +;-------------------------------- +;Languages + !insertmacro MUI_LANGUAGE "German" +;-------------------------------- +;Installer Sections + InstType /NOCUSTOM + InstType Vollständig + InstType Minimal + Section "!Programm" SecProg + SectionIn 1 2 + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + CreateDirectory "$SMPROGRAMS\$StartMenuFolder" + CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" "$INSTDIR\Uninstall.exe" + CreateShortcut "$SMPROGRAMS\$StartMenuFolder\Hue-Bot.lnk" "$INSTDIR\Hue-Bot.exe" + !insertmacro MUI_STARTMENU_WRITE_END + WriteRegStr HKCU "Software\Hue-Bot" "" $INSTDIR + SetOutPath "$INSTDIR" + File /r /x Mono.Posix.dll ..\bin\Release\*.dll + File /r ..\bin\Release\*.exe + WriteUninstaller "$INSTDIR\Uninstall.exe" + SectionEnd + Section "Konfigurationsdateien" SecConf + SectionIn 1 + CreateDirectory "$APPDATA\huebot" + SetOutPath "$APPDATA\huebot" + File /r ..\bin\Release\config-example\*.example + SectionEnd + Section "Uninstall" + ;ADD YOUR OWN FILES HERE... + Delete "$INSTDIR\*.exe" + Delete "$INSTDIR\*.dll" + Delete "$APPDATA\huebot\*.example" + RMDir "$INSTDIR" + RMDir "$APPDATA\huebot" + !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder + Delete "$SMPROGRAMS\$StartMenuFolder\Uninstall.lnk" + RMDir "$SMPROGRAMS\$StartMenuFolder" + DeleteRegKey /ifempty HKCU "Software\Hue-Bot" + SectionEnd +;-------------------------------- +;Descriptions + LangString DESC_SecProg ${LANG_GERMAN} "Das Hue-Bot Programm" + LangString DESC_SecConf ${LANG_GERMAN} "Beispiel Konfigurationsdateien" + !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${SecProg} $(DESC_SecProg) + !insertmacro MUI_DESCRIPTION_TEXT ${Secconf} $(DESC_SecConf) + !insertmacro MUI_FUNCTION_DESCRIPTION_END +;-------------------------------- \ No newline at end of file diff --git a/Hue-Bot/dpkg/make-exe.sh b/Hue-Bot/dpkg/make-exe.sh new file mode 100644 index 0000000..e61c773 --- /dev/null +++ b/Hue-Bot/dpkg/make-exe.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +VMAJOR=$(grep -e "^\[assembly: AssemblyVersion(\"" ../Properties/AssemblyInfo.cs | cut -d'"' -f 2 | cut -d'.' -f 1) +VMINOR=$(grep -e "^\[assembly: AssemblyVersion(\"" ../Properties/AssemblyInfo.cs | cut -d'"' -f 2 | cut -d'.' -f 2) +VBUILD=$(grep -e "^\[assembly: AssemblyVersion(\"" ../Properties/AssemblyInfo.cs | cut -d'"' -f 2 | cut -d'.' -f 3) + +cp make-exe.nsi make.nsi +sed -i s/Name\ \"Hue-Bot\ x\.x\.x\"/"Name \"Hue-Bot $VMAJOR.$VMINOR.$VBUILD\""/ make.nsi +sed -i s/OutFile\ \"Hue-Bot\ x\.x\.x\.exe\"/"OutFile \"Hue-Bot $VMAJOR.$VMINOR.$VBUILD.exe\""/ make.nsi +sed -i s/VIProductVersion\ x\.x\.x/"VIProductVersion $VMAJOR.$VMINOR.$VBUILD.0"/ make.nsi + +makensis make.nsi +rm make.nsi +mv "Hue-Bot $VMAJOR.$VMINOR.$VBUILD.exe" ../../../Builds/"Hue-Bot $VMAJOR.$VMINOR.$VBUILD.exe" \ No newline at end of file diff --git a/Hue-Bot/dpkg/postinst b/Hue-Bot/dpkg/postinst new file mode 100644 index 0000000..7196152 --- /dev/null +++ b/Hue-Bot/dpkg/postinst @@ -0,0 +1,7 @@ +#!/bin/bash + +systemctl daemon-reload +if [[ $(systemctl is-active huebot || true) == "active" ]] +then + service huebot restart +fi diff --git a/Hue-Bot/dpkg/preinst b/Hue-Bot/dpkg/preinst new file mode 100644 index 0000000..07fbd01 --- /dev/null +++ b/Hue-Bot/dpkg/preinst @@ -0,0 +1,6 @@ +#!/bin/bash + +useradd -M huebot +usermod -L huebot +groupadd huebot +usermod -G huebot,adm huebot diff --git a/Hue-Bot/dpkg/prerm b/Hue-Bot/dpkg/prerm new file mode 100644 index 0000000..557a714 --- /dev/null +++ b/Hue-Bot/dpkg/prerm @@ -0,0 +1,3 @@ +#!/bin/bash + +service huebot stop diff --git a/Hue-Bot/lib/Events.cs b/Hue-Bot/lib/Events.cs deleted file mode 100644 index 9117178..0000000 --- a/Hue-Bot/lib/Events.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace BlubbFish.IoT.Bot.HueBot.lib { - public class CronEvent : ModulEventArgs { - - public CronEvent() { - } - - public CronEvent(String addr, String prop, String value) { - this.Address = addr; - this.Property = prop; - this.Value = value; - this.Source = "Cronjob"; - } - } - public class OvertakerEvent : ModulEventArgs { - - public OvertakerEvent() { - } - - public OvertakerEvent(String addr, String prop, String value) { - this.Address = addr; - this.Property = prop; - this.Value = value; - this.Source = "Overtaker"; - } - } - - public class MqttEvent : ModulEventArgs { - public MqttEvent() { - } - public MqttEvent(String topic, String text) { - this.Address = topic; - this.Value = text; - this.Source = "MQTT"; - } - public override String ToString() { - return this.Source + ": on " + this.Address + " set " + this.Value; - } - } - - public class StatusPollingEvent : ModulEventArgs { - public StatusPollingEvent() { - } - - public StatusPollingEvent(String text, String node) { - this.Value = text; - this.Address = node; - this.Source = "POLLING"; - } - - public override String ToString() { - return this.Source + ": " + this.Value + " on " + this.Address; - } - } - - public class ModulEventArgs : EventArgs { - public ModulEventArgs() { - } - public String Address { get; protected set; } - public String Property { get; protected set; } - public String Value { get; protected set; } - public String Source { get; protected set; } - public override String ToString() { - return this.Source + ": " + this.Address + " set " + this.Property + " to " + this.Value; - } - } -} diff --git a/Hue-Bot/lib/Helper.cs b/Hue-Bot/lib/Helper.cs deleted file mode 100644 index debd498..0000000 --- a/Hue-Bot/lib/Helper.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System; -using System.Reflection; - -namespace BlubbFish.IoT.Bot.HueBot.lib { - static class Helper { - public static void SetProperty(this Object o, String name, String value) { - PropertyInfo prop = o.GetType().GetProperty(name); - if (prop.CanWrite) { - if (prop.PropertyType == typeof(Boolean) && Boolean.TryParse(value, out Boolean vb)) { - prop.SetValue(o, vb); - } else if (prop.PropertyType == typeof(Byte) && Byte.TryParse(value, out Byte v8)) { - prop.SetValue(o, v8); - } else if (prop.PropertyType == typeof(Int32) && Int32.TryParse(value, out Int32 v32)) { - prop.SetValue(o, v32); - } else if (prop.PropertyType == typeof(Single) && Single.TryParse(value, out Single vs)) { - prop.SetValue(o, vs); - } else if (prop.PropertyType == typeof(Double) && Double.TryParse(value, out Double vd)) { - prop.SetValue(o, vd); - } else if (prop.PropertyType == typeof(Int64) && Int64.TryParse(value, out Int64 v64)) { - prop.SetValue(o, v64); - } else if (prop.PropertyType.BaseType == typeof(Enum)) { - try { - prop.SetValue(o, Enum.Parse(prop.PropertyType, value)); - } catch (Exception) { } - } - } - } - - internal static Boolean HasProperty(this Object o, String type) { - Type t = o.GetType(); - foreach (PropertyInfo item in t.GetProperties()) { - if (item.Name == type) { - return true; - } - } - return false; - } - - internal static Object GetProperty(this Object o, String name) { - PropertyInfo prop = o.GetType().GetProperty(name); - if (prop.CanRead) { - return prop.GetValue(o); - } - return null; - } - - internal static Boolean HasAbstract(this Object o, Type type) { - if (o.GetType().BaseType == type) { - return true; - } - return false; - } - - internal static Boolean HasInterface(this Type o, String type) { - foreach (Type item in o.GetInterfaces()) { - if (item.Name == type) { - return true; - } - } - return false; - } - - internal static void WriteError(String text) { - Console.ForegroundColor = ConsoleColor.Red; - Console.Error.WriteLine("ERROR: " + text); - Console.ResetColor(); - } - - internal static String ToUpperLower(this String s) { - if (s.Length == 0) { - return ""; - } - if (s.Length == 1) { - return s.ToUpper(); - } - return s[0].ToString().ToUpper() + s.Substring(1).ToLower(); - } - } -}