Wir haben den Koubachi-Sensor ja bereits einem ausführlichen Review unterzogen. Jetzt zeigen wir euch, wie Ihr die Daten in eurem Smart Home, in diesem Fall dem Fibaro HomeCenter 2 nutzen könnt.
Chris hatte es in seinem Review zu dem besagten Sensor ja schon angedeutet: Wir werden euch noch eine Koubachi Integration vorstellen. Heute ist es dann endlich soweit.
Um dieses Skript zu nutzen, benötigt Ihr einen Account bei Koubachi und einen eingerichteten Sensor. Sofern diese beiden Bedingungen erfüllt sind, habt Ihr auch Zugriff auf die API-Schnittstelle. Die Webseite dazu findet Ihr unter Koubachi Labs. Diese müsst Ihr einmal aufrufen und euch dort einloggen. Die Zugriffsdaten sind die gleichen wie in der normalen Anwendung. Beim ersten Login müsst Ihr die Nutzung der Schnittstelle einmalig bestätigen.
Anpassen des Koubachi Skript
Nach dieser Bestätigung werdet Ihr zu einer Übersicht eurer Daten weitergeleitet. Ganz am Ende dieser Übersicht findet Ihr alle wichtigen Daten, welche dann in das Skript eingetragen werden müssen.
Hier geht es vor allem um die "user_credentials" und die "app_key" (Im Bild rot makiert), welche dann in dem Skript in die gleich benannten lokalen Variablen eingetragen werden müssen. Die beiden folgenden Skript-Zeilen sind betroffen:
1 2 |
local user_credentials = 'Og0h8Hgnxxxx' local app_key = 'KLAB9F9X20XYKCVxxxx' |
Solltet Ihr mehrere Sensoren in eurem Account verknüpft haben, müsst Ihr noch die Anzahl eurer Sensoren in dem Skript hinterlegen. Dies erfolgt über die lokale Variable "count". Standardmäßig ist diese auf den Wert 1 gesetzt. Solltet Ihr jetzt drei Sensoren im Betrieb haben, muss dieser Wert auf 3 gesetzt werden.
1 |
local count = 1 |
Die Einrichtung ist jetzt bereits schon abgeschlossen und nach einem Klick auf Speichern läuft die Szene das erste Mal durch. Bei dem erstmaligen Durchlauf prüft das Skript, ob bestimmte Variablen, in die am Ende die Werte des Sensors geschrieben werden, vorhanden sind. Sollte dies nicht der Fall sein, werden diese angelegt. Es gibt eine bestimmte Namenskonvention, wie die globalen Variabelen benannt werden. Dies ist immer "koubachi_DEVICEID_sensor". Damit wird die Eindeutigkeit der Variablen sichergestellt.
Anhand dieser Variablen könnt Ihr jetzt zum Beispiel Szenen triggern oder wie Chris bereits geschrieben hat, die Bewässerung damit steuern und die Beregnung verzögern, sofern die Bodenfeuchte einen bestimmten Wert besitzt. Dazu wird es bald einen neuen Artikel geben, in dem wir beschreiben, wie dies umgesetzt wird. Viel Spass bei der Umsetzung eurer Ideen. Anbei folgt das besagte Skript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
--[[ %% properties %% autostart %% globals --]] -- DIESE DATEN ANPASSEN local user_credentials = 'Og0h8Hgnxxxx' local app_key = 'KLAB9F9X20XYKCVxxxx' local refresh = 1800 local count = 1 local sourceTrigger = fibaro:getSourceTrigger() Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end function globalVar(var,val) local http = net.HTTPClient() http:request("http://127.0.0.1:11111/api/globalVariables", { options = { method = 'POST', headers = {}, data = '{"name":"'..var..'","value":"'..val..'"}', timeout = 10000 }, success = function(response) local result = response.data; if response.status == 200 or response.status == 201 then fibaro:debug('Status: ' ..response.status.. ' - Variable wurde angelegt') else fibaro:debug('Error: ' ..response.status.. ' - Zugriff verweigert') end end, error = function(err) fibaro:debug('[ERROR] ' .. err) end }) end function koubachi_call() Debug( 'green', '__________KOUBACHI-Call 0.1 gestartet__________') local selfhttp = net.HTTPClient({timeout=2000}) url = 'https://api.koubachi.com/v2/user/smart_devices.json?user_credentials='..user_credentials..'&app_key='..app_key..'' selfhttp:request(url, { options={ headers = selfhttp.controlHeaders, method = 'GET', timeout = 5000 }, success = function(status) if status.status == 200 then Debug( 'green', '________API-Call erfolgreich durchgeführt_________') local response = json.decode(status.data) for k=1, count do if (response[k].device.id ~= nil) then Debug( 'green', '______Koubachi-Sensor ' ..response[k].device.id.. ' erkannt_____') if (fibaro:getGlobal('koubachi_'..response[k].device.id..'_hum') == nil) then Debug( 'red', 'Variablen nicht gefunden. Erstelle die benötigten Variablen für den Sensor!') local hum = string.sub(response[k].device.recent_soilmoisture_reading_value, 1, 2) globalVar('koubachi_'..response[k].device.id..'_hum', hum) globalVar('koubachi_'..response[k].device.id..'_lux', response[k].device.recent_light_reading_value) globalVar('koubachi_'..response[k].device.id..'_temp', response[k].device.recent_temperature_reading_value) else local hum = string.sub(response[k].device.recent_soilmoisture_reading_value, 1, 2) fibaro:setGlobal('koubachi_'..response[k].device.id..'_hum', hum) fibaro:setGlobal('koubachi_'..response[k].device.id..'_lux', response[k].device.recent_light_reading_value) fibaro:setGlobal('koubachi_'..response[k].device.id..'_temp', response[k].device.recent_temperature_reading_value) end Debug( 'white', 'Gemessene Feuchtigkeit: ' ..response[k].device.recent_soilmoisture_reading_value) Debug( 'white', 'Gemessene Helligkeit: ' ..response[k].device.recent_light_reading_value) Debug( 'white', 'Gemessene Temperatur: ' ..response[k].device.recent_temperature_reading_value) end end Debug( 'green', '________KOUBACHI-Call 0.1 abgeschlossen________') else print ("failed") print(status.data) end end, error = function(error) print "ERROR" print(error) end }) setTimeout(koubachi_call, refresh*1000); end if (sourceTrigger['type'] == 'autostart') then koubachi_call() end |
Käuflich erwerben könnt Ihr den Sensor übrigens über zum Beispiel Amazon. Das passende Icon zu der Szene gibt es natürlich wie immer kostenfrei dazu. :)
(Wir möchten an dieser Stelle nochmals darauf hinweisen, dass Koubachi spätestens Ende 2018 die Server vom Netz nimmt und deshalb die Daten mit diesem Skript nicht mehr abgerufen werden können. Bis dahin ist es allerdings eine nette Spielerei...)