Compare commits

..
6 Commits
Author SHA1 Message Date
BlubbFish 852a096f1d [NF] Now sould dedect Strg+c on Linux 2018-05-15 20:52:54 +00:00
BlubbFish 69030796f5 [BF] Fixinig installations dpkg script 2018-05-15 19:04:19 +00:00
BlubbFish 19d92c8cac [BF] Fixinig installations dpkg script 2018-05-15 18:59:32 +00:00
BlubbFish c792ea20ad Utils.csproj
[NF] Programmlogger added (v1.1.0)
[NF] Utils fixing tiny issues

Zway-Bot.csproj
[NF] changes Topics without beginning /
[NF] Using programmlogger (v1.4.0)
2018-05-15 18:49:03 +00:00
BlubbFish 611205e78f [BF] Fixing Issue with Math.Abs(l) 2018-05-12 12:36:32 +00:00
BlubbFish 4be8bb72f4 [BF] Some sensors make wrong measurements near 0 not exactly 0, so ABS(value) >= 0.1 is alse false 2018-05-10 06:26:39 +00:00
39 changed files with 118 additions and 39 deletions
+7 -7
View File
@@ -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));
+24 -9
View File
@@ -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,23 +43,34 @@ namespace ZwayBot {
}
private void WaitForShutdown() {
while (true) {
System.Threading.Thread.Sleep(100);
if (Console.KeyAvailable) {
String a = Console.ReadLine();
if (a.EndsWith("/exit")) {
break;
}
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);
}
}
private void SetupShutdown(Object sender, ConsoleCancelEventArgs e) {
e.Cancel = true;
this.RunningProcess = false;
}
private void ModulDispose() {
foreach (KeyValuePair<String, AModul> item in this.moduls) {
item.Value.Dispose();
Console.WriteLine("Modul entladen: " + item.Key);
}
this.zw.Dispose();
this.sig_thread.Abort();
}
private void ModulEvents() {
+3 -3
View File
@@ -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.2")]
[assembly: AssemblyFileVersion("1.3.2")]
[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.
+15 -1
View File
@@ -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" />
@@ -145,8 +149,11 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="dpkg\control" />
<None Include="dpkg\create-dkpg.bat" />
<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.
@@ -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.
Binary file not shown.
+1 -1
View File
@@ -1,4 +1,4 @@
[modul]
[modul]
config=public
[cold]
+1 -1
View File
@@ -1,4 +1,4 @@
[modul]
[modul]
config=private
[settings]
+1 -1
View File
@@ -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 -1
View File
@@ -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
+1 -1
View File
@@ -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
+12 -1
View File
@@ -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/"zwaybot_$VMAJOR.$VMINOR-$VBUILD.deb"
mv $WORKDIR/deb.deb ../bin/Builds/$ARCHT/"zwaybot_$VMAJOR.$VMINOR-$VBUILD.deb"
rm $WORKDIR/deb -r
+1
View File
@@ -0,0 +1 @@
Name "Example1"
+3
View File
@@ -0,0 +1,3 @@
#!/bin/sh
service zwaybot start
+5
View File
@@ -0,0 +1,5 @@
#!/bin/sh
service zwaybot stop
addgroup zwaybot
adduser --system --no-create-home --disabled-login --ingroup zwaybot zwaybot
+3
View File
@@ -0,0 +1,3 @@
#!/bin/bash
service zwaybot stop
+17
View File
@@ -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
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Mono.Posix" version="5.4.0.201" targetFramework="net471" />
</packages>