Gecombineerde sensor in Domoticz splitsen

Voorbeeld van een gecombineerde sensor

Een gecombineerde sensor in Domoticz geeft twee of meerdere waarden. Een voorbeeld hiervan is de temperatuursensor die ook vaak het percentage van de luchtvochtigheid aangeeft. Soms is het gemakkelijker om enkelvoudige sensoren te hebben. In dit artikel leggen we uit hoe het mogelijk is een gecombineerde sensor kunt opsplitsen in twee aparte (virtuele) sensoren. Als voorbeeld nemen we een temperatuur + luchtvochtigheidssensor.

 

Benodigdheden

Dummy hardware en sensoren

Allereerst moeten we een dummy hardware aanmaken. Ga naar Setup > Hardware. Bedenk een logische naam en kies bij Type voor Dummy (Does nothing, use for virtual switches only). Data Timeout kun je op Disabled laten staan. Klik op Add om de dummy hardware toe te voegen.

 

Klik nu op Create Virtual Sensor (donkerblauw). Bedenk een handige naam voor de sensor en kies bij Sensor Type voor “Temperature”. Maak nog een virtuele sensor aan maar dan met het Sensor Type “Humidity”. Ga nu naar Setup > Devices, hier zal je de zojuist aangemaakte sensoren zien staan. Beide virtuele sensoren hebben een idx-nummer gekregen. Noteer de idx-nummer van beide sensoren en klik op het groene pijltje om de sensoren toe te voegen (in onderstaande afbeelding zijn de pijltjes blauw, aangezien ik de sensoren al toegevoegd heb). Je vindt ze dan terug op het tabblad “Temperature”.

 

 

LUA-script

Hieronder vind je het benodigde LUA-script.

Op regel 3 wijzig je “Badkamer” naar de naam van jouw gecombineerde sensor (2).

Op regel 4 en 5 zet je de idx-nummers van jouw virtuele sensoren neer (1).

Sla dit script op met de naam script_time_scrapesensor.lua in de folder /home/pi/domoticz/scripts/lua/. Het script zal nu automatisch iedere minuut draaien en de twee virtuele sensoren updaten.


Het resultaat: één sensor met de temperatuur en één sensor met de luchtvochtigheid:

 

Uiteraard kun je dit script ook als basis gebruiken voor andere gecombineerde sensoren.

 

6 gedachten over “Gecombineerde sensor in Domoticz splitsen

  • 24 augustus 2018 om 14:57
    Permalink

    Ik heb dit script wat aangepast om de gecombineerde sensor van mijn Youless energiemonitor uit te lezen met Domoticz. De Youless heeft de volgende data: 0/25983387;945. Het eerste getal is de totaalteller in Wh en het tweede getal is het actuele gebruik in Watt.
    Mijn script:

    ——————————————————————————–
    commandArray = {}

    idxc = ‘Zonnepanelen’ — name combined sensor
    idxte=’67’ — idx of virtuel sensor total energy
    idxap=’68’ — idx of virtuel sensor actueel power

    — Sensor calculates new values every 10 secs

    –Gather data from combined sensor:
    te, ap = otherdevices_svalues[idxc]:match(“([^;]+);([^;]+)”)
    te = tonumber(te); te = te/1000;
    ap = tonumber(ap);

    — Write data to vertuel sensors

    commandArray[‘UpdateDevice’] = ”..idxte..’|0|’..te..”
    commandArray[‘UpdateDevice’] = ”..idxap..’|0|’..ap..”

    — debug
    — print(te);
    — print(ap)

    return commandArray
    —————————————————————————————————

    Nu gebeurt het dat de eerste virtuele sensor niet weggeschreven wordt, in het script hierboven dus die van ..te..
    Wissel ik beide regels, dan wordt nog steeds de bovenste niet weggeschreven, dan dus ..ap..
    Beide variabelen krijgen wel een waarde.

    iemand een idee hoe dit komt?

    Beantwoorden
    • 24 maart 2020 om 13:45
      Permalink

      Beste Geert,

      Ben bezig met het zelfde fenomeen.
      Heb jij intussen je probleem opgelost?
      Zo ja dan hoor ik het graag

      Beantwoorden
      • 25 maart 2020 om 21:07
        Permalink

        Henk,
        Ik ben zelf aan het programmeren met dzVents.
        Ik heb een script dat al mijn sensors vult. Ik heb het commentaar wat aangevuld. Zie hierna.
        Groet,
        Geert

        –[[
        Dit script vult de sensoren voor de kWh tellers, de gasmeter en berekent het actuele elektriciteitsgebruik.

        Gebruikte devices:
        Idx Name [unit] (Hardware, Type, SubType)
        ———————————————————————–
        1 Zonnepanelen (YouLess, Youless meter, Youless counter)
        2 Slimme meter, Energy (Slimme meter, P1 Smart Meter. Enery)
        4 Slimme meter, Gas (Slimme meter, P1 Smert Meter, Gas)
        67 Zonnepanelen [kWh] (Dummy, General, Custom Sensor)
        69 E -> laag [kWh] (Dummy, General, Custom Sensor)
        70 E -> hoog [kWh] (Dummy, General, Custom Sensor)
        71 E <- laag [kWh] (Dummy, General, Custom Sensor)
        72 E <- hoog [kWh] (Dummy, General, Custom Sensor)
        167 Gasmeter [m3] (Dummy, General, Custom Sensor)
        212 E netto gebruik [W] (Dummy, Usage, Electric)
        –]]

        return {
        on = {
        devices = {1},
        },

        execute = function(domoticz, device)
        — update 4 totaaltellers van de kWh-meter
        domoticz.devices(69).updateCustomSensor(math.floor(domoticz.devices(2).usage1/1000+0.5))
        domoticz.devices(70).updateCustomSensor(math.floor(domoticz.devices(2).usage2/1000+0.5))
        domoticz.devices(71).updateCustomSensor(math.floor(domoticz.devices(2).return1/1000+0.5))
        domoticz.devices(72).updateCustomSensor(math.floor(domoticz.devices(2).return2/1000+0.5))
        — bereken het actuele gebruik (afname + productie zonnepanelen) en update
        domoticz.devices(212).updateEnergy(domoticz.devices(2).usage – domoticz.devices(2).usageDelivered + domoticz.devices(1).powerYield)
        — update de totaalteller van gasmeter
        domoticz.devices(167).updateCustomSensor(math.floor(domoticz.devices(4).counter))
        — update de totaalteller van de zonnepanelen
        domoticz.devices(67).updateCustomSensor(math.floor(domoticz.devices(1).counterDeliveredTotal/1000+0.5))

        end
        }

        Beantwoorden
  • 26 februari 2019 om 07:30
    Permalink

    Beste Ehoco,

    Supergave scripts. Ik heb de meeste ook toegepast om te experimenteren en te leren.
    Ik ben nu alleen op zoek naar een script om van 2 losse sensoren 1 gecombineerde sensor te maken zodat ik die waarden in 1 grafiek zie staan.

    Dit is me echter nog niet gelukt. Hebben jullie daar ook een hint voor of een voorbeeld?

    Alvast bedankt.

    Beantwoorden
  • 11 februari 2020 om 23:45
    Permalink

    Werkt mooi
    Als je voor de naam van de temp/luchtvochtigheid een $ zet dan wordt hij niet zichtbaar bij temperatuur
    maar blijft verborgen, maar wel actief.

    Beantwoorden
  • 5 april 2020 om 12:55
    Permalink

    Werkt prima. Ik heb het script gebruikt om mijn buiten sensor T/H te splitsen met het idee om de afwijking in H te corrigeren. Bij de gesplitst T kun je wel een correctie invoeren, maar bij H echter niet. Iemand een idee hoe dit op te lossen? Kun je mogelijk in het script zelf een correctie invoeren?

    Beantwoorden

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *