Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
852a096f1d | ||
|
|
69030796f5 | ||
|
|
19d92c8cac | ||
|
|
c792ea20ad |
@@ -29,7 +29,7 @@ namespace ZwayBot.Moduls {
|
||||
String data = "";
|
||||
if(e.Parent.HasAbstract(typeof(ACommandClass))) {
|
||||
ACommandClass sensor = (ACommandClass)e.Parent;
|
||||
topic = "/zwavebot/devices/" + sensor.MqttTopic();
|
||||
topic = "zwavebot/devices/" + sensor.MqttTopic();
|
||||
data = sensor.ToJson();
|
||||
}
|
||||
if(topic != "" && data != "") {
|
||||
@@ -39,8 +39,8 @@ namespace ZwayBot.Moduls {
|
||||
}
|
||||
|
||||
private void Mqtt_MessageIncomming(Object sender, BackendEvent e) {
|
||||
if (e.From.ToString().StartsWith("/zwavebot/devices/") && (e.From.ToString().EndsWith("/set") || e.From.ToString().EndsWith("/get"))) {
|
||||
Match m = new Regex("^/zwavebot/devices/(\\d+)/(\\d+)/(\\d+)/[gs]et$|^/zwavebot/devices/(\\d+)/(\\d+)/(\\d+)/(\\d+)/[gs]et$").Match(e.From.ToString());
|
||||
if (e.From.ToString().StartsWith("zwavebot/devices/") && (e.From.ToString().EndsWith("/set") || e.From.ToString().EndsWith("/get"))) {
|
||||
Match m = new Regex("^zwavebot/devices/(\\d+)/(\\d+)/(\\d+)/[gs]et$|^zwavebot/devices/(\\d+)/(\\d+)/(\\d+)/(\\d+)/[gs]et$").Match(e.From.ToString());
|
||||
String id = "";
|
||||
if(m.Groups[1].Success) {
|
||||
id = m.Groups[1].Value + "-" + m.Groups[2].Value + "-" + m.Groups[3].Value;
|
||||
@@ -65,12 +65,12 @@ namespace ZwayBot.Moduls {
|
||||
} catch (Exception) { }
|
||||
} else if(e.From.ToString().EndsWith("/get")) {
|
||||
c.PollOnce = true;
|
||||
((ADataBackend)this.mqtt).Send("/zwavebot/devices/" + c.MqttTopic(), c.ToJson());
|
||||
((ADataBackend)this.mqtt).Send("zwavebot/devices/" + c.MqttTopic(), c.ToJson());
|
||||
this.Update?.Invoke(this, new MqttEvent(e.From.ToString(), "Dataget"));
|
||||
}
|
||||
}
|
||||
if (e.From.ToString().StartsWith("/zwavebot/config/") && (e.From.ToString().EndsWith("/set") || e.From.ToString().EndsWith("/get"))) {
|
||||
Match m = new Regex("^/zwavebot/config/(\\w+)/[gs]et$|").Match(e.From.ToString());
|
||||
if (e.From.ToString().StartsWith("zwavebot/config/") && (e.From.ToString().EndsWith("/set") || e.From.ToString().EndsWith("/get"))) {
|
||||
Match m = new Regex("^zwavebot/config/(\\w+)/[gs]et$|").Match(e.From.ToString());
|
||||
if (!m.Groups[1].Success) {
|
||||
return;
|
||||
}
|
||||
@@ -84,7 +84,7 @@ namespace ZwayBot.Moduls {
|
||||
return;
|
||||
}
|
||||
if(e.From.ToString().EndsWith("/get") && modul.HasConfig && modul.ConfigPublic) {
|
||||
String topic = "/zwavebot/config/" + m.Groups[1].Value;
|
||||
String topic = "zwavebot/config/" + m.Groups[1].Value;
|
||||
String data = JsonMapper.ToJson(modul.GetConfig()).ToString();
|
||||
((ADataBackend)this.mqtt).Send(topic, data);
|
||||
this.Update?.Invoke(this, new MqttEvent(topic, data));
|
||||
|
||||
+22
-7
@@ -8,8 +8,11 @@ namespace ZwayBot {
|
||||
class Program {
|
||||
static void Main(String[] args) => new Program(args);
|
||||
|
||||
private ZwayController zw;
|
||||
private Dictionary<String, AModul> moduls = new Dictionary<String, AModul>();
|
||||
private readonly ZwayController zw;
|
||||
private readonly Dictionary<String, AModul> moduls = new Dictionary<String, AModul>();
|
||||
private Boolean RunningProcess = true;
|
||||
private System.Threading.Thread sig_thread;
|
||||
private readonly ProgramLogger logger = new ProgramLogger();
|
||||
|
||||
public Program(String[] args) {
|
||||
InIReader.SetSearchPath(new List<String>() { "/etc/zwaybot", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\zwaybot" });
|
||||
@@ -23,6 +26,7 @@ namespace ZwayBot {
|
||||
Helper.WriteError("No settings.ini found. Abord!");
|
||||
return;
|
||||
}
|
||||
this.logger.SetPath(InIReader.GetInstance("settings").GetValue("logging", "path"));
|
||||
this.zw = new ZwayController(InIReader.GetInstance("settings").GetSection("zway"), names, false);
|
||||
this.zw.Update += this.ZwayDataUpate;
|
||||
this.ModulLoader();
|
||||
@@ -39,15 +43,25 @@ namespace ZwayBot {
|
||||
}
|
||||
|
||||
private void WaitForShutdown() {
|
||||
this.sig_thread = new System.Threading.Thread(delegate() {
|
||||
Mono.Unix.UnixSignal[] signals = new Mono.Unix.UnixSignal[] {
|
||||
new Mono.Unix.UnixSignal(Mono.Unix.Native.Signum.SIGTERM),
|
||||
new Mono.Unix.UnixSignal(Mono.Unix.Native.Signum.SIGINT)
|
||||
};
|
||||
while (true) {
|
||||
Int32 i = Mono.Unix.UnixSignal.WaitAny(signals, -1);
|
||||
this.RunningProcess = false;
|
||||
}
|
||||
});
|
||||
Console.CancelKeyPress += new ConsoleCancelEventHandler(this.SetupShutdown);
|
||||
while (this.RunningProcess) {
|
||||
System.Threading.Thread.Sleep(100);
|
||||
if (Console.KeyAvailable) {
|
||||
String a = Console.ReadLine();
|
||||
if (a.EndsWith("/exit")) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetupShutdown(Object sender, ConsoleCancelEventArgs e) {
|
||||
e.Cancel = true;
|
||||
this.RunningProcess = false;
|
||||
}
|
||||
|
||||
private void ModulDispose() {
|
||||
@@ -56,6 +70,7 @@ namespace ZwayBot {
|
||||
Console.WriteLine("Modul entladen: " + item.Key);
|
||||
}
|
||||
this.zw.Dispose();
|
||||
this.sig_thread.Abort();
|
||||
}
|
||||
|
||||
private void ModulEvents() {
|
||||
|
||||
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("BlubbFish")]
|
||||
[assembly: AssemblyProduct("Zway-Bot")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2017 - 08.05.2018")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2017 - 15.05.2018")]
|
||||
[assembly: AssemblyTrademark("BlubbFish")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
@@ -31,8 +31,8 @@ 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.3.4")]
|
||||
[assembly: AssemblyFileVersion("1.3.4")]
|
||||
[assembly: AssemblyVersion("1.4.3")]
|
||||
[assembly: AssemblyFileVersion("1.4.3")]
|
||||
[assembly: NeutralResourcesLanguage("de-DE")]
|
||||
|
||||
// “Internet Of Things” icon by By Michael Wohlwend, US, from thenounproject.com.
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<TargetFrameworkProfile />
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
@@ -50,6 +52,8 @@
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="dpkg\preinst" />
|
||||
<None Include="dpkg\postinst" />
|
||||
<Compile Include="Events.cs" />
|
||||
<Compile Include="Interfaces\IForceLoad.cs" />
|
||||
<Compile Include="Moduls\AModul.cs" />
|
||||
@@ -147,6 +151,9 @@
|
||||
<None Include="dpkg\control" />
|
||||
<None Include="dpkg\create-Builds.bat" />
|
||||
<None Include="dpkg\make-deb.sh" />
|
||||
<None Include="dpkg\prerm" />
|
||||
<None Include="dpkg\zwaybot.service" />
|
||||
<None Include="packages.config" />
|
||||
<None Include="Resources\Icon.ico" />
|
||||
<Content Include="Resources\icon.svg" />
|
||||
</ItemGroup>
|
||||
@@ -157,4 +164,11 @@
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets" Condition="Exists('..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Mono.Posix.5.4.0.201\build\net45\Mono.Posix.targets'))" />
|
||||
</Target>
|
||||
</Project>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
[modul]
|
||||
[modul]
|
||||
config=public
|
||||
|
||||
[cold]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[modul]
|
||||
[modul]
|
||||
config=private
|
||||
|
||||
[settings]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[names]
|
||||
[names]
|
||||
2-0-37=Kühlschrank Schalter
|
||||
2-0-49-4=Kühlschrank Leistung
|
||||
2-0-50-0=Kühlschrank Verbrauch [kWh]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[hot]
|
||||
[hot]
|
||||
from=7-0-67-1:Level
|
||||
to=8-0-67-1:Level;9-0-67-1:Level
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[modul]
|
||||
[modul]
|
||||
config=private
|
||||
|
||||
[settings]
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
[zway]
|
||||
[zway]
|
||||
server=localhost
|
||||
user=admin
|
||||
pass=pass
|
||||
|
||||
[logging]
|
||||
path=/var/log/zwaybot.log
|
||||
@@ -1,3 +1,3 @@
|
||||
[temp]
|
||||
[temp]
|
||||
cron=30 * * * *
|
||||
devices=7-0-49-1,8-0-49-1,9-0-49-1,10-0-49-1,11-0-49-1
|
||||
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
[modul]
|
||||
[modul]
|
||||
config=public
|
||||
|
||||
[cold]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[modul]
|
||||
[modul]
|
||||
config=private
|
||||
|
||||
[settings]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[names]
|
||||
[names]
|
||||
2-0-37=Kühlschrank Schalter
|
||||
2-0-49-4=Kühlschrank Leistung
|
||||
2-0-50-0=Kühlschrank Verbrauch [kWh]
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[hot]
|
||||
[hot]
|
||||
from=7-0-67-1:Level
|
||||
to=8-0-67-1:Level;9-0-67-1:Level
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[modul]
|
||||
[modul]
|
||||
config=private
|
||||
|
||||
[settings]
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
[zway]
|
||||
[zway]
|
||||
server=localhost
|
||||
user=admin
|
||||
pass=pass
|
||||
|
||||
[logging]
|
||||
path=/var/log/zwaybot.log
|
||||
@@ -1,3 +1,3 @@
|
||||
[temp]
|
||||
[temp]
|
||||
cron=30 * * * *
|
||||
devices=7-0-49-1,8-0-49-1,9-0-49-1,10-0-49-1,11-0-49-1
|
||||
@@ -2,7 +2,7 @@ Package: zwaybot
|
||||
Version: x.x-x
|
||||
Section: base
|
||||
Priority: optional
|
||||
Architecture: i386
|
||||
Architecture: any
|
||||
Depends: mono-complete (>= 5.4.1.6)
|
||||
Maintainer: BlubbFish <dev@blubbfish.net>
|
||||
Description: Zway-Bot
|
||||
|
||||
@@ -2,5 +2,5 @@ set /P maj=Enter Major Version:
|
||||
set /P min=Enter Minor Version:
|
||||
set /P bui=Enter Build Version:
|
||||
|
||||
bash.exe -c "./make-deb.sh %maj% %min% %bui%"
|
||||
bash.exe -c "./make-deb.sh %maj% %min% %bui% armhf"
|
||||
pause
|
||||
@@ -4,23 +4,34 @@ ROOT="$WORKDIR/deb"
|
||||
OUTPUT="../bin/Release"
|
||||
EXEC="$ROOT/usr/local/bin/zwaybot"
|
||||
CONFIG="$ROOT/etc/zwaybot"
|
||||
SYSTEMD="$ROOT/etc/systemd/system"
|
||||
DEBIAN="$ROOT/DEBIAN"
|
||||
VMAJOR=$1
|
||||
VMINOR=$2
|
||||
VBUILD=$3
|
||||
ARCHT=$4
|
||||
|
||||
mkdir -p $EXEC
|
||||
mkdir -p $CONFIG
|
||||
mkdir -p $DEBIAN
|
||||
mkdir -p $SYSTEMD
|
||||
|
||||
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 zwaybot.service $SYSTEMD
|
||||
chmod 755 $SYSTEMD -R
|
||||
|
||||
cp $OUTPUT/*.exe $EXEC/
|
||||
cp $OUTPUT/*.dll $EXEC/
|
||||
cp $OUTPUT/config-example/* $CONFIG
|
||||
cp $OUTPUT/control $EXEC/ -r
|
||||
|
||||
dpkg-deb --build $ROOT
|
||||
mv $WORKDIR/deb.deb ../bin/Builds/"zwaybot_$VMAJOR.$VMINOR-$VBUILD.deb"
|
||||
mv $WORKDIR/deb.deb ../bin/Builds/$ARCHT/"zwaybot_$VMAJOR.$VMINOR-$VBUILD.deb"
|
||||
rm $WORKDIR/deb -r
|
||||
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
service zwaybot start
|
||||
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
service zwaybot stop
|
||||
addgroup zwaybot
|
||||
adduser --system --no-create-home --disabled-login --ingroup zwaybot zwaybot
|
||||
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
service zwaybot stop
|
||||
@@ -0,0 +1,17 @@
|
||||
# If you modify this, please also make sure to edit init.sh
|
||||
|
||||
[Unit]
|
||||
Description=Zway-Bot manage a Zwave.me installation so that it has more features
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
User=zwaybot
|
||||
Group=zwaybot
|
||||
WorkingDirectory=/usr/local/bin/zwaybot
|
||||
ExecStart=/usr/bin/mono /usr/local/bin/zwaybot/Zway-Bot.exe
|
||||
KillMode=control-group
|
||||
Restart=on-failure
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Alias=zwaybot.service
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Mono.Posix" version="5.4.0.201" targetFramework="net471" />
|
||||
</packages>
|
||||
Reference in New Issue
Block a user