QA Beispiel Bedienfeld

Hier ist mal ein Beispiel wie man ein Bedienfeld erzeugen kann.
Hierfür benötigt man eine Oberfläche mit Tastern und Anzeigefeldern.
Hier ist ein QA das genau das nachbildet.

Beispiel Szene zur bedienung und zur Abfrage.

--declaration
{
  conditions = { {
      isTrigger = true,
      operator = "match",
      property = "cron",
      type = "date",
      value = { "*", "*", "*", "*", "*", "*" }
    }, {
      id = 569,
      isTrigger = true,
      operator = "==",
      property = "value",
      type = "device",
      value = 1
    }, {
      id = 172,
      isTrigger = true,
      operator = "<",
      property = "power",
      type = "device",
      value = 30
    }, {
      id = 501,
      isTrigger = true,
      operator = "==",
      property = "value",
      type = "device",
      value = true
    }, {
      id = 569,
      isTrigger = true,
      operator = "==",
      property = "value",
      type = "device",
      value = 2
    }, {
      id = 569,
      isTrigger = true,
      operator = "==",
      property = "value",
      type = "device",
      value = 3
    } },
  operator = "any"
}

--Aktion
--
print("Start Test")

bedienfeld = 569    --ID des QA Bedienfeld

--Abfrage was hat den Trigger ausgelöst
if (json.encode(sourceTrigger.property) == '"execute"') then
    -- print('Szene manuell ausgeführt - UserID: ' ..json.encode(sourceTrigger.id))
    -- Aktion Manuel nicht vorgesehen !
elseif (json.encode(sourceTrigger.property) == '"cron"') then
    -- print("Szene con Cron getriggert")
elseif fibaro.getValue(bedienfeld,"value")  == 1.0 then
    ----Bedienfeld Ausgabewert 1
elseif fibaro.getValue(bedienfeld,"value")  == 2.0 then
    ----Bedienfeld Ausgabewert 2
elseif fibaro.getValue(bedienfeld,"value")  == 3.0 then
    ----Bedienfeld Störung löschen hat getriggert
end

alarmdaten = "Testausgabe"
--Meldung auf der QA-function "Alarmhinweis_ausgeben" Text "Alarmanlage"
fibaro.call(bedienfeld,"Alarmhinweis_ausgeben","Alarmanlage")
--Hier auf einer anderen QA-function
fibaro.call(bedienfeld,"Alarm_ausgeben",alarmdaten)

Dazu benötigt man ein QA


So wird es dargestellt

Das ist der benötigte Code dafür.

--------------------------------------------------------------------------------------------------
--------------------- Ausgabe von Meldungen in 3 Meldefelder -------------------------------------
--------------------------------------------------------------------------------------------------
-- Aufruf in der Szene mit fibaro.call(ID,"Alarm_ausgeben", "Das ist eine Alarmmeldung")
-- ID = ID der QuickApp, "Name der Function", "Auszugebender Text"

function QuickApp:Rauch_ausgeben(arg1)
    --self:debug("Rauchmeldung_ausgeben", arg1)
    self:updateView("label_1", "text", arg1) -- Rauchmeldung auf dem Platz label_1 anzeigen
end

function QuickApp:Heiz_ausgeben(arg1)
    --self:debug("Heizungsmeldung_ausgeben", arg1)
    self:updateView("label_1", "text", arg1) -- Heizungsmeldung auf dem Platz label_1 anzeigen
end

function QuickApp:System_Meldung_ausgeben(arg1)
    --self:debug("Systemmeldung ausgeben", arg1)
    self:updateView("label_1", "text", arg1) -- Systemsmeldung auf dem Platz label_1 anzeigen
end

function QuickApp:Alarmhinweis_ausgeben(arg1)
    --self:debug("Alarmhinweis_ausgeben", arg1)
    self:updateView("label_2", "text", arg1) -- Alarmhinweismeldung auf dem Platz label_2 anzeigen
end
function QuickApp:Alarm_ausgeben(arg1)
    --self:debug("Alarm_ausgeben", arg1)
    self:updateView("label_3", "text", arg1) -- Alarmmeldung auf dem Platz label_3 anzeigen
end




--------------------------------------------------------------------------------------------------
------------------- Abfrage der Tastenbetätigung und Reaktion darauf -----------------------------
--------------------------------------------------------------------------------------------------
-- Abfrage in der Szene per Trigger und dann der Wert als Tastennummer
--Der Wert der Tastennummer bleibt für 500ms bestehen und geht dann auf 0

function QuickApp:betaetigt_1() --Feuermeldung löschen
    --self:debug("Tase - 1")
    self:updateView("label_1", "text", "Keine Meldung")
    self:updateView("button_1", "text", "betätigt")
    fibaro.sleep(500) --Anzeigezeit für betätigt
    self:updateView("button_1", "text", "Feuermeldung")
    self:updateProperty('value', 1) -- binary switch on
    fibaro.sleep(500)
    self:updateProperty('value', 0) -- binary switch off
end
function QuickApp:betaetigt_2() --Systemmeldung löschen
    --self:debug("Tase - 2")
    self:updateView("label_1", "text", "Keine Meldung")
    self:updateView("button_2", "text", "betätigt")
    fibaro.sleep(500) --Anzeigezeit für betätigt
    self:updateView("button_2", "text", "Systemmeldung")
    self:updateProperty('value', 2) -- binary switch on
    fibaro.sleep(500)
    self:updateProperty('value', 0) -- binary switch off
end
function QuickApp:betaetigt_3() --Heizungsmeldung löschen
    --self:debug("Tase - 3")
    self:updateView("label_1", "text", "Keine Meldung")
    self:updateView("button_3", "text", "betätigt")
    fibaro.sleep(500) --Anzeigezeit für betätigt
    self:updateView("button_3", "text", "Heizungsmeldung")
    self:updateProperty('value', 3) -- binary switch on
    fibaro.sleep(500)
    self:updateProperty('value', 0) -- binary switch off
end
function QuickApp:betaetigt_4() --Alarm scharfschalten
    --self:debug("Tase - 4")
    self:updateView("label_3", "text", "versuch scharfzuschalten")
    self:updateView("button_4", "text", "betätigt")
    fibaro.sleep(500) --Anzeigezeit für betätigt
    self:updateView("button_4", "text", "scharfschalten")
    self:updateProperty('value', 4) -- binary switch on
    fibaro.sleep(500)
    self:updateProperty('value', 0) -- binary switch off
end
function QuickApp:betaetigt_5() --Alarmanlage endschärfen
    --self:debug("Tase - 5")
    self:updateView("label_3", "text", "endschärft")
    self:updateView("button_5", "text", "betätigt")
    fibaro.sleep(500) --Anzeigezeit für betätigt
    self:updateView("button_5", "text", "endschärfen")
    self:updateProperty('value', 5) -- binary switch on
    fibaro.sleep(500)
    self:updateProperty('value', 0) -- binary switch off
end

--------------------------------------------------------------------------------------------------
---------------------------- Initialisierung der Quick-App ---------------------------------------
--------------------------------------------------------------------------------------------------

function QuickApp:onInit() --Aufrufe beim Initialisieren der APP
    self:updateView("label_1", "text", "Keine Meldung") -- Text auf platz label_1 ausgaben
    self:updateView("label_2", "text", "Alarmanlage")-- Text auf platz label_2 ausgaben
    self:updateView("label_3", "text", "Alarmanlage endschärft")-- Text auf platz label_3 ausgaben
end

Damit Ihr das nicht eingeben sondern gleich ausprobieren könnt hier das fertige QA.
Bedienfeld-fqa.txt (8,2 KB)

Da leider kein .fqa hochgeladen werden kann habe ich es umbenannt in .txt.
Einfach im Verzeichnis umbenennen in Bedienfeld.fqa und dann unter Geräten einfügen als Quick AP

Viel Spaas damit
Frank