• Tag Archieven app
  • ESP32 gebaseerde doe-het-zelf digitale uitlezing

    Deze DRO-adapter is gebaseerd op de nieuwe 32-bit ESP32-module en maakt gebruik van de tweede generatie universele TouchDRO-firmware die gegevens kan decoderen van kwadratuur-encoders, iGaging 21-bits schalen, iGaging absolute schalen en Shahe BIN6-schalen. In feite is de firmware functioneel identiek aan de versie die wordt geleverd op de voorgemonteerde iGaging- en Shahe-schaaladapters.

    Het circuit is identiek aan dat van de TouchDRO DIY Kit en is geoptimaliseerd voor 5V- en 3,3V-weegschalen. Dit omvat glazen/magnetische DRO-uitleesschalen, iGaging EZ-View DRO, iGaging DigiMag DRO, iGaging Absolute DRO lineaire uitleesschalen en Shahe Liner Remote DRO-uitleesschalen. Dit ontwerp is gekozen vanwege de goede balans tussen doe-het-zelfvriendelijk zijn en goede geluids- en storingsbestendigheid.

    Het bundelen van deze schakeling op een prototypebord is nogal een uitdaging vanwege het aantal vereiste point-to-point-verbindingen. Daarom gaan we ervan uit dat iedereen die deze constructie uitvoert, al een goed begrip van elektronica en goede soldeervaardigheden heeft. Er zijn dan ook geen gedetailleerde montage-instructies, omdat er van wordt uitgegaan dat je het meegeleverde schakelschema kunt lezen en volgen.

    Circuitoverzicht

    De kern van deze adapter wordt gevormd door het ESP32 DevKit V1-ontwikkelbord. Het is een op zichzelf staand circuit dat de ESP32 WROOM-module, USB-naar-seriële interface, spanningsregelaar en status-LED’s omvat. ESP32 WROOM heeft twee krachtige processors, hardware-kwadratuurdecoders, hardware-toerenteller en ingebouwde BlueTooth-transceiver. Bovendien is het erg goedkoop en gemakkelijk verkrijgbaar in de meeste delen van de wereld.

    Als gevolg hiervan is het een geweldig platform voor een doe-het-zelf-DRO. Het heeft één opmerkelijk nadeel: het is niet ontworpen om rechtstreeks met de buitenwereld te communiceren, dus de invoerpinnen hebben geen ingebouwde Schmitt-triggers, enz.. Als gevolg hiervan kunnen we de uitleesschaal niet rechtstreeks aansluiten en in plaats daarvan, moeten een geschikt ingangsconditioneringscircuit bouwen.

    ESP32 Devkit V1 Pinout - colandino.nl
    ESP32 Devkit V1 Pinout – colandino.nl

    Het circuit voor deze doe-het-zelf-adapter maakt gebruik van twee 74HC14 hex inverterende Schmitt-triggers om een ​​robuuste en ruisbestendige conditionering van het ingangssignaal te bieden. In wezen heeft elke schaalingangslijn een serieweerstand van 4,7 KOhm en een NOT-poort met een Schmitt-trigger. De lijn wordt door een weerstand van 47 KOhm omhoog getrokken naar de schaal Vcc.

    De serieweerstand is nodig om het IC tegen overspanning te beschermen. Omdat de 74HC14 wordt gevoed door een voeding van 3,3 V (dus het hoge uitgangssignaal is 3,3 V), ligt de ingang op de schaal van 5 V buiten de aanbevolen hoge ingangsspanning. Om het IC tegen schade te beschermen, voegen we een weerstand van 4,7 K toe, die de stroom beperkt tot een niveau dat veilig kan worden verwerkt door de interne diodes van de chip.

    Bovendien heeft elke schaalingang, evenals de toerenteller- en probleemingangen, 0,1 uF bypass-condensatoren. Deze zijn nodig om de ruis op de voedingslijn van de weegschaal te verminderen. Deze condensatoren moeten zo dicht mogelijk bij de schaalingangen worden geïnstalleerd. Op dezelfde manier bevindt zich naast elk van de 74HC14 een bypass-condensator van 0,1 uF.

    Ten slotte zijn er twee elektrolytische condensatoren van 100 uF, één op de 3,3 V-voedingsrail en één op de 5 V-voedingsrail. Als u van plan bent slechts één van die rails te gebruiken om de weegschaal van stroom te voorzien, kunt u de tweede condensator achterwege laten.

    Circuitschema

    Schema TouchDRO uitleesschaal adapter kit
    Schema TouchDRO uitleesschaal adapter kit

    Onderdelen / Stuklijst

    Deze DIY (Doe Het Zelf) DRO-kit bevat alle componenten die nodig zijn om een ​​TouchDRO-adapter te monteren.

    Waarde Beschrijving Aantal Referentie
    ESP32 Devkit V1 ESP32 WROOM Dev. Kit 1 U1
    74xx14 SN74HC14N Hex Schmitt Trigger 2 IC1, IC2
    Condensator, 100 uF Condensator elektrolytisch, 100uF, 35V 2 C14, C15
    Condensator, 0.1 uF Condensator keramisch, 0,1uF 50V 8 C1, C3, C5, C7, C9, C10, C11 en C12
    Weerstand, 4,7 KOhm Metaalfilmweerstand, 4,7 KOhm, 1/4W, 5% 10 R1 tot en met R10
    Weerstand, 47 KOhm Metaalfilmweerstand, 47 KOhm, 1/4W, 5% 10 R21 tot en met R30

    Configuratie schaalinvoer

    Voor elke ingang moet u de Vcc-pin op de juiste voedingsrail aansluiten. Als u het schema volgt, worden hierdoor ook de pull-up-weerstanden op dezelfde rail aangesloten (dit is erg belangrijk; anders kunt u uw uitleesschaal permanent beschadigen). Bovendien moet op iGaging 21-bits weegschalen de “CLOCK OUT”-pin zijn aangesloten (jumpers zijn gemarkeerd R11-R14 in het schema).

    Veel voorkomende configuraties zijn als volgt:

    • Glazen en magnetische uitleesschalen gebruiken een 5V-rail; Lijn “CLOCK OUT” (R11-R14) niet aangesloten
    • iGaging EZ-View DRO en iGaging DigiMag gebruiken 3,3V-rail; “CLOCK OUT”-lijn aangesloten
    • iGaging Absolute DRO en Shahe Remote DRO-uitleesschalen gebruiken een 3,3V-rail; “CLOCK OUT”-lijn niet aangesloten

    Opmerking: Hoewel het 3,3V-signaal afkomstig van capacitieve uitleesschalen [over het algemeen] veilig is voor ESP32, kunt u ze niet rechtstreeks aansluiten. Allereerst verwacht de firmware een omgekeerd signaal en zal niet werken zonder een “NOT”-poort. Ten tweede zou de uitlezing zonder de Schmitt-trigger te haperend kunnen zijn. Ten slotte kunnen eventuele geluidspieken boven de 3,6 V de ingangspinnen van de ESP32 permanent beschadigen.

    DRO-firmware

    De firmware die nodig is om deze DIY DRO-adapter uit te voeren, kunt u vinden in de sectie Downloads (Universele Firmware – 32 Bit). Deze ESP32-firmware is geschreven in low-level C, niet in Arduino. Om het in de ESP32-module te flashen, moet u Espressif tool chain callend IDF installeren. Het proces is ingewikkelder dan het uploaden van een schets naar een Arduino en vereist de installatie van USB-stuurprogramma’s en een paar opdrachtregelprogramma’s. De documentatie is te vinden op de Espressif-site.

    Installatie onder Linux Mint ESP-IDF

    Om te controleren of de Espressif IDF correct is geïnstalleerd, voert u de volgende opdracht uit: esptool.py versie Uw resultaat zou er ongeveer zo uit moeten zien:

    Voer uit in je terminal: esptool.py version
    Voer uit in je terminal: esptool.py version
    Voorbeelduitvoer van de bovenstaande opdracht

    Zodra u een werkomgeving heeft, decomprimeert u de gedownloade firmware in een map en voert u op de opdrachtregel het volgende uit:

    esptool.py \
    -p /dev/ttyACM0 \
    -b 460800 \
    --before default_reset \
    --after hard_reset \
    --chip esp32 write_flash \
    --flash_mode dio \
    --flash_size detect \
    --flash_freq 40m \
    0x1000 bootloader.bin \
    0x8000 partition-table.bin \
    0x10000 touchdro-universal-32-v14.bin

    Afhankelijk van uw besturingssysteem zullen de parameters waarschijnlijk variëren. Met name de parameter -p die de poort specificeert.

    • Op een op UNIX/Linux gebaseerd besturingssysteem kunt u ‘ls /dev/TTy*‘ uitvoeren om alle TTY-apparaten te zien voordat u ESP32 op de USB-poort aansluit, en daarna hetzelfde commando uitvoeren en het verschil vinden (wat de poort zal zijn voor ESP32).
      In de meeste gevallen zal dit “TTy……….” zijn.
    • Op Windows vindt u de poort die door ESP32 wordt gebruikt in het gedeelte “Seriële poorten” van Apparaatbeheer.

    Bouwtips en testen

    Het bouwproces voor deze adapter kent twee uitdagingen:

    • Het flashen van de firmware op ESP32 is een ingewikkeld proces
    • Het ingangscircuit vereist een aantal point-to-point-verbindingen

    Om het testen te vereenvoudigen, wilt u het misschien in deze twee fasen opdelen en elke fase afzonderlijk testen.

    ESP32-firmware

    ESP32 is een op zichzelf staande module en kan de TouchDRO-firmware prima uitvoeren zonder de ondersteunende circuits. Daarom zou uw eerste stap het flashen van de firmware op de module moeten zijn en ervoor zorgen dat deze werkt zoals verwacht:

    1. Schakel de module in via USB en controleer of de rode LED brandt en de blauwe LED knippert
    2. Koppel de module met uw Android-tablet en zorg ervoor dat het koppelingsproces slaagt. Apparaatnaam in de BT-apparaatlijst moet “TouchDRO DIY” zijn
    3. Open de TouchDRO-applicatie en sluit deze aan op de module
    4. Laat TouchDRO minimaal een minuut draaien. De applicatie mag de verbinding niet verliezen

    Optioneel kunt u een BlueTooth-terminaltoepassing (zoals BlueTerm) installeren en het volgende doen:

    1. Ontkoppel de TouchDRO-applicatie (indien aangesloten)
    2. Maak verbinding met de DRO-adapter via BlueTerm
    3. U zou een gegevensstroom moeten zien die x0;y0;z0;w0;t0;p0;
    4. Zoek de sondepin (zie pin-out hierboven) en sluit deze kort met de aarde
    5. De waarde voor p in de datastroom moet veranderen naar p1; en de stroom zou moeten versnellen
    6. Koppel de pin los van de aarde; p moet terugkeren naar p0;

    Als de tests slagen, werkt de firmware zoals verwacht.

    Ingangscircuit

    Nadat u het ingangscircuit hebt gebouwd (voordat u iets op de ESP32-module aansluit), is het een goed idee om elke lijn te testen om er zeker van te zijn dat de verbindingen werken.

    Hiervoor kunt u het volgende doen:

    1. Sluit 5V, 3,3V en aarde aan op de ESP32-module (zie pin-out hierboven). Als alternatief kunt u een bankvoeding of zelfs batterijen gebruiken.
    2. Controleer met behulp van een voltmeter de spanning op elke ingangspin. Omdat de pinnen omhoog zijn getrokken naar Vcc, moet de spanning zeer dicht bij de nominale Vcc liggen (5V of 3,3V, afhankelijk van uw configuratie)
    3. Controleer met behulp van een voltmeter de spanning op elke uitgang (de lijn die op ESP32 wordt aangesloten). De spanning moet dichtbij 0V liggen, aangezien 74HC14 een inverterende Schmitt-trigger is.
    4. Aard elke ingangslijn en controleer de spanning aan de uitgang. Het moet dichtbij de 3,3V liggen

    Als al deze tests slagen, werkt uw schakeling zoals verwacht en kunt u deze nu aansluiten op de ESP32-module. Controleer anders uw verbinding opnieuw, los eventuele problemen op en voer de test opnieuw uit.

    Uitleesschaal bedrading

    Glazen en magnetische uitleesschalen zijn over het algemeen zeer goed bestand tegen storende lijnruis enz. De 0,1 uF-condensatoren zijn niet strikt noodzakelijk, maar bieden wel enige bescherming tegen ruispieken op de toevoerlijn.
    Voor capacitieve uitleesschalen zijn de bypass-condensatoren erg belangrijk, omdat deze uitleesschalen zeer gevoelig zijn voor ruis en storingen. Idealiter zouden deze condensatoren in de leeskop van de uitleesschaal moeten worden geïnstalleerd. Als u het niet prettig vindt om de leeskop aan te passen, moeten de condensatoren op de USB-breakout-kaarten worden geïnstalleerd [tenzij u van plan bent de uitleesschaal op de hoofd-PCB aan te sluiten].


  • Geroote Toon bedienen met Domoticz

    Nadat je jouw Toon succesvol hebt geroot ga je natuurlijk als eerste je Toon-abonnement bij Eneco opzeggen; het abonnement kost je 4,50 € per maand daar heb je nu niets meer aan. Maar hoe krijg je de data van Toon dan in Domoticz? En hoe kan je via Domoticz de Toon bedienen?

    Na het uitvoeren van onderstaande stappen is het mogelijk om informatie uit de Toon te in Domoticz te laten weergeven en de Toon vanuit Domoticz aan te sturen.

    Toon > Domoticz

    • Huidige temperatuur (omgeving)
    • Ingestelde temperatuur (thermostaat)
    • Ingesteld programma
    • Ingestelde scene
    • Brander informatie (wordt de ketel gebruikt voor CV of Warm Water?)
    • Boiler temperatuur (ingaand en uitgaand)
    • Boiler temperatuur-setpoint
    • Keteldruk
    • Modulatie-level

    Domoticz > Toon

    • Instellen temperatuur (thermostaat)
    • Instellen programma
    • Instellen scene

    (Stap 1)

    User variables

    Allereerst gaan we 13 user variables aanmaken (Setup > More Options > User variables). In onderstaande tabel zie je eerst de “Variable name”, vervolgens het type (allemaal String) en tot slot de “Variable value”. Zorg ervoor dat je de namen en waarden exact overneemt (later kun je de namen eventueel wijzigen, maar dat scheelt voor nu wat debugging als er ergens iets niet goed gaat).

    1: UV_ToonboilerModulationLevel        String Boiler_Modulation_level
    2: UV_ToonboilerPressure               String Boilerdruk
    3: UV_ToonboilerOutTempName            String Temperatuur Boiler Uit
    4: UV_ToonboilerInTempName             String Temperatuur Boiler In
    5: UV_ToonProgramInformationSensorName String ToonProgramInformation
    6: UV_ToonAutoProgramSensorName        String ToonAutoProgram
    7: UV_ToonScenesSensorName             String Toon Scenes
    8: UV_ToonTemperatureSensorName        String Temperatuur Binnen
    9: UV_ToonIP                           String 10.0.0.180
    10: UV_ToonThermostatSensorName         String ToonThermostat
    11: UV_DomoticzIP                       String 10.0.0.1:8080
    12: UV_ToonBurnerName                   String ToonBranderInfo
    13: UV_ToonBoilerTempSetpointSensorName String ToonBoilerTempSetpoint

    Bij UV_ToonIP geeft je als waarde het vaste IP van je Toon in en bij UV_DomoticzIP geef je het IP van Domoticz in inclusief het poort-nummer.

    Virtuele devices

    De volgende stap is om virtuele devices aan te maken, deze hebben we nodig om acties te kunnen uitvoeren of data te kunnen aflezen. Ga naar Setup -> Hardware en kies bij Type voor Dummy. Je mag zeg een herkenbare naam kiezen:

    colandino.nl

     

    Zodra de Dummy Hardware toegevoegd is kunnen de virtuele sensoren gaan aanmaken. Klik hiervoor op Create Virtual Sensors (in het donkerblauw).

    Maak nu de virtuele sensor aan van het type “Temperature” en geef “Temperatuur Binnen” als naam van de sensor in:

    Maak op dezelfde wijze onderstaande virtuele sensoren aan:

    (Stap 2)


    1: ToonThermostat - Thermostat Setpoint sensor
    2: ToonAutoProgram - Selector Switch sensor
    3: ToonProgramInformation - Text sensor
    4: Toon Scenes - Selector Switch sensor
    5: ToonIP - Text Sensor
    6: ToonBranderInfo - Selector Switch sensor
    7: ToonBoilerTempSetpoint - Temperatuur sensor
    8: Temperatuur Boiler In - Temperatuur sensor
    9: Temperatuur Boiler Uit - Temperatuur sensor
    10: Boilerdruk - Pressure sensor
    11: Boiler_Modulation_level - Percentage sensor

    Voordat de scripts ingesteld kunnen worden zal de “ToonIP” Text-sensor ingevuld moeten worden met het IP-adres van de Toon.

    Het eerste IP-adres in onderstaande regel is het IP van Domoticz, het tweede IP-adres is het IP van Toon. Ook moet je bij idx= het IDX-nummer van de ToonIP-textsensor invullen.(Zie nr. 9 van stap 1)
    10.0.0.1:8080/json.htm?type=command&param=udevice&idx=22058&nvalue=0&svalue=10.0.0.180

    Bovenstaande regel wordt niet altijd juist getoond, onderstaande regel zou hetzelfde resultaat moeten geven:
    http://10.0.0.1:8080/json.htm?param=udevice&type=command&idx=22058&nvalue=0&svalue=10.0.0.180

    Geef deze URL in een willekeurig browser in, het resultaat zal dan zijn:
    { “status” : “OK”,
    “title” : “Update Device”
    }

    (Stap 3)

    Sensoren instellen

    Er moeten nog een aantal sensoren ingesteld worden, zodat de Toon hiermee
    bediend kan worden. Ga binnen Domoticz naar het tabblad Switches.

    ToonAutoProgram

    Klik bij “ToonAutoProgram” op “Edit”

    • stel “Hide Off Level” in op “OFF”
    • Pas de “Level Names” aan:
      • 0 Off
      • 10 Nee
      • 20 Ja
      • 30 Tijdelijk
    • Pas de “Level Action” aan, gebruik het IP-adres van de Toon.
      • 0
      • 10 http://10.0.0.180/happ_thermstat?action=changeSchemeState&state=0
      • 20 http://10.0.0.180/happ_thermstat?action=changeSchemeState&state=1
      • 30
    • Druk op “Save” om de wijzigingen op te slaan

    Toon Scenes

    Klik bij “Toon Scenes” op “Edit”

    • stel “Hide Off Level” in op “OFF”
    • Pas de “Level Names” aan:
      • 0 Off
      • 10 Weg
      • 20 Slapen
      • 30 Thuis
      • 40 Comfort
      • 50 Handmatig
    • Pas de “Level Action” aan, gebruik het IP-adres van de Toon.
      • 0
      • 10 http://10.0.0.180/happ_thermstat?action=changeSchemeState&state=2&temperatureState=3
      • 20 http://10.0.0.180/happ_thermstat?action=changeSchemeState&state=2&temperatureState=2
      • 30 http://10.0.0.180/happ_thermstat?action=changeSchemeState&state=2&temperatureState=1
      • 40 http://10.0.0.180/happ_thermstat?action=changeSchemeState&state=2&temperatureState=0
      • 50 http://10.0.0.180/happ_thermstat?action=setSetpoint&Setpoint=60
    • Druk op “Save” om de wijzigingen op te slaan

    BranderInfo

    Klik bij “ToonBranderInfo” op “Edit”

    • Pas de “Level Names” aan:
      • 0 Off
      • 10 CV
      • 20 WW
    • Druk op “Save” om de wijzigingen op te slaan

     

    Scripts

    Om alles goed te laten werken gaan we gebruik maken van twee dzVents scripts. Ga naar Setup > More Options > Events en maak een nieuw dzVents-script aan, getriggerd door ‘device’. Haal de code die erin staat weg en plak ondestaande code erin. Geef het script een herkenbare naam (bv. Toon Setpoint), zet het script op actief en sla het op.

    Lua
    return {
    on = {
    devices = {
    'ToonThermostat'
    }
    },

    execute = function(domoticz, device)
    domoticz.openURL(string.format(‘http://%s/happ_thermstat?action=setSetpoint&Setpoint=%s’, domoticz.variables(‘UV_ToonIP’).value, device.setPoint*100))
    domoticz.log(‘Setting Toon setpoint to ‘.. device.setPoint)
    end
    }

    Maak vervolgens nog een dzVents-script aan, dit keer getriggerd door Timer. Haal de code weg en plak onderstaande code erin. Ook nu geef je het script een herkenbare naam (bv. Toon), zet je het op actief en sla je het op.

    return {
    on = {
    timer = {
    'every minute'
    }
    },

    execute = function(domoticz)
    local ToonThermostat = domoticz.variables(‘UV_ToonThermostatSensorName’).value — Sensor showing current setpoint
    local ToonTemperature = domoticz.variables(‘UV_ToonTemperatureSensorName’).value — Sensor showing current room temperature
    local ToonBoilerTempIn = domoticz.variables(‘UV_ToonboilerInTempName’).value — Sensor showing water temp return
    local ToonBoilerTempOut = domoticz.variables(‘UV_ToonboilerOutTempName’).value — Sensor showing current water temp out
    local ToonBoilerPressure = domoticz.variables(‘UV_ToonboilerPressure’).value — Sensor showing current room temperature
    local ToonBoilerModulation = domoticz.variables(‘UV_ToonboilerModulationLevel’).value — Sensor showing current Boiler Modulation
    local ToonScenes = domoticz.variables(‘UV_ToonScenesSensorName’).value — Sensor showing current program
    local ToonAutoProgram = domoticz.variables(‘UV_ToonAutoProgramSensorName’).value — Sensor showing current auto program status
    local ToonProgramInformation = domoticz.variables(‘UV_ToonProgramInformationSensorName’).value — Sensor showing displaying program information status
    local ToonIP = domoticz.variables(‘UV_ToonIP’).value
    local DomoticzIP = domoticz.variables(‘UV_DomoticzIP’).value
    local ToonBurnerName = domoticz.variables(‘UV_ToonBurnerName’).value
    — local P1SmartMeterPower = domoticz.variables(‘UV_P1SmartMeterElectra’).value
    — local P1SmartMeterGas1 = domoticz.variables(‘UV_P1SmartMeterGasMeterStand’).value
    local ToonBoilerSetpoint = domoticz.variables(‘UV_ToonBoilerTempSetpointSensorName’).value — Sensor showing current boiler set point water temp out

    — Handle json
    local json = assert(loadfile “/home/pi/domoticz/scripts/lua/JSON.lua”)() — For Linux
    local handle = assert(io.popen(string.format(‘curl http://%s/happ_thermstat?action=getThermostatInfo’, ToonIP)))
    local ThermostatInfo = handle:read(‘*all’) handle:close()
    local jsonThermostatInfo = json:decode(ThermostatInfo)

    if jsonThermostatInfo == nil then
    return
    end

    local handle2 = assert(io.popen(string.format(‘curl http://%s/boilerstatus/boilervalues.txt’, ToonIP)))
    local BoilerInfo = handle2:read(‘*all’)
    handle2:close()

    — JSON data from Toon contains a extra “,” which should not be there.
    BoilerInfo = string.gsub(BoilerInfo, “,}”, “}”)
    jsonBoilerInfo = json:decode(BoilerInfo)

    — http://IP_TOON/hdrv_zwave?action=getDevices.json
    — local handle4 = assert(io.popen(string.format(‘curl http://%s/hdrv_zwave?action=getDevices.json’, ToonIP)))
    — local GasPowerInfo = handle4:read(‘*all’)
    — handle4:close()

    — JSON data from Toon contains a extra “.” which should not be there.
    — GasPowerInfo = string.gsub(GasPowerInfo, “dev_4.”, “dev_4”)
    — GasPowerInfo = string.gsub(GasPowerInfo, “dev_4:”, “dev_4\”:”)

    — local jsonGasPower = json:decode(GasPowerInfo)

    — domoticz.log(jsonGasPower)
    — local CurrentElectricityFlowHoog = tonumber(jsonGasPower.dev_44.CurrentElectricityFlow )
    — local CurrentElectricityQuantityHoog = tonumber(jsonGasPower.dev_44.CurrentElectricityQuantity)
    — local CurrentElectricityFlowLaag = tonumber(jsonGasPower.dev_46.CurrentElectricityFlow )
    — local CurrentElectricityQuantityLaag = tonumber(jsonGasPower.dev_46.CurrentElectricityQuantity)
    — local CurrentGasFlow = tonumber(jsonGasPower.dev_41.CurrentGasFlow)
    — local CurrentGasQuantity = tonumber(jsonGasPower.dev_41.CurrentGasQuantity)
    — local CurrentElectricityQuantity = CurrentElectricityFlowHoog + CurrentElectricityFlowLaag
    — local CurrentElectricityDeliveredLaag = 0 — local CurrentElectricityDeliveredHoog = 0
    — local totalDeliveredPower = 0

    — domoticz.devices(P1SmartMeterPower).updateP1(CurrentElectricityQuantityLaag, CurrentElectricityQuantityHoog, CurrentElectricityDeliveredLaag, CurrentElectricityDeliveredHoog, CurrentElectricityQuantity, totalDeliveredPower).silent()
    — domoticz.devices(P1SmartMeterGas1).updateGas(CurrentGasQuantity).silent()

    — Update the Boiler Water In to current value
    local currentboilerInTemp = tonumber(jsonBoilerInfo.boilerInTemp)
    if domoticz.utils.round(domoticz.devices(ToonBoilerTempIn).temperature,0) ~= domoticz.utils.round(currentboilerInTemp,0) then
    — domoticz.log(‘Updating Boiler Water In to current value: ‘ ..currentboilerInTemp)
    domoticz.devices(ToonBoilerTempIn).updateTemperature(currentboilerInTemp).silent()
    end

    — Update the Boiler water Out to current value
    local currentboilerOutTemp = tonumber(jsonBoilerInfo.boilerOutTemp)
    if domoticz.utils.round(domoticz.devices(ToonBoilerTempOut).temperature,0) ~= domoticz.utils.round(currentboilerOutTemp,0) then
    — domoticz.log(‘Updating Boiler Water Out to current value: ‘ ..currentboilerOutTemp)
    domoticz.devices(ToonBoilerTempOut).updateTemperature(currentboilerOutTemp).silent()
    end

    — Update the Boiler water Pressure to current value
    local currentBoilerPressure = tonumber(jsonBoilerInfo.boilerPressure)
    if domoticz.utils.round(domoticz.devices(ToonBoilerPressure)._nValue,0) ~= domoticz.utils.round(currentBoilerPressure,0) then
    — domoticz.log(‘Updating Boiler Pressure to current value: ‘ ..currentBoilerPressure)
    domoticz.devices(ToonBoilerPressure).updatePressure(currentBoilerPressure).silent()
    end

    local currentSetpoint = tonumber(jsonThermostatInfo.currentSetpoint) / 100
    local currentTemperature = domoticz.utils.round(tonumber(jsonThermostatInfo.currentTemp) / 100,1)
    local currentProgramState = tonumber(jsonThermostatInfo.programState)
    if currentProgramState == 0 then currentProgramState = 10 — No
    elseif currentProgramState == 1 then currentProgramState = 20 — Yes
    elseif currentProgramState == 2 then currentProgramState = 30 — Temporary
    end
    local currentActiveState = tonumber(jsonThermostatInfo.activeState)
    if currentActiveState == -1 then
    currentActiveState = 50 — Manual
    elseif currentActiveState == 0 then currentActiveState = 40 — Comfort
    elseif currentActiveState == 1 then currentActiveState = 30 — Home
    elseif currentActiveState == 2 then currentActiveState = 20 — Sleep
    elseif currentActiveState == 3 then currentActiveState = 10 — Away
    elseif currentActiveState == 4 then currentActiveState = 60 — Holiday
    end

    — Update the toon burner selector to current program state
    local currentBurnerInfo = tonumber(jsonThermostatInfo.burnerInfo)
    local CurrentToonBurnerValue = domoticz.devices(ToonBurnerName).level
    if currentBurnerInfo == 0 then currentBurnerInfo = 0 — uit
    elseif currentBurnerInfo == 1 then currentBurnerInfo = 10 — cv aan
    elseif currentBurnerInfo == 2 then currentBurnerInfo = 20 — warmwater aan
    elseif currentBurnerInfo == 3 then currentBurnerInfo = 10 — voorverwarmen volgend setpoint
    end

    if CurrentToonBurnerValue ~= currentBurnerInfo then — Update toon burner selector if it has changed
    — domoticz.log(‘Updating Toon burner info:’)
    domoticz.devices(ToonBurnerName).switchSelector(currentBurnerInfo)
    end

    — Update the modulation level of the burner
    local currentModulationLevel = tonumber(jsonThermostatInfo.currentModulationLevel)
    if domoticz.devices(ToonBoilerModulation).percentage + 1 ~= currentModulationLevel + 1 then
    — domoticz.log(‘Updating the Modulation sensor to new value: ‘ ..currentModulationLevel)
    domoticz.devices(ToonBoilerModulation).updatePercentage(currentModulationLevel)
    end

    — Update the temperature Boiler setpoint to current boiler set point
    local currentInternalBoilerSetpoint = jsonThermostatInfo.currentInternalBoilerSetpoint+1
    if domoticz.utils.round(domoticz.devices(ToonBoilerSetpoint).temperature, 1) ~= domoticz.utils.round(currentInternalBoilerSetpoint, 1) then
    — domoticz.log(‘Updating the Boiler internal temperature setpoint to new value: ‘ ..currentInternalBoilerSetpoint)
    domoticz.devices(ToonBoilerSetpoint).updateTemperature(currentInternalBoilerSetpoint)
    end

    — Update the thermostat sensor to current setpoint
    if domoticz.devices(ToonThermostat).setPoint*100 ~= currentSetpoint*100 then
    — domoticz.log(‘Updating thermostat sensor to new set point: ‘ ..currentSetpoint)
    domoticz.devices(ToonThermostat).updateSetPoint(currentSetpoint).silent()
    end

    — Update the temperature sensor to current room temperature
    if domoticz.utils.round(domoticz.devices(ToonTemperature).temperature, 1) ~= domoticz.utils.round(currentTemperature, 1) then
    — domoticz.log(‘Updating the temperature sensor to new value: ‘ ..currentTemperature)
    domoticz.devices(ToonTemperature).updateTemperature(currentTemperature)
    end

    — Update the toon scene selector sensor to current program state
    if domoticz.devices(ToonScenes).level ~= currentActiveState then — Update toon selector if it has changed
    — domoticz.log(‘Updating Toon Scenes selector to: ‘..currentActiveState)
    domoticz.devices(ToonScenes).switchSelector(currentActiveState).silent()
    end

    — Updates the toon auto program switch
    if domoticz.devices(ToonAutoProgram).level ~= currentProgramState then — Update toon auto program selector if it has changed
    — domoticz.log(‘Updating Toon Auto Program selector to: ‘..currentProgramState)
    domoticz.devices(ToonAutoProgram).switchSelector(currentProgramState).silent()
    end

    — Updates the toon program information text box
    local currentNextTime = jsonThermostatInfo.nextTime
    local currentNextSetPoint = tonumber(jsonThermostatInfo.nextSetpoint) / 100

    if currentNextTime == 0 or currentNextSetPoint == 0 then
    ToonProgramInformationSensorValue = ‘Op ‘ ..currentSetpoint.. ‘°’
    else
    ToonProgramInformationSensorValue = ‘Om ‘ ..os.date(‘%H:%M’, currentNextTime).. ‘ op ‘ ..currentNextSetPoint.. ‘°’
    end

    if domoticz.devices(ToonProgramInformation).text ~= ToonProgramInformationSensorValue then
    — domoticz.log(‘Updating Toon Program Information to: ‘..ToonProgramInformationSensorValue)
    domoticz.devices(ToonProgramInformation).updateText(ToonProgramInformationSensorValue)
    end
    end
    }

    P1 Energie-meting (slimme meter)

    Energie-meting, verbruik van elektra en gas, kun je via een P1-kabel naar je Toon laten versturen. Zelf heb ik ervoor gekozen om met een P1 USB-kabel deze gegevens direct naar Domoticz te sturen. Mocht je deze gegevens via Toon willen laten lopen, dan moet je regel 46, 47, 48, 50, 51, 52, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68 en 70 un-commenten.

    Tevens moet je op regel 51, 52, 57, 58, 59, 60, 61 en 62 het juiste dev_ nummer invullen. Het juiste nummer kun je vinden door onderstaande URL in te geven in een browser (uiteraard wel het IP van jouw Toon gebruiken):

    http://10.0.0.180/hdrv_zwave?action=getDevices.json

    Het is wat lastig om de juiste dev_nummers te vinden, maar met wat puzzelen moet het wel lukken (de nummers zijn helaas niet voor iedere Toon gelijk).

    Ook moet je nog even regel 20 en 21 un-commenten, en user variables aanmaken met dezelfde naam als in regel 20 en 21 staat.

    UV_P1SmartMeterElectra String Stroom
    UV_P1SmartMeterGasMeterStand String Gas

    Tot slot moet je nog een virtuele gas-sensor (naam: Gas) én een virtuele stroom-sensor (naam: Stroom) aanmaken.

    Testen

    Zodra alle dummy sensors, user variables en scripts goed zijn ingeladen kan er binnen de verschillende tabbladen in Domoticz informatie uitgelezen worden of instellingen ingesteld worden.

    Via het tabblad “Temperature” kan bij “ToonTemperature” de omgevingstemperatuur van de Toon worden uitgelezen. De sensor “ToonBoilerTempSetpoint” laat de temperatuur van de Boiler in de CVketel zien.

    Via het tabblad “Utility” kan bij “ToonThermostat” de temperatuur ingesteld worden welke daarna binnen enkele seconden doorgevoerd zou moeten worden in de Toon. De sensor “ToonProgramInformation” laat de ingestelde temperatuur zien. De sensor “ToonIP” laat het IP-adres van de Toon zien zoals eerder is ingesteld. De sensor Stroom en Gas laten het actuele verbruik zien en de meterstand.

    Via het tabblad “Switches” kan bij “ToonScenes” een scene ingesteld worden, bijvoorbeeld “Away” of “Sleep”.
    Ook kan er bij “ToonAutoProgram” ingesteld worden of het in de Toon ingestelde programma aan- of uitgezet moet worden. De sensor “ToonBranderInfo” laat zien of de CV-ketel gebruikt wordt voor CVverwarming(CV) of voor warm water (WW).

    De sensoren “ToonBoilerTempSetpoint” en “ToonBranderInfo” werken alleen als de Toon modulair is aangesloten op de CV-ketel.


  • Gezocht: ontwikkelaar voor Explane op de Raspberry

    SchipholWatch zoekt een software-ontwikkelaar om de app Explane voor de Raspberry-microcomputer verder te ontwikkelen.

    Update 8 nov 2019 17:00 UUR – WE HEBBEN INMIDDELS IEMAND GEVONDEN!

    Foto: Hitesh Choudhary via Unsplash

    De basis van Explane voor de Raspberry staat. Echter is de oorspronkelijke ontwikkelaar niet langer beschikbaar voor de ondersteuning van de software.

    SchipholWatch wil met de Raspberry-versie van de app gebruikers in staat stellen het vliegtuiggeluid volcontinu te meten.

    De microcomputer wordt hiervoor aangesloten op een decibel-meter en aangesloten op het internet om de meetgegevens te uploaden naar de database achter de website Aviation Noise Reports by Explane. Lees verder  Bericht ID 5295


  • Explane

    Explane is een app waarmee burgers de geluidbelasting door vliegtuigen voor de omgeving snel en eenvoudig in beeld kunnen brengen. Het luchtvaartverkeer veroorzaakt geluidsoverlast voor omwonenden. De app kan een bijdrage leveren aan het huidige maatschappelijk debat over de snelle groei van het luchtvaartverkeer en de impact daarvan op de omgeving.

    Meten met Explane

    Explane meet het piekniveau van vliegtuiggeluid. Daardoor kunnen metingen van burgers een belangrijke aanvulling zijn op de jaargemiddelden waarmee de overheid en de luchtvaartsector rekenen. Dit is van belang voor het maatschappelijk debat, want juist de piekniveaus ervaren bewoners als overlast.

    Met één druk op de knop meet de app Explane het geluidsniveau van een passerend vliegtuig en koppelt dit getal aan de datum, de tijd en de locatie van de meting. Ook haalt de app gegevens van het betreffende vliegtuig op. Deze gegevens worden verzameld in een openbare database. Omwonenden en andere belangstellenden kunnen op de site (https://reports.explane.org) inzoomen op de gegevens die voor hen van belang zijn. Lees verder  Bericht ID 5295


  • Continu meten met Explane kwestie van weken

    Ontwikkelaar René Kuijf testte een tiental dB-meters voor het continu meten met Explane (foto: René Kuijf)
    Ontwikkelaar René Kuijf testte een tiental dB-meters voor het continu meten met Explane (foto: René Kuijf)

    Vanmiddag bezocht een delegatie van SchipholWatch de ontwikkelaar van Explane op de Raspberry PI. We keken onze ogen uit. Het lijkt nog maar een kwestie van weken voordat iedereen voor een relatief klein bedrag (of we bouwen het zelf met een oude Raspberry PI) een meetstation kan aanschaffen dat geen vliegtuig mist.

    De geluidsmeter op de foto is een Benetech GM1356, deze is in China te koop tussen de €25 en €35 binnen 4 weken in huis en gratis verzonden.

    De Raspberry is een heel klein computertje van een paar tientjes. Gekoppeld aan een dB-meter registreert het apparaatje continu het omgevingsgeluid. Het knappe aan deze versie is dat het systeem zelfstandig vliegtuigen herkent en deze inclusief het gemeten geluidsniveau doorstuurt aan de database van Explane. De android app is al in gebruik.

    Ook het aantal vliegtuigen geteld
    Uniek van de vaste opstelling is dat nu ook een goed beeld kan worden gekregen van de frequentie waarmee vliegtuigen overkomen. Waar de app voor de smartphone afhankelijk is van de gebruiker die op een knop drukt om een meting door te sturen, stuurt de Raspberry íeder passerend vliegtuig automatisch door.

    Lees verder  Bericht ID 5295


  • Eminent heeft een nieuw alarmsysteem

    Eminent presenteerde in de eerste week van mei hun nieuwe GSM Alarmsysteem: het EM8710 868MHz Long Range Draadloos GSM Alarmsysteem. De EM8710 is gebaseerd op GSM en heeft een ingebouwde back-up batterij en sirene.

    Je installeert het 868MHz Long Range Draadloos GSM Alarm-systeem gemakkelijk zelf. Er is geen abonnement nodig en er zijn geen vaste maandelijkse kosten (afhankelijk of je natuurlijk een prepaid simkaart of abonnement gebruikt). Met de meegeleverde accessoires (een bewegingsmelder, deur/raamcontact, afstandsbediening en twee RFID tags) is deze EM8710 starterkit een goede basis om je huis te beveiligen. Bij een alarm worden vijf personen gewaarschuwd door middel van een SMS bericht of telefoontje. Lees verder  Bericht ID 5295


  • ESCAM G02

    ESCAM G02 (HD 720 P)

    • HD 720 P Pan/Tilt WiFi IP IR Camera.
    • High definition beeldkwaliteit.
    • Resolutie tot 1 Megapixel, 1280*720.
    • Magapixel Lens.
    • 3.6mm Megapixel lens.
    • Pan en Tilt monitoring.
    • Pan 355 ° + Tilt 120 °, sliding scherm handmatig maakt afstandsbediening van de rotatie van camera en real-time monitoring.
    • Luisteren en spreken via ingebouwde microfoon en hoge kwaliteit audio speaker,  dus spreken online tussen camera en mobiele telefoon.
    • infrarood monitoring & Bewegingsdetectie, wanneer motion objecten detecteert, krijgt u een E-mail alert.
    • 10 stks IR Leds ontwerp, voor ultra helder night time beeld, max tot 8 m IR bereik.
    • Ondersteuning Multi-Platform via browser.
    • Ondersteuning Android/iOS mobiele tablets en computers.
    • Micro tf-kaart max tot 128G, tf-kaart slot, ondersteuning max tot 128 GB, dus geen NAS, NVR of andere hardware nodig om video op te nemen.
    • Dual WiFi Antenne, Dual antenne ontworpen, WiFi verbinding is stabieler en krachtige WiFi Verbinding, zonder bekabeling werkt via WiFi, kan gemakkelijk worden aangesloten met uw mobiele telefoon voor remote surveillance.

    Circa €20 via BangGood

    Lees verder  Bericht ID 5295


  • Sonoff POW 16A 3500W WIFI schakelaar met stroomverbruik monitor

    Geplaatst op door colani 2 Reacties
    De Sonoff POW 16A via BangGood
    De Sonoff POW 16A via BangGood

    De Sonoff POW. Vandaag kwam deze binnen, 10 dagen onderweg van BangGood, niet slecht. Eindelijk kunnen we het stroomverbruik van onze servers een beetje in kaart brengen. De Sonoff Pow is gebaseerd op de ESP8266 chipset welke is uitgerust met een volledige RCP/IP stack. De chip is te flashen met je eigen software maar over het algemeen gebruikt men ESPeasy, een goed ondersteund en veel gebruikt open source project. In feite is de pow gelijk aan de Sonoff 10A en 16A met als extra functie dat deze het stoomverbruik kan bijhouden, zodra dit goed werkt in ESPeasy denk ik er sterk over om alle modules te vervangen voor deze iets duurdere module. Het relais kan 16A schakelen en de huidige die ik in gebruik heb maar 10A, al is dat meer dan genoeg voor wat LED verlichting en een paar printers en klein huishoudelijke apparaten. En natuurlijk net als bij de overige Sonoff modules kun je ook timers programmeren zoveel je wil.

    De eigen software van Sonoff werkt via een app over je WiFi verbinding waarmee apparaten alleen via deze app in en uit kunnen worden geschakeld. Verre van ideaal dus, en zeker voor ons als domoica fans, wij willen vrijheid om alles naar eigen wens in te richten. Waarmee ik niet wil zeggen dat de app niet functioneert, als je alleen Sonoff wifi producten zou gebruiken zal het zeker voldoen. Gelukkig is Arend druk met de implementatie van de Sonoff POW in ESPeasy en het vermogensverbruik kunnen we dan ook snel in Domoticz meenemen. Lees verder  Bericht ID 5295


  • Sonoff TH 10A/16A

    Geplaatst op door colani 3 Reacties

    In bestelling bij BangGood: Zodra we deze hebben toegevoegd en aan onze ‘Smart Home‘ hebben toegevoegd volgt een beschrijving en uitgebreide review.

    De Sonoff TH10 / 16 is een Sonoff versie die kan controleren op de ingestelde temperatuur en vochtigheid via de APP eWeLink. Net zoals de naam al aangegeeft, ondersteunt de nieuwe versie ‘Sonoff TH’  twee voedings specificaties, namelijk 10A en 16A. De ‘Sonoff TH’ ondersteunt controle van ingestelde temperatuur en luchtvochtigheid, wanneer de temperatuur en/of vochtigheid van de omgeving of ruimte in het bereik valt, wordt een melding doorgegeven en automatisch de  aangesloten apparaten in of uitgeschakeld. Lees verder  Bericht ID 5295


  • Wat is een IP Camera

    Wat heb ik nodig?

    IP-camera’s zijn camera’s met een Netwerk of WiFi kaart. Hierdoor kan je ze koppelen met je netwerk en kan je de beelden op je smartphone en tablet bekijken. En natuurlijk kan je ze ook opslaan op een NAS of een NVR (Netwerk Video Recorder).

    Op deze pagina kun je lezen welke opties er zijn, zodat je de beste camera voor jouw situatie kan kiezen.


    De stroomvoorziening van een camera

    Een camera heeft stroom nodig anders werkt hij niet. Er zijn 3 mogelijkheden om de camera te voorzien van stroom.
    Een binnencamera kan vaak gewoon met een stekker/voeding aangesloten worden. Voor een buitencamera heb je een stopcontact nodig en dat is niet altijd beschikbaar. Je kunt de voedingskabels echter vaak vrij simpel verlengen en een binnen-stopcontact gebruiken. Als alternatief kan je dan een camera nemen met een ingebouwde accu of je kiest voor een POE-gevoede camera.
    PoE staat voor Power Over Ethernet, oftewel je voegt stroom toe aan je netwerkkabel. Een speciale switch is hiervoor vereist, een zogenaamde PoE switch. Of je gebruikt een goedkope PoE injector welke op Banggood een AliExpress voor een paar Euro te koop zijn. (lees ook PoE)
    Lees verder  Bericht ID 5295