--[[ 29.10.2017 Beta V0.1 Min. u. Max. Wert eines wählbaren Sensors wird berechnet und kann bei Bedarf über ein Schalter angesagt werden. Manuelles Rücksetzen der Min. u. Max. Wert über einen Schalter. Setup unter Zusatzfunktionen: Auswahl des Sensor Auswahl der Schalter zur Ansage von Min.- und Max.-Wert Auswahl des Schalters für das Rücksetzen der Min-Max-Werte --]] -------------------------------------------------------------------------------- -- Locals für die Application local P, Punit, Pdecimals, Pmax, Pmin local sensorLalist = {"..."} local sensorIdlist = {"..."} local sensorPalist = {"..."} local sensorunitlist = {"..."} -------------------------------------------------------------------------------- -- Speichert das Setup im Modellspeicher local function I_sensorChanged(value) Isens=value Isensid=value Isenspa=value system.pSave("Isens",Isens) system.pSave("Isensid",Isensid) system.pSave("Isenspa",Isenspa) Iid = string.format("%s", sensorIdlist[Isensid]) Iparam = string.format("%s", sensorPalist[Isenspa]) if (Iid == "...") then Iid = 0 Iparam = 0 end system.pSave("Iid", Iid) system.pSave("Iparam", Iparam) end local function MinSwitchChanged(value) Switch_Min = value system.pSave("Switch_Min", Switch_Min) end local function MaxSwitchChanged(value) Switch_Max = value system.pSave("Switch_Max", Switch_Max) end local function ResetSwitchChanged(value) Switch_Reset = value system.pSave("Switch_Reset", Switch_Reset) end -------------------------------------------------------------------------------- -- Setup Fesnster local function initForm(subform) form.addRow(2) form.addLabel({label= "Sensor Min.-Max."}) form.addSelectbox(sensorLalist,Isens,true,I_sensorChanged) form.addRow(2) form.addLabel({label="Max. Switch",width=180}) form.addInputbox(Switch_Max, true, MaxSwitchChanged) form.addRow(2) form.addLabel({label="Min. Switch",width=180}) form.addInputbox(Switch_Min, true, MinSwitchChanged) form.addRow(2) form.addLabel({label="Reset Switch",width=180}) form.addInputbox(Switch_Reset, true, ResetSwitchChanged) end --------------------------------------------------------------------------------- -- Runtime Funktionen, lesen Sensoren und berechne Pmin and Pmax local function loop() local sensor_I = system.getSensorByID(Iid, Iparam) local Sw_Max_val = system.getInputsVal(Switch_Max) local Sw_Min_val = system.getInputsVal(Switch_Min) local Sw_Reset_val = system.getInputsVal(Switch_Reset) if(sensor_I and sensor_I.valid) then P = sensor_I.value Punit = sensor_I.unit Pdecimals = sensor_I.decimals if P > Pmax then Pmax = P end if P < Pmin then Pmin = P end end if(not system.isPlayback()) then if (Sw_Max_val == 1) then system.playNumber(Pmax, Pdecimals, Punit ) end if (Sw_Min_val == 1) then system.playNumber(Pmin, Pdecimals, Punit ) end if (Sw_Reset_val == 1) then system.playBeep (2, 3000, 100) Pmax = 0 Pmin = 0 end end end ------------------------------------------------------------------------- -- Application initialization local function init() -- Erfasst einmal alle Sensoren welche vorhanden sind local sensors = system.getSensors() for i,sensor in ipairs(sensors) do if (sensor.label ~= "") then table.insert(sensorLalist, string.format("%s", sensor.label)) table.insert(sensorIdlist, string.format("%s", sensor.id)) table.insert(sensorPalist, string.format("%s", sensor.param)) end end --- Default Werte sind die des Linkvaro (Pro) Switch_Min = system.pLoad("Switch_Min") Switch_Max = system.pLoad("Switch_Max") Switch_Reset = system.pLoad("Switch_Reset") Isens = system.pLoad("Isens",0) Isensid = system.pLoad("Isensid",107556) Isenspa = system.pLoad("Isenspa",1) Iid = system.pLoad("Iid",107556) Iparam = system.pLoad("Iparam",1) P = 0 Pmax = 0 Pmin = 0 system.registerForm(1,MENU_APPS,"Setup Min/Max-Ansage",initForm) end -------------------------------------------------------------------------------- return {init=init, loop=loop, author="user", version="0.1", name= "MinMaxAnsage"}