keine Push-Mitteilung bei Unscharf über Zipato Tagreader

Hallo zusammen,

ich habe seit längerem das Problem, dass keine Push Mitteilung gesendet wird, wenn ich über den Tagreader unscharf schalte. Beim Scharfschalten kommt die Meldung aber?! Woran kann das liegen?
Ich habe das Script aus dem Forum benutzt und sonst funzt ja auch alles. Folgendes Script:

--[[
%% properties
106 value
%% events
%% globals
--]]

-- notwendige IDs
local sensorID = {62,8,47,157,50,53,92,160,56,59,65,68,71,74,77,80,83,86,89} -- IDs der Sensoren
local phoneID = {318} -- IDs der Handys
local doorlockID = {} -- IDs der doorlocks

-- zusätzliche Optionen
local own_action = false -- eigene Aktionen ausführen; Funktionen müssen befüllt werden
local disarmed_bug = false -- Firmware Bug umgehen

-- eigene Funktionen
function actionsafterArmed()
  fibaro:debug('Führe eigene Funktionen nach dem Schärfen aus')
end

function actionsafterDisarmed()
  fibaro:debug('Führe eigene Funktionen nach dem Entschärfen aus')
end

-- AB HIER NICHTS MEHR ÄNDERN
local trigger = fibaro:getSourceTrigger()
local rfid_value_status = ''

Debug = function ( color, message )
  fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"))
end

function armedcheckSensorID(array)
  for j=1, #sensorID do
    if sensorID[j] ~= nil then
      if (tonumber(fibaro:getValue(sensorID[j], 'armed')) ~= 0) then
          return false
      end
    end
  end
  return true
end

-- Funktion für die Öffnung der Tür
function openDoor()
    if (doorlockID[0] ~= nil) then
    fibaro:debug('Türschlösser werden geöffnet.')
    for j=0, #doorlockID do
     if doorlockID[j] ~= nil then
       fibaro:call(doorlockID[j],'unsecure')
     end
    end
  end
 end
 
-- Funktion zum Versenden der Push
function sendPush(text)
 if (phoneID[1] ~= nil) then
  for i=1, #phoneID do
     if phoneID[i] ~= nil then
       fibaro:debug('Versende Push an ID ' ..phoneID[i])
       fibaro:call(phoneID[i],'sendPush', text, 'alarm')
     end
  end
 end
end

function setArmedStatus(set_status)
  if set_status then
    fibaro:debug('Sensoren werden scharf geschaltet.')
    for k=1, #sensorID do
     if sensorID[k] ~= nil then
      if (tonumber(fibaro:getValue(sensorID[k], 'value')) == 0) then
       fibaro:call(sensorID[k], 'setArmed', '1')
      else
       local sensorname = fibaro:getName(sensorID[k])
       local sensorroom = fibaro:getRoomNameByDeviceID(sensorID[k])
       fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher. Sende Push.')
       sendPush('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
      end
     end
     end
  else
    fibaro:debug('Sensoren werden entschärft.')
    for j=1, #sensorID do
     if sensorID[j] ~= nil then
      if (disarmed_bug) then
       setArmed(sensorID[j])
      else
       fibaro:call(sensorID[j], 'setArmed', '0')
      end
     end
    end
  end
end

function setArmed(deviceId)
  local dev = api.get('/devices/' .. deviceId)
  dev.properties.armed = false
  api.put('/devices/' .. deviceId, dev)
end

-- Funktion zum Anlegen einer Globalen Variablen
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

if (trigger['type'] == 'property') then
 fibaro:debug('RFID-Szene 3.1 (Official) gestartet.')
 local rfid_ID = tonumber(trigger['deviceID'])
 local rfid_value = tonumber(fibaro:getValue(rfid_ID, 'value'))
  if (rfid_value == 1) then
    rfid_value_status = 'Away'
    Debug('red', 'Status ' ..rfid_value_status.. ' gesetzt.')
    setArmedStatus(true)
    if (fibaro:getGlobal('PresentState') ~= nil) then
     fibaro:debug('Benötigte Variable PresentState erkannt.')
     fibaro:setGlobal('PresentState', 'Away')
    else
     fibaro:debug('Benötigte Variable PresentState NICHT erkannt. Wird erstellt.')
     globalVar('PresentState', 'Away')
    end
    local delay = tonumber(fibaro:getValue(sensorID[1], "armDelay"))
      if (delay ~= 0) then
       fibaro:debug('Arm-Delay erkannt. Arm-Delay: ' ..delay)
       delay = delay + 1
       fibaro:sleep(delay*1000)
      end
    if (not armedcheckSensorID(sensorID)) then
      if (own_action) then
        actionsafterArmed()
      end
      sendPush('ALARMANLAGE aktiv!')
    end
  elseif (rfid_value == 0) then
    rfid_value_status = 'Home'
    Debug('green', 'Status ' ..rfid_value_status.. ' gesetzt.')
    setArmedStatus(false)
    if (fibaro:getGlobal('PresentState') ~= nil) then
     fibaro:debug('Benötigte Variable PresentState erkannt.')
     fibaro:setGlobal('PresentState', 'Home')
    else
     fibaro:debug('Benötigte Variable PresentState NICHT erkannt. Wird erstellt.')
     globalVar('PresentState', 'Home')
    end
    if (armedcheckSensorID(sensorID)) then
     if (own_action) then
       actionsafterDisarmed()
     end
     sendPush('ALARMANLAGE inaktiv!')
     openDoor()
    end
  end
else
    fibaro:debug('Szene manuell gestartet. Widget-Support deaktiviert.')
    fibaro:debug('Hier werden noch weitere Funktionen folgen.')
end

Und so wird es im Debug angezeigt: s. Anhang

Vielleicht kann mir dazu jemand einen Tip geben, wo der Fehler liegt. Wäre super!

Gruß
Frank

Debug-Tagreader.jpg

Ach so, habe HC 2, SW 4.140
Gruß

Hi,

bei mir funktionieren die Push-Nachrichten ohne Probleme. Hier wird es sicherlich zu einem Problem mit dem Delay und dem offenen Sensor kommen.

Gruß

Ich habe das gleiche Problem. Push bei Aktivierung geht, Deaktivierung kommt nichts… das war irgendwann einfach weg… :frowning:

Hallo boomx,
also ich habe jetzt den defekten Fensterkontakt ausgetauscht und trotzdem funktioniert die Pushmitteilung beim Unscharfschalten nicht. Am Delay kann es doch eigentlich nicht liegen, da das ja beim Scharfschalten auch abläuft. Die Variable und der Delay werden erkannt und nach Ablauf Delay wird die Push versendet. Aber eben leider nicht beim Unscharfschalten. Da wird die Tür geöffnet (Delay beginnt) und danach Unscharf geschalten. Alle Kontakte sind unscharf, aber es wird keine Push verschickt.
Ich hoffe, Du hast noch eine Idee, woran das liegen könnte.
Gruß

Naja…

Im Debug wird angezeigt, dass die Push verschickt wurde. Ergo wird auch die Funktion aufgerufen. Weiß nicht, wie ich da helfen kann.

Gruß

Das die Fibaro-Server öfters Schluckauf haben und Pushs oder Mails nicht weiterleiten habe ich schon des öfteren festgestellt, deshalb gehen bei mir die ganz wichtigen Meldungen per Telegram raus.
Klar kann auch mal der Telegram oder whatsapp Dienst versagen, aber dass passert eher selten und vor allem wird dass dann kommuniziert.

hey

ich habe gestern das UpDate auf 4.150 durchgeführt. Jetzt bekomme ich wieder eine Pushbenachrichtigung beim deaktivieren :slight_smile:

Hallo boomx,
nee, leider wird ja im Debug bei Unscharf eben kein Versenden der Push angezeigt (s.o.). Es kommt nur “Sensoren werden entschärft, Variable PresentState wurde erkannt” und danach kommt nichts mehr. Ich habe ja das “normale” Script aus dem Forum am Laufen. Du hattest zwischendurch mal eine Bugfix Version am Start, wo die Sensoren nicht mehr geprüft werden und die Bugumgehung auf True stand http://pastebin.com/qQWYBvgc. Soll ich vielleicht die mal versuchen, oder kann man nicht bei Funktion nach Entschärfen eine Funktion mit Sende Push ausführen lassen? Wie müsste das aussehen? Vielleicht kannst Du mir dazu helfen, weil ich mit dem Programmieren von LUA noch so meine Probleme habe?!

Oder ich versuche auch mal das Update auf 4.150, vielleicht läuft es da.
Gruß

@Pumphut50
Du hast im Anhang das Alarmscript kopiert, aber Dein Screenshot ist von dem RFID Script!?

Hallo jeep,
verstehe ich jetzt nicht ganz. In meiner ersten Nachricht habe ich das Script vom RFID reinkopiert. Und der Dateianhang zeigt das Debug vom RFID Script. Das Alarmscript ist ein anderes. Das habe ich gar nicht angefasst.
Gruß

Debug bei Unscharf eben kein Versenden der Push angezeigt (s.o.)

OK, ich war beim Arm-Delay. Wenn da die Funktion nicht aufgerufen wird, dann liegt das an deiner Konfig. Bei mir funktioniert es ohne Probleme.
Bei dir wird die Abfrage armedcheckSensorID(sensorID) keinen TRUE-Wert zurückliefen.

Gruß

@Pumphut50
da haben mich meine Augen richtig hinters Licht geführt, mein Fehler, hab nur den oberen Teil angeschaut. Alles OK was Du gepostet hast.

Hi Frank,
ich würde mal zum debuggen folgende Zeile zwischen den Zeilen 37 und 38 einfügen.
Das sollte Dir den problematischen Sensor anzeigen.

print('Sensor ' … sensorID[j] … ' ist nicht entschärft')

So wie es aussieht ist der disarm-bug in der 4.151 beta wieder aktiv. So vielversprechend die neuen features sind, aber ich würde auf die nächste stable warten.
https://forum.fibaro.com/index.php?/topic/28134-old-disarm-with-delay-bug-is-back/

Hallo Zusammen,

hat ne Weile gedauert (Weihnachten und so), aber nun funktioniert alles wieder perfekt. Der erste Fehler war ein ausgefallener Sensor (Fenster), der aber komischerweise keine Batterie-leer-Mail geschickt hat. Batterie getauscht und scharf/unscharf funktioniert inkl. Auslösung Sirene bei Alarm. Der Hinweis von jeep war goldrichtig. Mit der zusätzlichen Zeile im Debug konnte man sehen, welcher Sensor nicht unscharf geschalten wurde. Die Push kommt nun nach dem Update auf 4.150 auch wieder beim Unscharfschalten. Also alles Bestens! Wenn kein neues Gerät dazukommt, werde ich wohl nie wieder ein Update machen :).
Vielen Dank nochmal an Alle für Eure Kommentare und Hilfestellungen und Allen einen guten Rutsch!
Gruß