Powershell modul för hemautomation

PowerShell för bättre hemautomation!

powershell-logo

Från och med nu kommer jag att samla allt om modulen här.

För att installera modulen skriver du följande kommando i Powershell: Install-Module -Name automatiserarse   

Nuvarande Version 1.9.0 – 2016-06-21

Nyhet * 2016-06-21

Nu finns det två nya funktioner för att rita information i bilder ”Set-MJImageInformation” och  ”Save-MJVeraImageWithInfo”.  Dessa gör det möjligt att öppna en bild och skriva information i bilden. Alternativt skriva namnet till Veran och en mapp lokalt på datorn dit du vill spara alla bilder. Scriptet loggar in på Veran, hämtar ut alla kameror, när detta är gjort sparas en bild samt alla enheter i samma rum som kameran inhämtas och taggas in i bilden, som exemplet nedan.

Taggad bild med en ljussensor från en Arduino.
Taggad bild med en ljussensor från en Arduino.

Detta gjordes genom att skriva följande rader:

# Rader som behövs för att uppnå resultatet ovan.
Install-Module -Name automatiserarse  # Installerar modulen

Save-MJVeraImageWithInfo -VeraIP 10.20.30.40 -Destinationpath C:\temp\ -Infotransparency 200

 

 

Nyhet * 2016-06-09

Nu är går det att tända / släcka lampor som med den äldre modulen till Vera.

#

# Genom att skriva raden nedan kopplar scriptet upp mot enheten kallad "Vera" och släcker enhet 80.

Set-MJVeraDevice -VeraIP vera -DeviceID 80 -Action OFF


# Om du vill släcka flera enheter skriver du bara till deras id som nedan. Perfekt om du schemalägger några enheter.

Set-MJVeraDevice -VeraIP vera -DeviceID 80,100,101,102,140 -Action OFF

 

På grund av Microsofts ScriptAnalyzer blev jag tvungen att ändra koden som loggar in på webbkameror. Microsoft tillåter inte att kommandot ”ConvertTo-SecureString” används, även om lösenorden i Vera kommer i klartext (VILKET ÄR FEL, men det är så Veran gör). För att lösa detta fick jag göra följande kod:

$SecureString = New-Object -TypeName System.Security.SecureString

foreach ($tmpPass in (($tmpObj.password).ToCharArray())){$SecureString.AppendChar($tmpPass)}
$secureString

 

Nyhet * 2015-06-08

Har nu flyttat modulen från Github till Powershell Gallery!

Powershell Gallery
Powershell Gallery

Detta innebär att datorer med Powershell V5 (Laddas hem här till alla versioner av Windows om du saknar det) nu genom en enda rad kan installera modulen och direkt få tillgång till alla funktioner i Veran! För att se vilken version av PowerShell du kör kan du skriva $host.version.major  då ser du vilken version du har installerad.

För att se modulen på Powershell Gallery skriver du:  Find-Module -Name automatiserarse 

Om du sedan väljer att installera den är det lika lätt som ovan, skriv: Install-Module -Name Automatiserarse

Installation utan att köra Powershell.exe som administratör.
Installation utan att köra Powershell.exe som administratör.

Får du felet ovan har du två val, endera installerar du det som enbart din användare eller till alla som kör på datorn.

  1. Installera bara som dig: Install-Module -Name Automatiserarse -scope CurrentUser
  2. Installera för alla, högerklicka och starta powershell som administratör (bild nedan), kräver att man tycker på knappen ”y” och ”enter” två gånger.
Installation som administratör
Installation som administratör

När detta stäng och starta PowerShell.

Följande funktioner finns just nu i Vera, men det kommer nya funktioner allt eftersom jag hinner med mig att konvertera och skriva dom.

just detta kommandot testar jag nu för att få en surfplatta att berätta vad som händer med hjälp av den inbyggda talsyntesen i Windows.

  • Send-MJSpeak 

För att ”höra” vilket mode min Vera är i körs följande rad:

  • Send-MJSpeak -Message ”Your Vera are currently in mode $((Get-MjVeraMode -VeraIP DITTVERAIP).mode)”

För att läsa ut all info ur din vera (ÄVEN GEOFENCE, vilket annars är svårt att se)

  • Get-MJVeraStatus -VeraIP ”Din Veras IP”

För att se nuvarande Mode:

  • Get-MjVeraMode -VeraIP ”Din Veras IP”

För att byta mode till ett nytt:

  • Set-MjVeramode -VeraIP ”Din Veras IP” -NewVeraMode Away

För att ladda ner bilder och spara dessa lokalt (från ALLA kameror som är upplagda i veran)

  • Save-MJVeraWebCamImages -VeraIP ”Din Veras IP”-DestinationPath C:\Temp -Filename VeraImage

 

Alla kommandon jag skrivit har hjälp, för att se hur kommandon fungerar skriv ”HELP” * KOMMANDOT * ”-Examples

help Save-MJVeraWebCamImages -Examples

Vilket ger informationen om vilken data kommandot kommer att returnera:

Save-MJVeraWebCamImages -VeraIP vera -DestinationPath C:\Temp -Filename VeraImage

WebcamIP     : 10.20.30.40
Destination  : C:\Temp
SnapshotURL  : image/jpeg.cgi
Filename     : VeraImage
RequireLogin : True
WebCamSource : http://10.20.30.40/image/jpeg.cgi
SavePath     : C:\Temp\VeraImage_2016-06-08_23-06-03_3.jpg
FileSize     : 48454

Nyhet * 2015-04-20

  • Read-MJ-ImageRGBPixel.

Funktionen gör det möjligt att analysera individuella pixlar i en bild. Detta möjliggör övervakning av lysdioder och annat i bilder.

Read-MJ-ImageRGBPixel

Nyhet * 2015-12-25

  • Send-MJ-ArduinoData: Gör det möjligt att koppla upp till arduino via en COM port, just nu stödjer funktionen att skicka data.

Send-MJ-ArduinoData

Version 1.6 – 2015-12-24 (God Jul!)

Nyhet * 2015-12-24

  • Get-MJ-SoluppNer:  Hämtar hem solens upp och nedgång från internet och visar det som date time objekt
Get-MJ-SolUppNer

Nyhet * 2015-12-23

  • Get-MJ-WebCamImage: hämtar och sparar bilder från webkameror, stödjer idag Dlink och Hikvision native.

Get-MJ-WebcamImage

Äldre Versioner

Version 1.5

Nyhet * 2015-11-21 – Har nu skapat en funktion för att  ladda och spara behörigheter till Telldus Live automatiskt (Get-TDCredential)

Nyhet * 2015-11-14 – Stöd för Telldus Live finns nu tack vare Anders på dollarunderscore

Vad är detta och varför?

För alla som kanske inte håller på att för mycket med Windows så är Powershell ett objektorienterat script språk. Jag har länge hållit på med powershell och tycker det är mycket lättare och snabbare att styra hemautomation med Powershell istället för kompilerade program. Det är även lättare att dela med sig eftersom koden går att läsa och ändra om man så önskar. Jag har skrivit några program, dessa måste uppdateras via Visual Studio vilket gör att man drar sig för att göra förändringar.

Jag har proxat in Arduinos till min Telldus DUO under några års tid med Powershell. Valde att fortsätta med det även med min Vera Lite. Jag tycker om att automatisera saker och med Powershell går det mycket enkelt att skrapa sidor och uppdatera status med hjälp av datat.

 

Bakgrund

Orsaken till att jag började skriva den här modulen var att jag bytte från Telldus DUO till Vera, jag hade en hel del script mot Telldus för att skicka information från Arduinos, ville fortsätta med det.

Vera hade inte någon färdig Powershell script mot kontrollern. Jag valde därför att skriva en och samtidigt tänkte jag dela med mig av den till fler som kanske vill göra lite mer komplexa saker mot exempelvis Vera.

Nytt från och med Version 1.5 är att den nu har stöd för Telldus Live med! Stort tack till Anders på Dollarunderscore som lät mig länka in hans färdiga funktioner för Telldus Live, all cred för dom funktionerna ska han ha!

 

Vad kan modulen göra?

Modulen kan idag hämta ut info från Veran och göra dessa till objekt, dessa går att skicka vidare till andra funktioner sedan.

  • Vera (UI7)
    • Starta, stoppa, Lista, Uppdatera
  • Telldus Live
    • Lista, Starta, Stoppa, Uppdatera
  • SMS
  • Få text uppläst i högtalarna.

    • Få information om uppläst i högtalarna, exempelvis temperatur eller larmstatus.

Hur gör man?

Jag har tidigare skrivit om hur man gör här Powershell V1.1, gå in där och läs om hur du lägger till den på din dator. Kommer inte att skriva någon ny guide på detta förens jag gör nästa uppdatering av modulen.

 

 

Telldus Live (Dollarunderscores funktioner)

för att styra Telldus enheter börjar man med att koppla upp mot Telldus Live med telldus kontot.

Connect Telldus

Skriv: Connect-TelldusLive -Credential (Get-Credential)   # Ange ditt lösenord till Telldus Live tjänsten. Får du inte ett felmeddelande är du uppkopplad.

Get-TDDevice

Skriv: Get-TDDevice   # Detta listar alla Telldus enheter. Där listas nu enheter

För att stänga eller starta en enhet gör du på följande sätt.

Set-TDDevice

Skriv: Set-TDDevice -DeviceID (ID på enheten du vill styra) -action (turnOn / turnOff)

Exempel på hur man kan stänga alla enheter som är igång:

Set-TDDevice

Get-TDDevice | Where-Object {$_.state -eq ”On”} | Set-TDDevice -Action turnOff

 

Tidigare bloggposter om Modulen:

1.5 – Stöd för Telldus Live finns nu tack vare Anders på http://dollarunderscore.azurewebsites.net
1.4 – Nu går det att kontrollera vilket mode veran är i, samt snabbt byta till ett nytt mode.
1.3 – Nu går det att exportera ut backuperna från vera till en extern enhet.
1.2 – Set-Mj-VeraDevice tillåter ON / Off på enheter med stöd för detta. Schemat exporteras ut på strömbrytare som SwitchService
1.1 – Modulen Get-MJ-Verastatus tar nu med alla Z-Wave egenskaper”
1.0 – Modulen Get-MJ-Verastatus fungerar nu med Vera UI5 med.”
0.9″ – Modulen Get-MJ-Verastatus klarar nu av att logga in med användarnamn och lösenord
0.8 – Modulen kan nu kontrollera vilken version som är installerad”,”* Mer funktioner för att se nyheter i modulen på WWW.automatiserar.se
0.7 – Rss läsare från www.automatiserar.se”,”* Modul för att kontrollera om nyare version av modulen finns på www.automatiserar.se
0.6 –  Uppläsning av data”,”* Konvertering av UNIX tidsformat till vanligt tidsformat
0.5 – Första versionen

Powershell V1.4

Powershell V1.3

Powershell V1.2

Powershell V1.1

Dom som kör den gamla versionen kommer att kunna uppdatera den precis som vanligt, det som kommer att skilja är att den nu kommer att ladda hem den från den här URL:en istället för den gamla.

 

Vill du spinna vidare på modulen är det helt ok, försök i så fall att göra som jag, ge cred till den som skriver och länka 🙂

Från och med nu så versionshanteras koden på Github: Github Hemautomation

Hämta modulen V1.5

Vill du bara testa modulen utan att lägga till den, öppna länken och kopiera allt innehåll i filen och spara det som en .ps1 så är det klart.

 

Dela och länka gärna till modulen om du gillar den så fler får läsa om den. Säg till om du hittar någon bugg eller saknar nått så kanske jag kan fixa det.

//Ispep