Script: *switch-shelly1.ps1* ======================== This PowerShell script switches a Shelly1 device in the local network. Parameters ---------- ```powershell PS> ./switch-shelly1.ps1 [[-Host] ] [[-TurnMode] ] [[-Timer] ] [] -Host 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 Specifies either 'on', 'off', or 'toggle' Required? false Position? 2 Default value Accept pipeline input? false Accept wildcard characters? false -Timer Specifies the timer in seconds (0 = infinite) Required? false Position? 3 Default value -999 Accept pipeline input? false Accept wildcard characters? false [] This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction, WarningVariable, OutBuffer, PipelineVariable, and OutVariable. ``` Example ------- ```powershell PS> ./switch-shelly1 192.168.100.100 toggle 10 ``` Notes ----- Author: Markus Fleschutz | License: CC0 Related Links ------------- https://github.com/fleschutz/PowerShell Script Content -------------- ```powershell <# .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/15/2024 09:50:54)*