Philips Hue Fehlerbericht

Aufgetretene Probleme:

Das eigentliche Ziel war dass, sobald die Hue Lampe eingeschaltet würde, eine Information an die Azure Cloud gesendet werden sollte. Da aber meine Hue Lampe nur als Empfänger arbeitete habe ich mir eine alternative Vorgehensweise ausgedacht. Ich bin wie im Folgenden beschrieben vorgegangen.

Im Code in Abbildung 12 habe ich versucht, nachdem die Lampe ein-/ausgeschaltet wurde in der If-Anwesiung durch ein Add-StorageTableRow-Befehl in Zeile 34 und 43 einen String (Text) mit dem Status und der Uhrzeit der Lampe an die Azure table (Tabelle) zu versenden. Das hat leider nicht geklappt wie ich wollte, weil Azure Powershell keinen String akzeptiert hat. So konnte ich keinen String an Azure versenden und bin auch durch Recherchieren nicht weitergekommen.

Was ich in Erfahrung gebracht habe:

Ich habe im Internet nur Informationen gefunden, die erklären, wie Speicherkonten in andere Speicherkonten kopiert werden.
Bei meinem ersten Versuch habe ich versucht, einen String in ein Speicherkonto zu speichern.
Powershell hat als Fehler angegeben, dass kein String direkt in Azures Speicherkonto gespeichert werden kann.
Daraufhin habe ich eine Datei erzeugt, und diese in einen String gespeichert. Auch das war erfolglos.

Im Folgenden beschreibe ich, wie ich bis zur Problematischen Stelle gelangt bin. Wer sich damit etwas genauer beschäftigen möchte, kann das Tutorial durchgehen.

Dateien über Azure table (Tabelle) speichern

Rufen Sie die Azure Webseite auf.
https://portal.azure.com/#@testalexaoutlook.onmicrosoft.com/dashboard/private/26d2ffcf-55ef-4b7a-b35e-a140daa8e00d

Unter „Resource groups“ eine Ressource aussuchen oder hinzufügen („add“).

Abbildung 1

Wenn Sie eine Ressource aussuchen und darauf klicken werden Sie anschließend nochmals durch „Add“ weitergeleitet.

Abbildung 2

„Storage account“ in die Suche eingeben und auf „Storage account“ klicken.

Abbildung 3

Weiter mit „create“ (Erstellen).

Abbildung 4

Sinnvollen Namen angeben und mit „Review + create“ ausführen.

Abbildung 5

Mit „create“ die endgültigen Speicherkontoerstellung starten.

Abbildung 6

Table Erzeugung im Storage account durch klicken auf „Tables“.

Abbildung 7

Weiter auf „Table“.

Abbildung 8

Namen vergeben und mit „OK“ bestätigen.

Abbildung 9

SAS und connection string generieren durch klicken von „Generate SAS and connection string“.

Abbildung 10

Den SAS token kopieren.

Abbildung 11

Setzen Sie alle Ihre Daten hier ein.

# Schritt 1, Variablen definieren
$resourceGroup = '<Enter Resource Group>'
$storageAccountName = '<Enter Storage Account Here>'    $tableName = '<Enter Table Name Here>'    
$sasToken = '<Enter SAS Token Here>'   
$dateTime = get-date   
$partitionKey = 'Svr1PerfData'   

# Schritt 2, verbindet sich mit dem Azure table Storage Account
$storageCtx = New-AzureStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken
$table = Get-AzureStorageTable -Name $tableName -Context $storageCtx

Einige Modifikationen am Code.

Abbildung 12
# Schritt 1, Variablen definieren
$resourceGroup = '<Enter Resource Group>'
$storageAccountName = '<Enter Storage Account Here>'    $tableName = '<Enter Table Name Here>'    
$sasToken = '<Enter SAS Token Here>'   
$dateTime = get-date   
$partitionKey = 'Svr1PerfData'     

# Schritt 2, verbindet sich mit dem Azure table Storage Account
$storageCtx = New-AzureStorageContext -StorageAccountName $storageAccountName -SasToken $sasToken
$table = Get-AzureStorageTable -Name $tableName -Context $storageCtx

# Hue Bridge
$hueBridge = "http://<Ihre IP-Adresse>/api/" 
# Lampe die gesteuert werden soll 
$lightNumber = <ID Ihrer Lampe> 
# Benutzername
$username = '<Benutzername den die Hue bridge Ihnen geben hat>'

$result = Invoke-RestMethod -Method Get -Uri "$($hueBridge)/$($username)/lights"
$currentState = $result.$lightNumber | select state

If ($currentState.state.on.Equals($false)){
    $body = @{"on"=$true} | ConvertTo-Json
    write-host "Light 2 is OFF, turning it ON"

       Add-StorageTableRow -table $table -partitionKey $partitionKey -rowKey ([guid]::NewGuid().tostring()) -property @{
        'Zeit' = $dateTime.ToString("yyyymmdd:hhmmss")
        'Status' = str "Light 2 is OFF, turning it ON"
    } | Out-Null  

} else {
    $body = @{"on"=$false} | ConvertTo-Json
    write-host "Light 2 is ON, turning it OFF"

       Add-StorageTableRow -table $table -partitionKey $partitionKey -rowKey ([guid]::NewGuid().tostring()) -property @{
        'Zeit' = $dateTime.ToString("yyyymmdd:hhmmss")
        'Status' = str  "Light 2 is ON, turning it OFF"
    } | Out-Null
}

$result = Invoke-RestMethod -Method PUT -Uri "$($hueBridge)/$($username)/lights/$($lightNumber)/state" -Body $body
$result