PowerShell/Docs/switch-shelly1.md
2023-08-06 21:36:33 +02:00

2.7 KiB

switch-shelly1.ps1

This PowerShell script switches a Shelly1 device in the local network.

Parameters

PS> ./switch-shelly1.ps1 [[-Host] <String>] [[-TurnMode] <String>] [[-Timer] <Int32>] [<CommonParameters>]

-Host <String>
    Specifies either the hostname or IP address of the Shelly1 device
    
    Required?                    false
    Position?                    1
    Default value                
    Accept pipeline input?       false
    Accept wildcard characters?  false

-TurnMode <String>
    Specifies either 'on', 'off', or 'toggle'
    
    Required?                    false
    Position?                    2
    Default value                
    Accept pipeline input?       false
    Accept wildcard characters?  false

-Timer <Int32>
    Specifies the timer in seconds (0 = infinite)
    
    Required?                    false
    Position?                    3
    Default value                -999
    Accept pipeline input?       false
    Accept wildcard characters?  false

[<CommonParameters>]
    This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, 
    WarningVariable, OutBuffer, PipelineVariable, and OutVariable.

Example

PS> ./switch-shelly1 192.168.100.100 toggle 10

Notes

Author: Markus Fleschutz | License: CC0

https://github.com/fleschutz/PowerShell

Script Content

<#
.SYNOPSIS
	Switches a Shelly1 device 
.DESCRIPTION
	This PowerShell script switches a Shelly1 device in the local network.
.PARAMETER Host
	Specifies either the hostname or IP address of the Shelly1 device
.PARAMETER TurnMode
	Specifies either 'on', 'off', or 'toggle'
.PARAMETER Timer
	Specifies the timer in seconds (0 = infinite)
.EXAMPLE
	PS> ./switch-shelly1 192.168.100.100 toggle 10
.LINK
	https://github.com/fleschutz/PowerShell
.NOTES
	Author: Markus Fleschutz | License: CC0
#>

param([string]$Host = "", [string]$TurnMode = "", [int]$Timer = -999)

try {
	if ($Host -eq "") { $Host = read-host "Enter hostname or IP address of the Shelly1 device" }
	if ($TurnMode -eq "") { $TurnMode = read-host "Enter turn mode (on/off/toggle)" }
	if ($Timer -eq -999) { [int]$Timer = read-host "Enter timer in seconds (0=endless)" }

	$Result = Invoke-RestMethod "http://$($Host)/relay/0?turn=$($TurnMode)&timer=$($Timer)"
	
	"✔️ switched Shelly1 device at $Host to $TurnMode for $Timer sec"
	exit 0 # success
} catch {
	"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
	exit 1
}

(generated by convert-ps2md.ps1 using the comment-based help of switch-shelly1.ps1 as of 08/06/2023 21:36:17)