PierLar PierLar skrev:
Tyvärr har jag ingen koll på det. Jag använder mest bara dzVents.

Edit: Läs ovan

// Pierre
Det gör jag med.
Testade blocky när jag började med Domoticz (i maj 2015) men upptäckte att nästlade IF-satser inte fungerade alls. Tack och lov kom dzVents ungefär samtidigt så det fick bli LUA.
Men då hann jag lära mig att det var gott om buggar i Blocky och sedan har jag inte följt utvecklingen.
//Henry
 
L lengmo skrev:
Är det någon som ser felet med denna regel. Problemet är att lampan lyser ALLA dagar i veckan.

[bild]
Just i detta fall bör regeln fungera om du byter "or" mellan lördag och söndag till "and". Men det har varit svårt med nästlade IF-satser i Blocky.
Möjligt att Blocky har blivit bättre men jag rekommenderar starkt LUA och dzVents. Har du inte programmerat förr så är det väl värt besväret att lära sig just detta. Gränserna för vad man kan göra vidgas dramatiskt!
//Henry
 
  • Gilla
PierLar
  • Laddar…
Hej,
Nu har dzVents funktion för att hämta http information ex. json vill dela med mig av mitt "Dagens info" skript. Ett dzVents skript som hämtar information om dagen. funkar på domoticz v3.8837 eller högre

Kod:
--[[

    dzVents skript som hämtar information om dagen,

    Förberedelser:
    Skapa en "dummy" text enhet och ange namnet nedan under "-- inställningar --".
    Skapa två användarvariablar med typ "sträng" och ange namnen nedan under " -- inställningar --".
    
    Framework: dcVents 2.4.x (Domoticz v3.8837 eller högre)
    
]]

return {
    active = {
        true,
    },
    on = {
        timer = {
            'at 6:00',
        },
        httpResponses = {
            'helgdagar'
        },
    },

    execute = function(domoticz, item)
        
        -- inställningar --
        
        local textEnhet = 'Din text enhet'
        local varFlagga = 'Flaggdag'
        local varArbeta = 'Arbetsfri dag'
        
        -- slut inställningar --
        ----- skript -----
        local period = domoticz.time.year..'/'.. domoticz.time.month
        local idag = domoticz.time.day
        local namnsdag = ''
        local helgdag = ''
        local arbetsdag = ''
        
        if (item.isTimer) then
            domoticz.openURL({
                url = 'https://api.dryg.net/dagar/v2.1/'.. period .. '',
                method = 'GET',
                callback = 'helgdagar',
            })
        end
        if (item.isHTTPResponse) then
            if (item.statusCode == 200) then
                if (item.isJSON) then
                    -- hämtar namsdag
                    if item.json.dagar[idag].namnsdag[1] ~= nil then
                        namnsdag ='Namnsdag har ' .. item.json.dagar[idag].namnsdag[1]
                    end
                    if item.json.dagar[idag].namnsdag[2] ~= nil then
                        namnsdag = namnsdag .. ' och '  .. item.json.dagar[idag].namnsdag[2]
                    end
                    if item.json.dagar[idag].namnsdag[3] ~= nil then
                        namnsdag='Namnsdag har ' .. item.json.dagar[idag].namnsdag[1] .. ', ' .. item.json.dagar[idag].namnsdag[2] .. ' och '  .. item.json.dagar[idag].namnsdag[3]
                    end
                    -- helgdag?
                    if item.json.dagar[idag].helgdag ~= nil then           
                        helgdag = 'Det är ' .. item.json.dagar[1].helgdag .. '. '
                    end
                    if item.json.dagar[idag]["helgdagsafton"] ~= nil then           
                        helgdag = 'Det är ' .. item.json.dagar[1].helgdagsafton .. '. '
                    end
                    -- arbetsfri dag?
                    if item.json.dagar[idag]["arbetsfri dag"] == 'Nej' then
                        arbetsdag = 'Vanlig arbetsdag. '
                        if domoticz.variables(varArbeta).value ~= 'Nej' then
                            domoticz.variables(varArbeta).set('Nej')
                        end
                    else
                        arbetsdag = ' och en arbetsfri dag. '                   
                        if domoticz.variables(varArbeta).value ~= 'Ja' then
                            domoticz.variables(varArbeta).set('Ja')
                        end
                    end
                    -- flaggdag?
                    if item.json.dagar[idag].flaggdag == '' then
                        if domoticz.variables(varFlagga).value ~= 'Nej' then
                        domoticz.variables(varFlagga).set('Nej')
                        end
                    else
                        if domoticz.variables(varFlagga).value ~= 'Ja - '.. item.json.dagar[idag].flaggdag ..'' then
                        domoticz.variables(varFlagga).set('Ja - '.. item.json.dagar[idag].flaggdag)
                        end
                    end
                    domoticz.devices(textEnhet).updateText('helgdag .. arbetsdag .. namnsdag)
                    domoticz.log(helgdag .. arbetsdag .. namnsdag, domoticz.LOG_FORCE)
                end
            else
                domoticz.log('<font color="#CC3300">Det är problem att hantera din begäran</font>', domoticz.LOG_ERROR)
            end
        end
        
    end
}
 
  • Gilla
Affeunbk och 1 till
  • Laddar…
Hej

Är det någon som har kunskapen att hjälpa mig med en räknare ?
Jag har funderat ett tag men saknar kunskap hur logiken ska byggas samt programmering

Mitt mål är att räkna varje gång jag eldar i vedspisen
Förutsättningen är att jag har en tempgivare vid vedspisen varje gång temperaturen är högre än 28 grader så ska det skapas uppräkning räknesnurran

Går det att använda DZvents ?
om hur går jag tillväga

Ska jag skapa en Dummy och använda tempgivaren som givare om givare är högre än 28 =räkna +1

Digital räknare för vedspis med 0.000 kWh visning och tidsstämpel "Last Seen".
 
A Affeunbk skrev:
Hej

Är det någon som har kunskapen att hjälpa mig med en räknare ?
Jag har funderat ett tag men saknar kunskap hur logiken ska byggas samt programmering

Mitt mål är att räkna varje gång jag eldar i vedspisen
Förutsättningen är att jag har en tempgivare vid vedspisen varje gång temperaturen är högre än 28 grader så ska det skapas uppräkning räknesnurran

Går det att använda DZvents ?
om hur går jag tillväga

Ska jag skapa en Dummy och använda tempgivaren som givare om givare är högre än 28 =räkna +1

[bild]
dzVents går det att fixa t.ex:
Kod:
return {
   
    active = {
        true,
    },
    on = {
        devices = {
            'Temperatur'
        }
    },
    execute = function(domoticz, device)
       
        local fireCounter = domoticz.devices('Räknare')
       
        domoticz.log(device.name .. ' har ändrats. ' .. device.temperature, domoticz.LOG_FORCE)
       
        if (device.temperature >= 28 and device.temperature <=28.5) then
           fireCounter.updateCounter(fireCounter.counter + 1)
           domoticz.log('Device ' .. device.name .. ' is between 28 and 28.5 degrees', domoticz.LOG_FORCE)
        end
    end
}
 
  • Gilla
Affeunbk
  • Laddar…
A Affeunbk skrev:
Hej

Är det någon som har kunskapen att hjälpa mig med en räknare ?
Jag har funderat ett tag men saknar kunskap hur logiken ska byggas samt programmering

Mitt mål är att räkna varje gång jag eldar i vedspisen
Förutsättningen är att jag har en tempgivare vid vedspisen varje gång temperaturen är högre än 28 grader så ska det skapas uppräkning räknesnurran

Går det att använda DZvents ?
om hur går jag tillväga

Ska jag skapa en Dummy och använda tempgivaren som givare om givare är högre än 28 =räkna +1

[bild]
Jag skulle nog lösa problemet såhär:

Först skulle jag skapa den virtuella räknare som du föreslår:

Interface för en virtuell räknare "Eldat" visar 0 gånger, temperatur 45 och senast sedd datum.

Sedan skulle jag skapa en "Användarvariabel" som jag skulle kalla "Eldar". Det skulle vara en heltalsvariabel som jag skulle växla mellan 0 och 1. (FALSKT/SANT). Den ska slå om till 1 varje gång temperaturen uppnår minst 30 grader och återgå till 0 när temperaturen åter faller under 30 grader.
Sedan skulle jag räkna omslagen till SANT.

Därav skulle jag skriva denna LUA-kod för dzVents, som gör just det.
Skärmdump av LUA-kod för ett automatiserat system som räknar antalet gånger temperaturen överstiger 30 grader.
Inloggade ser högupplösta bilder
Skapa konto
Gratis och tar endast 30 sekunder


OBS! Koden är inte testad och jag har aldrig använt virtuella räknare men den borde funka!
//Henry

Fick se ett fel! på rad 16 ska det vara == istället för =!
 
Redigerat:
  • Gilla
Affeunbk
  • Laddar…
Stort tack för bidragen

Nu ska jag testa era förslag
Återigen tack

Återkommer med resultat
 
  • Gilla
HenFre
  • Laddar…
A Affeunbk skrev:
Stort tack för bidragen

Nu ska jag testa era förslag
Återigen tack

Återkommer med resultat
Gick nog lite för fort! Kom på ett fel till så jag lägger ut en korrigerad LUA-kod.
Hoppas jag inte gjort någon miss i denna:
Skärmdump av LUA-kod för hemautomation som övervakar temperatur vid en eldstad.
Inloggade ser högupplösta bilder
Skapa konto
Gratis och tar endast 30 sekunder

//Henry
 
  • Gilla
Affeunbk
  • Laddar…
A Affeunbk skrev:
Hej

Nu har jag hunnit kommit igång med era förslag,stort tack för engagemanget :)
@PierLar
@HenFre
PierLar´s förslag räknar antal gånger temp överstiger ett värde(Antaleldningar)


Däremot får jag inte @HenFre förlag att fungera,kanske att jag knackat fel,bifogar koden


[bild]





Kod:
---Eldräknare---[/URL][/B][/URL][/B][/URL][/B]
[B][URL='[länk] antal gånger temp överstiger värde x

return {
        active = true,
        on = {
            device = {
                'Koket'
            }
        },
        execute = funktion(domomicz)
     
            if domoticz.device('Koket').temperature >= 23 then
                if domomicz.variables('Èldar').value == 0 then
                   domomicz.variables('Eldar').set (1)
                   domomicz.device('Koket').updateCounter(domoticz.device(Èldat`).counter + 1)
            end
            else
                if domomicz.variables('Eldar').value > 0 then
                    domomicz.variables('Eldar').set(0)
                end
            end
        end
    }



[bild]
Du har inte riktigt följt vad jag skrev.
Du måste se skillnaden på "Eldar" som håller reda på om du eldar nu eller inte eldar nu och på "Eldat" som är en virtuell device som ett räkneverk och som håller reda på hur många gånger du har eldat. Du kan givetvis kalla "Eldat" för "Antaleldningar" men jag tycker ändå att du ska sätta upp den med sorten "Gånger".

"Eldar" ska inte vara en virtuell device. Det ska vara en enkel heltalsvariabel i "Inställningar" -> "Fler inställningar" -> "Användarvariabler". Den är 1 när du håller på och eldar och 0 när du inte eldar.

Sedan är din rad 19 helt avvikande från vad jag skrev. Den raden ska ju räkna upp devicen "Eldat" eller om du vill "Antaleldningar".
//Henry
 
  • Gilla
Affeunbk
  • Laddar…
A Affeunbk skrev:
Hej

Nu har jag hunnit kommit igång med era förslag,stort tack för engagemanget :)
Som HenFre säger ovan så har du missat några saker. Här kommer fler förslag::D

Med Variablar:
Kod:
-- Eldningsräknare

return {
 
    active = {
        true,
    },
    on = {
        devices = {
            'Temperatur'
        }
    },
    execute = function(domoticz, device)
 
        local fireCounter = domoticz.devices('Räknare')
        local eldar = domoticz.variables('Eldar')
 
        if (device.temperature >= 28 and eldar.value == 0) then
            eldar.set(1)           
            fireCounter.updateCounter(fireCounter.counter + 1)
        else
            if (device.temperature < 28 and eldar.value == 1) then
                eldar.set(0)
            end
        end
    end
}

Eller med en virtuell enhet på/av knapp:
Kod:
-- Eldningsräknare

return {
 
    active = {
        true,
    },
    on = {
        devices = {
            'Temperatur'
        }
    },
    execute = function(domoticz, device)
 
        local fireCounter = domoticz.devices('Räknare')
        local eldar = domoticz.devices('Eldar')
 
        if (device.temperature >= 28 and eldar.state == 'Off') then
            eldar.switchOn()           
            fireCounter.updateCounter(fireCounter.counter + 1)
        else
            if (device.temperature < 28 and eldar.state == 'On') then
                eldar.switchOff()
            end
        end
    end
}
 
Redigerat:
  • Gilla
Affeunbk
  • Laddar…
Hej
Sommaren slog till och tiden har prioriterats till annat (y)

Jag har ikväll testat att skapa
@HenFre
HenFre HenFre skrev:
"Eldar" ska inte vara en virtuell device. Det ska vara en enkel heltalsvariabel i "Inställningar" -> "Fler inställningar" -> "Användarvariabler". Den är 1 när du håller på och eldar och 0 när du inte eldar.
men är högst osäker om jag tänker rätt,är det det rätt väg som jag försöker med heltal och ange 1

Som jag tolkar svaret är det samma princip med ditt förslag @PierLar








Användarvariabler
Skärmdump av användargränssnitt för hantering av variabler med tabell och redigeringsformulär.

Räknare
Skärmbild av en dialogruta för att redigera en enhet med inställningar för en energiräknare i ett hemautomationssystem.
Inloggade ser högupplösta bilder
Skapa konto
Gratis och tar endast 30 sekunder






Är evigt tacksam att ni bidrar med eran kunskap :ok:
 
A Affeunbk skrev:
Hej
Sommaren slog till och tiden har prioriterats till annat (y)

Jag har ikväll testat att skapa
@HenFre


men är högst osäker om jag tänker rätt,är det det rätt väg som jag försöker med heltal och ange 1

Som jag tolkar svaret är det samma princip med ditt förslag @PierLar


Ja, det är en sådan variabel du ska skapa. Men du bör väl initialt sätta den till 0 om du inte råkar elda när du kör igång.
//Henry





Användarvariabler
[bild]

Räknare
[bild]





Är evigt tacksam att ni bidrar med eran kunskap :ok:
 
  • Gilla
Affeunbk
  • Laddar…
A Affeunbk skrev:
Hej
Sommaren slog till och tiden har prioriterats till annat (y)

Jag har ikväll testat att skapa
@HenFre


men är högst osäker om jag tänker rätt,är det det rätt väg som jag försöker med heltal och ange 1

Som jag tolkar svaret är det samma princip med ditt förslag @PierLar








Användarvariabler
[bild]

Räknare
[bild]





Är evigt tacksam att ni bidrar med eran kunskap :ok:
Nu när jag kom till en dator ser jag att jag råkade skriva svaret inne i citatet! Beklagar men det kan bil fel i mobiltelefonen ibland! :)

Såhär är svaret om Du inte såg felet:

Ja, det är en sådan variabel du ska skapa. Men du bör väl initialt sätta den till 0 om du inte råkar elda när du kör igång.
//Henry
 
  • Gilla
Affeunbk
  • Laddar…
PierLar PierLar skrev:
Skicka med https funkar med dzVents också du använder "domoticz.openURL(url)" då får du med trafiken i domoticz logg.
för att skicka t.ex sms med clickatell via https/json:
Kod:
domoticz.openURL(https://platform.clickatell.com/messages/http/send?apiKey=xxxxxxxxxxxxxxxx==&to=xxxxxxxxxxx&content=Test+message+text)
Tog mig tid igen till att titta på kopplingen mellan Domoticz och Safeland (tidigare TRYGVE). Vet inte om jag hade huvudet under armen förra gången eller om de har utvecklat dokumentationen men nu hoppade det igång.
Nu kommer alla inbrottslarm från Domoticz generera ett säkerhetslarm i mina grupper på Safeland. Eftersom vi har grannsamverkan i vårt bostadsområde så blir det betydligt mycket snabbare än alla vaktbolag.

Såhär enkelt blev det:
-- --------------------
-- Larma på Safeland --
-- --------------------
-- Skickar larm till Safeland.

return {
active = true,
on = {
devices = {
'Larmutlöst Ljud'
}
},
execute = function(domoticz)

if domoticz.devices('Larmutlöst Ljud').state == "On" then
domoticz.openURL({
url = 'https://api.trygve.se/rest/alarm/<Safelands personliga säkerhetsnyckel>',
method = 'POST'
})
end
end
}
 
  • Gilla
Per Kall och 2 till
  • Laddar…
Vi vill skicka notiser för ämnen du bevakar och händelser som berör dig.