Stand der Rolladen per push melden

Hi Leute,
Ich habe seit einiger Zeit elektrische Rolläden, die ich über unterschiedliche Situationen in meiner HC2 steuere.
Ich würde gerne ein kleines Script machen, das mit immer wenn irgendein Script die Rolläden bewegt, eine Push Nachricht schickt.

Nach einigen kurzen Tests bin ich draufgekommen, dass ein Skript welches über

--[[
%% properties
72 value
%% globals
--]]

Läuft zwar den IST Zustand der Rollo gut anzeigt!
Da die Dinger ja bis zu 30 Sekunden brauchen um ihr angesteuertes Ziel zu erreichen, wäre mir ein Status lieber der ausgelesen wird, sobald sich das Teil zuende bewegt hat!

Habt ihr damit schon Erfahrungen oder eventuell einen Tipp ?

Hi pblacky,

ich gehe davon aus das Du Fibaro Rollershutters hast. Du könntest den “power” Wert des Motors in einer while Schleife abfragen. Wenn der z.B. unter 1 Watt ist, dürfte der Rollladen die gewünschte Position erreicht haben. Dann kannst Du pushen.
Ich frage mich bloss welchem Zweck dass dient. Traust Du dem Rollladen nicht, oder dem Script, oder soll das nur zu Debug zwecken rein?

Hallo @jeep
Danke für deine Idee!

Ich brauche das für die ersten Gehversuche meiner Skripte.
Nicht weil ich dem Rolladen nicht traue, sondern prüfen will ob sich meinen vielen Ideen und Skripte nicht in die Quere kommen!
Und da ich in Kürze etwas länger auf Urlaub fahre, suche ich nach einem guten Kompromiss zwischen Sicherung der Außenhaut und Lebenserhaltung meiner Blumen :wink:

Hi,

wenn Du das insbesondere für die “Gehversuche meiner Skripte” benötigst, kannst Du in Deine Scripte auch einfach (unter den jeweiligen Bedingungen) ein sendpush einbauen.

VG Hoggle

Das mit den Push Nachrichten in den Skripten hab ich eh schon realisiert.

Ich würde aber auch gerne wissen wann die Rollos händisch bedient werden, um herauszufinden wieviel davon man noch automatisieren kann!
Daher suche ich eher nach einer Lösung, die so nahe wie möglich an der Jalousiesteuerung ist…

Hi Ihr Lieben,
Habe jetzt mal ausführliche Tests gemacht und rausgefunden dass der Fibaro Rollershutter mit dem unten angeführten Skript den Status erst setzt, wenn er sich nicht mehr bewegt!
Das ist genial, denn deshalb erübrigt sich die Frage nach dem Zeitraum wann der Endstatus erreicht ist!

Hier mein fertiges Skript:
Es wird immer dann ausgelöst, wenn sich einer der Rollershutter, der in den Properties angegeben ist, bewegt und dann wird der Status dieses Devices im Debug angezeigt!
Somit sind auch Magic Skripte überprüfbar wo man keine weiteren Events hinterlegen kann :wink:

Wenn ihr es verwenden wollt, müsst ihr nur die Values gegen eure ersetzen
und wenn ihr wollt nach den Debug Zeilen die Befehle für Push, Pushover oder Email einfügen!

--[[
%% properties
354 value
357 value
%% globals
--]]

if (fibaro:countScenes()>1) then  fibaro:abort() end -- lösche doppelte Szenen
Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end

local trigger = fibaro:getSourceTrigger()
local DeviceID = tonumber(trigger['deviceID'])
local DeviceValue = tonumber(fibaro:getValue(DeviceID, "value"))
local DeviceName = fibaro:getName(DeviceID)
local DeviceRoom = fibaro:getRoomNameByDeviceID(DeviceID)

if (DeviceValue > 98) then
    Debug("orange",(os.date("%d.%m.%Y - "..DeviceRoom.." - "..DeviceName.." wurde geöffnet")))
  elseif (DeviceValue < 12) then
    Debug("orange",(os.date("%d.%m.%Y - "..DeviceRoom.." - "..DeviceName.." wurde geschlossen")))
  else
    Debug("orange",(os.date("%d.%m.%Y - "..DeviceRoom.." - "..DeviceName.." ist auf " ..DeviceValue.." Prozent")))
end

Was genau muss ich denn für die Push Funktion in das Script einbauen?

Vielen Dank im Voraus für das Feedback.

fibaro:call(Handy_ID, "sendPush", "Waschmaschine ist fertig")

Hab dir in mein Beispielskript mal die PUSH Funktionalität eingebaut:
Du musst nur deine Handy ID und die “value” an deine HC2 anpassen :wink:

--[[
%% properties
354 value
357 value
%% globals
--]]
if (fibaro:countScenes()>1) then  fibaro:abort() end -- lösche doppelte Szenen
Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end

local handyID = 141 -- ID des Handys
local trigger = fibaro:getSourceTrigger()
local DeviceID = tonumber(trigger['deviceID'])
local DeviceValue = tonumber(fibaro:getValue(DeviceID, "value"))
local DeviceName = fibaro:getName(DeviceID)
local DeviceRoom = fibaro:getRoomNameByDeviceID(DeviceID)

if (DeviceValue > 98) then
    Debug("orange",(os.date("%d.%m.%Y - "..DeviceRoom.." - "..DeviceName.." wurde geöffnet")))
	fibaro:call(handyID,'sendPush',' '..DeviceRoom..' '..DeviceName..' wurde geöffnet', 'Jalousie')
  elseif (DeviceValue < 12) then
    Debug("orange",(os.date("%d.%m.%Y - "..DeviceRoom.." - "..DeviceName.." wurde geschlossen")))
    fibaro:call(handyID,'sendPush',' '..DeviceRoom..' '..DeviceName..' wurde geschlossen', 'Jalousie')
  else
    Debug("orange",(os.date("%d.%m.%Y - "..DeviceRoom.." - "..DeviceName.." ist auf " ..DeviceValue.." Prozent")))
	fibaro:call(handyID, 'sendPush',' '..DeviceRoom..','..DeviceName..' ist auf '..DeviceValue..' Prozent', 'Jalousie')
end

Danke!!!

Jetzt habe ich doch nochmal was. Hier der Code den ich einsetze:

--[[
%% properties
308 value
291 value
305 value
314 value
311 value
%% globals
--]]
if (fibaro:countScenes()>1) then  fibaro:abort() end -- lösche doppelte Szenen
Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end
 
local handyID1 = 21 -- ID des Handys
local handyID2 = 102 -- ID des Handys
local trigger = fibaro:getSourceTrigger()
local DeviceID = tonumber(trigger['deviceID'])
local DeviceValue = tonumber(fibaro:getValue(DeviceID, "value"))
local DeviceName = fibaro:getName(DeviceID)
local DeviceRoom = fibaro:getRoomNameByDeviceID(DeviceID)
 
if (DeviceValue > 98) then
    Debug("orange",(os.date("%d.%m.%Y - "..DeviceRoom.." - "..DeviceName.." wurde geöffnet")))
	fibaro:call(handyID1,'sendPush',' '..DeviceRoom..' '..DeviceName..' wurde geöffnet', 'Jalousie')
  fibaro:call(handyID2,'sendPush',' '..DeviceRoom..' '..DeviceName..' wurde geöffnet', 'Jalousie')
  elseif (DeviceValue < 12) then
    Debug("orange",(os.date("%d.%m.%Y - "..DeviceRoom.." - "..DeviceName.." wurde geschlossen")))
    fibaro:call(handyID1,'sendPush',' '..DeviceRoom..' '..DeviceName..' wurde geschlossen', 'Jalousie')
fibaro:call(handyID2,'sendPush',' '..DeviceRoom..' '..DeviceName..' wurde geschlossen', 'Jalousie') 
  else
    Debug("orange",(os.date("%d.%m.%Y - "..DeviceRoom.." - "..DeviceName.." ist auf " ..DeviceValue.." Prozent")))
	fibaro:call(handyID1, 'sendPush',' '..DeviceRoom..','..DeviceName..' ist auf '..DeviceValue..' Prozent', 'Jalousie')
fibaro:call(handyID2, 'sendPush',' '..DeviceRoom..','..DeviceName..' ist auf '..DeviceValue..' Prozent', 'Jalousie')
end

Ich habe fünf RollerShutter 2 im Einsatz, bekomme jedoch nur für drei eine Pushmeldung. Debug sieht wie folgt aus:

[DEBUG] 18:12:02: line 115: attempt to concatenate local ‘deviceId’ (a nil value)
[DEBUG] 18:21:46: 11.10.2017 - Küche - Fenster Waschbecken wurde geschlossen
[DEBUG] 18:21:54: 11.10.2017 - Wohnzimmer - Fenster links wurde geschlossen
[DEBUG] 18:21:55: 11.10.2017 - Wohnzimmer - Fenster rechts wurde geschlossen

Was habe ich falsch gemacht?

Tja, ich bin zwar kein LUA Profi, aber für mich sieht es so aus als wäre das Skript um 18:12:02 OHNE Device ID (eventuell händisch) gestartet worden.
Diese Codezeilen sind ausschließlich dafür gedacht über ein Device getriggert zu werden!

Ein händischer Start übergibt kein aufrufendes Gerät und daher ist die Device ID leer.
Ist aber nur eine Vermutung…

Stimmt hatte ich händisch gestartet, damit ich es Debugen kann.

Aber warum bekomme ich nur für drei von fünf Shutter die Zustandsänderung gepusht?

Da kann ich nur Vermutungen anstellen:

1.) Hast du ALLE Device IDs oben unter %% properties eingetragen?
2.) Hast du die richtigen IDs eingetragen? Der Fibaro Rollershutter hat pro Device 3 IDs!
3.) Du must die ID des rot markierten Gerätes eintragen. (siehe Anhang)

RollerShutter.jpg

Die ID´s stimmen. Sind die gleichen wie in meinem LUA Script zum Hoch- und Runterfahren. Zudem werde diese im DEBUG auch angezeigt, aber nicht gepusht :frowning:

Tu mal die Zeile 10
if (fibaro:countScenes()>1) then fibaro:abort() end – lösche doppelte Szenen
mit “–” auskommentieren, oder rauslöschen !
Vielleicht wird die Szene zu schnell getriggert und deshalb gekillt!

Wenn das klappt, solltest du die Szene in den Einstellungen so konfigurieren, dass die mehrmals gestartet werden kann!
Wenn nicht, dann hoffe ich dass von den LUA Profis noch jemand eine Idee hat :wink:

Beim manuellen Runter- bzw. Hochfahren werden jetzt alle gepusht. Mal sehen ob das morgen beim Sonnenaufgang auch klappt :wink:

Danke schon mal …

Warum baust Du dann die Push-Benachrichtigung nicht gleich am Ende Deines Rollo-Sonnenaufgang-Scriptes ein?

Zur Überwachung ob die Rollos manuell runtergefahren wurden. Meine kleine Tochter dunkelt sich gerne Ihr Zimmer ab …

Da hatten wir hier irgendwo ein Script, mit dem man die Parameter per LUA kurzfristig so anpassen kann, dass das nicht möglich ist…