Powershell webbserver för att skicka sms och logga data.

Jag har nu färdigställt V1.0 av scriptet jag själv kör för loggning och utskick av SMS. Det scriptet gör är att skapa en webbserver som tar emot och behandlar http kommandon. Detta gör att allt som kan surfa kan skicka information till webbservern.
Vi har även skrivit en större modul för att kunna scripta direkt mot Vera och Telldus Znet Lite
Bland annat har jag kompletterat min Vera Lite att skicka sms och logga information via den här webbservern. Jag har konfigurerat några av mina ESP8266 och Arduinos att skicka SMS via scriptet med.
Fördelen med detta är att jag nu har 100% kontroll och bestämmer precis vad som ska hända och när det ska hända.
Vad behöver man göra för att de ska fungera??? Starta ”PowerShell_ISE.exe” öppna scriptet och tryck på ”F5”

Nuvarande version 1.0 släpptes 2016-04-06
- Servern klarar att skicka sms med hjälp av 3g modem (Guide på modem konfiguration)
- Loggning sker till en central fil samt separata filer
- Uppläsning av loggfiler från hårddisken till klienter i tabellform.
Det går att ladda ner scriptet via våran GITHUB

Konfiguration
Börja med att ladda hem scriptet från våran GITHUB
skapa en mapp på lämpligt ställe och spara scriptet där. Skapa sedan en undermapp dit du vill att loggarna ska sparas.
Om det ännu inte kört några PowerShell script på datorn kan det behöva göras några ändringar för att tillåta detta.
Allt som behövs för att detta ska fungera är att skriva:
Set-ExecutionPolicy RemoteSigned
Raden ovan tillåter Powershell att köra script lokalt på klienten.
- $port=54320 – Ange port du vill att din klient ska lyssna på.
- $serverIP=”127.0.0.1” – Ange IP-adress du vill att klienten ska lyssna på.
- $COMPort=”COM3” – Ange vilken port du har SMS modemet på
- $loggpath = ”C:\temp\Loggar” – Ange vart du vill att alla loggar ska sparas.
Genom att ändra $verbosePreference till ”Continue” istället för ”SilentlyContinue” går det att få mer information.
# Parametrar param ($port=54320,$serverIP="127.0.0.1",$ComPort="COM3",[int]$ModemSpeed=9600,$loggpath = "C:\Temp\Loggar") $VerbosePreference = "silentlyContinue"
Brandväggsregler
Tänk på att servern där scriptet körs måste få ett undantag skapa i brandväggen.

# Genom att köra följande rad i Powershell V5.0 eller nyare lägger du till ett undantag för porten du vill ha din server på. Tänk på att köra powershell.exe som administratör! [int]$DinPort = 54320 [string]$RegelNamn = "Automatiserar-Webbserver" New-NetFirewallRule -DisplayName $RegelNamn -Direction Inbound -LocalPort $DinPort -Protocol TCP -Action Allow
Logga data
För att logga data till webbservern behöver klienten skicka följande rad: ”http://DittIP:54320/?LOGGA/ValfriText/MinSensorNR4/27,5”
- MinSensorNR4 : Detta är namnet på filen som kommer att skapas i loggmappen. Samt namnet på sensorn i loggfilen.
- 27,5 : Följande värde är bra ett exempel på vad som kan skickas in som värde.

För att läsa informationen via http
Alla kommandon som skickas in till webbservern sparas i en filstruktur.

- Data.log – Innehåller informationen om alla ”sensorer” som sparats.
- Scriptinfo.log – Innehåller all information om klienter som skickat kommandon.
- Sensor1.log – Loggad information om en sensor kallad ”Sensor1”
- Sensor2.log – Loggad information om en sensor kallad ”Sensor2”
- AnnanSensor3.log – Loggad information om en sensor kallad ”AnnanSensor3”
Kommandon som stöds som sista del i http kommandot:
- Tabel
- ALL
- Last
Genom att skriva ”http://DittIP:54320/?readlog/Demo/DATA/tabel” laddas data in från filen ”Data.log”

För att enbart ladda information om Sensor2 skriver jag följande:
http://DittIP:54320/?readlog/Demo/Sensor2/tabel

För att läsa sista raden i en fil, exempelvis Data.log. skriver du följande rad:
- http://DittIP:54320/?readlog/Demo/data/last

Skicka SMS
För att skicka SMS med scriptet behöver du ett modem som klarar att skicka SMS. Jag använder ett Huawei E220 HSDPA modem. Välj motsvarande COM port som visas där i scriptets variabel

- V1.0 – har problem att skicka ÖÄÅ i SMS, någon som har en bra idé på vad som kan tänkas lösa detta?


Scene i Vera som skicka SMS vid Larm
För att skicka sms med en scene i vera behöver du bara köra följande rad:
luup.inet.wget("http://DittIP:54320/?SMS/0701234567/Larmet har triggat!")
Genom att skapa en scene i Vera som aktiveras när en dörr öppnas och systemet är Away eller Vacation skickas ett sms med Veras egna tjänst. Utöver det har jag även skapat lite LUUP kod som anropar Powershell webbservern.

Följande kod finns under ”Also, execute the following Luup code:”

Om du väljer att spinna vidare på scriptet och dela det vidare, ge då cred till oss på www.automatiserar.se och länka till bloggen 🙂
[poll id=”17″]
Upptäcker du nått som inte fungerar eller har en bra idé på mer som scriptet borde klara skriv det i så fall!
// Ispep
Pingback: Powershell Webbserver Med SMS Stöd! |
Hej
Skulle man kunna få scriptet att när larmet gå, ta 5 bilder med övervakningskameran och skicka med dessa i ett MMS/SMS?
MMS är nått jag ännu inte har testat, men det kanske är nått jag måste kolla lite mer på.
Vad gäller att hämta bilder från en kamera så finns funktionen klar i PowerShell modulen vi har för hemautomation:
(https://www.automatiserar.se/powershell-modul-for-hemautomation)
genom att köra funktionen
Get-MJ-WebCamImage -Destination C:\temp\ -WebCam 10.20.30.40 -username admin -password BraLösenord -Filename Kamerabilden -KameraModell Hikvision # om du har en Hikvision dvs, annars fungera även Foscam och Dlink med.
Kan göra några exempel på hur man lägger till dessa som bilagor i mail och sedan skickar ett mail med dessa.
// Ispep
Pingback: A6 gsm & gprs chip med uppringningsstöd! |
Pingback: Raspberry PI – Guiden är nu klar |
Går det att köra PS script som service eller liknande?
Om jag förstår PS rätt så måste detta script vara igång i förgrunden och användaren som kör scriptet måste vara inloggad?
Jag själv har en liten Windows snurra som mer eller mindre bara snurrar och jag är inte inloggad på den, funkar då Erat SMS script då?
Hej
Nu var det ett tag sedan jag själv körde scriptet aktivt. Har för mig att jag valde att lägga det som en schemalagd aktivitet, satte att Powershell.exe skulle starta automatiskt vid uppstart av datorn, oavsett om man är inloggad eller inte.
// Ispep
vad är smidigast om man vill få Vera att skicka SMS och inte förlita sig på typ Veras SMS gate, helst köra eget, går det att stoppa in 3G/4G dongel i Vera och köra så?
Nya VeraSecure ska ha något inbyggt för att koppla upp via mobilnätet, dock väldigt lite info om det går att sätta vilket telefonkort som hest där..
Jag har själv valt att gå över till en RPI för att få den största friheten och stabilaste plattformen (utan externa beroenden) för SMS. Har med hjälp av Node Red gjort flöden som jag enkelt kan koppla ihop för att skicka sms från vilka system som helst, bland annat Vera. Testade bara för sakens skull att skicka sms varje gång en dörr öppnades… Insåg efter en halv dag att man öppnar MÅNGA dörrar under en dag 🙂
Här är den senaste guiden på hur jag använder samma modem till RPI:
https://www.automatiserar.se/guide-raspberry-pi/#InstallationSMSNodeRed
// Ispep
Har dålig koll på Node Red, menar du att din RPi med Node Red inte är beroende av din Vera? Ser ett beroende där, sedan om det är linux eller Windows spelar mindre roll.
Node red blir mjukvaran du använder för att skicka sms (via Python scriptet) i så fall, med väldigt lite jobb att koppla till fler datakällor i framtiden. flera ggr jag fick skriva om min Powershell funktion för att få den optimal mot mina önskemål. Med Node Red går det mycket snabbare att addera funktionalitet.
Ja Vera får ett beroende oavsett lösning så länge du inte direkt kopplar in någon sms lösning i Veran, använder du de två gratis sms:en i Vera:n så har du ett beroende mot internet. Dvs ett beroende finns alltid.
// Ispep
Vore perfekt om man kunde koppla in ett 3G/4G direkt i Veran och få den skicka SMS direkt, du känner inte till om någon får det ett lir! Kanske ska dr iväg en fråga till Vera support och fråga om det finns någon lösning.
Går det inte att installera Gammu SMSD på Veran och köra mot
ett 3G-modem i USB-porten ?
Kör så på en Raspberry men det vore smidigare att köra direkt på Veran…