Powershell Webbserver med SMS funktion

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

Uppstart
När scriptet startas visas följande information i Powershell. dvs information om hur du anropar scriptet.

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”

StartaScriptet
Detta är allt som behövs för att starta servern. Inget SMS modem behövs för att själva scriptet ska fungera. Det kan behöva göras ändringar i brandväggen på klienten.

 

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

3g modem som nyttjas för att skicka sms
3g modem som nyttjas för att skicka sms

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.

Firewall
Genom att skriva ”firewall” i startfältet dyker följande ”Windows-brandväggen med avancerad säkerhet”
# 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.
LoggaDataTillServern
För att skicka data till Powershell Webbservern skriver följande: http://DittIP:54320/?LOGGA/ValfriText/MinSensorNR4/27,5 MinSensorNR4 = id som sensorn ska sparas till. 27,5 = värdet som ska loggas.

 

 

För att läsa informationen via http

Alla kommandon som skickas in till webbservern sparas i en filstruktur.

Följande filer har skapats av webbservern.
Följande filer har skapats av webbservern.
  • 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”

ReadLogfile
Med ett http kommando går det nu att hämta all information från loggfilen.

För att enbart ladda information om Sensor2 skriver jag följande:

http://DittIP:54320/?readlog/Demo/Sensor2/tabel

för att enbart ladda information om en viss sensor anges detta i URL:en
för att enbart ladda information om en viss sensor anges detta i URL:en

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
För att läsa den sista raden i en loggfil skriver du "LAST" i slutet istället för TABEL
För att läsa den sista raden i en loggfil skriver du ”LAST” i slutet istället för TABEL

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

Huawei E220 HSDPA modem.
Huawei E220 HSDPA modem.
  • V1.0 – har problem att skicka ÖÄÅ i SMS, någon som har en bra idé på vad som kan tänkas lösa detta?
Om modemet inte svarar korrekt returneras ett "ERROR"
För att skicka SMS: ”Http://DITTIP:54320/?SMS/0701234567/demo” Om modemet inte svarar korrekt returneras ett ”ERROR”
Resultatet vid ett korrekt skickat SMS
Resultatet vid ett korrekt skickat SMS

 

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.

Scene i vera som skickar sms när larmet aktiveras.
Scene i vera som skickar sms när larmet aktiveras.

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

Luup koden som både skickar sms till två olika telefoner.
Luup koden som både skickar sms till två olika telefoner.

 

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

 

 

 

13 reaktioner på ”Powershell Webbserver med SMS funktion”

  1. Pingback: Powershell Webbserver Med SMS Stöd! |

  2. Hej

    Skulle man kunna få scriptet att när larmet gå, ta 5 bilder med övervakningskameran och skicka med dessa i ett MMS/SMS?

    1. 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

  3. Pingback: A6 gsm & gprs chip med uppringningsstöd! |

  4. Pingback: Raspberry PI – Guiden är nu klar |

  5. 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å?

    1. 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

      1. 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å?

        1. 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

          1. 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.

          2. 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

  6. 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.

  7. 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…

Lämna ett svar till Dabe Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *