Het script met juist ingevulde waarden

Om aanwezigheidsdetectie (presence detection) toe te passen binnen je netwerk om te kunnen gebruiken in Domoticz kun je gebruik maken van ping. Wil je ook aan de slag met presence detection in Domoticz? Lees dan verder!

Ping script in Domoticz


Dit script kun je gebruiken om te testen of het netwerk apparaat aanstaat en netwerkverbinding heeft. We zenden een ‘ping‘ naar het IP-adres van het apparaat. Als het apparaat aanstaat geeft het antwoord, anders niet. Op basis van deze test kun je een apparaat in Domoticz aan- of uitschakelen.

  1. Maak een nieuwe dummy aan

    Om je smartphone aan en uit te kunnen zetten in Domoticz moet je deze eerst toevoegen als dummy. Doe dit voor ieder apparaat apart. Ga naar Instellingen | Hardware. Maak een Dummy hardware device aan als je die nog niet hebt. Noem ‘m bijvoorbeeld Dummies. Klik daarna op ‘Maak virtuele sensoren’. Geef de naam in van je apparaat, bijvoorbeeld Philips TV of Smartphone Wouter.

  2. Maak een nieuwe Gebeurtenis

    Klik op Instellingen -> Meer Opties -> Gebeurtenissen.
    Klik op ‘New’.
    Geef het script een naam, bijvoorbeeld PingScript, zet het type op Lua en kies voor Time.

  3. Voeg code in

    Verwijder de volledige inhoud in het scherm en plak onderstaande code:


Shell

4. Aanpassen van de code

Wijzig in de code de regels met “IP-Adres” in die van je apparaten. Verder niets! De naam na de komma moet exact overeenkomen met de naam in Domoticz.

Het maakt niet uit hoe je apparaten heten, als je maar de namen consequent overneemt. Domoticz is hoofdlettergevoelig! Ik vind het makkelijk om de laatste cijfers van het IP-adres in de naam van het dummy apparaat op te nemen, maar dat hoeft natuurlijk niet.

5. Toelichting werking code

De uitvoering van de code begint na CommandArray. Daar komt je als eerste de functie DevicePing tegen. Deze functie staat helemaal bovenaan en pingt het IP-Adres wat je opgegeven hebt tussen de haakjes. Als het resultaat van de Ping success is, spring je naar de DeviceOnOff functie. Deze voert de actie uit op het opgegeven device. Als dat klaar is, spring je naar de volgende regel onder commandArray.

6. Is er Iemand Thuis?

Je kunt dit script verder uitbreiden met een Iemand Thuis functie om zo verdere acties uit te voeren zoals het hoger of lager schakelen van de thermostaat of het in en uitschakelen van de verlichting. Hoe je dat doet lees je in Verlichting inschakelen als je thuis bent

Wat vond je van deze blogpost?

Klik op een ster om een beoordeling te geven!

Gemiddelde score 4.5 / 5. Aantal stemmen: 2

Er heeft nog niemand gestemd. Wees de eerste, het kost niets en geen registratie!

Jammer dat de post niet behulpzaam was.

Laten we deze post verbeteren!

Wat zou er beter kunnen?

Door Wouter

47 gedachten over “Smartphone in Domoticz toevoegen met Ping”
    1. Hoi Wouter,

      Ik heb het script gebruikt om d.m.v onze smartapparaten een virtuele dummy schakelaar genaamd ” Detect aanwezig” aan/uit te zetten, dat werkt mooi! Bedankt voor je bijdrage!! 😀

      Ik heb nu een blocky script gemaakt waarmee ik mijn thermostaat d.m.v. open term via Domoticz het setpoint kan laten aanpassen als er af/aanwezigheid gedetecteerd wordt.

      Waar ik tegen aan loop is dat als je de thermostaat op deze manier automatiseert dat die de handbediening overruled, dus als je met de hand het setpoint even iets wil aanpassen gaat hij weer terug naar het setpoint welke ik in blocky heb gezet.

      Ik zoek dus een mogelijkheid dat de thermostaatknop van mijn Remeha isense via open term kan samenwerken met het script……. of zelfs het setpoint van het script aan past …. of is er nog een andere optie?

      Groeten,

      Allard

      1. Hoi Allard,

        Goed dat het gelukt is! Leuk om te horen!

        Het ‘probleem’ is denk ik dat het blocky script iedere minuut uitgevoerd wordt. Dus die zal dan inderdaad al snel de handmatige temperatuur overrulen.

        Je zou een dzvents script kunnen maken dat alleen gestart wordt wanneer de ‘iemand thuis’ switch aan of uit gezet wordt. Dit script zet de temperatuur 1x goed (niet iedere minuut) en wordt verder niet meer uitgevoerd totdat de ‘iemand thuis’ switch weer veranderd. Het is dan belangrijk dat ook de ‘iemand thuis’ niet iedere minuut aangepast wordt, ook niet van status ‘aan’ naar ‘aan’.

        Wanneer je dan handmatig de temperatuur veranderd op je thermostaat heeft domoticz niet dat niet door en werkt het zoals je wilt.

        Succes!

        Wouter

        1. ik heb hetzelfde probleem. Ik zie ook in de beschrijving nergens iets staan dat je ergens je device wat je aan wilt hebben ( bijvoorbeeld mijn verlichting in de woonkamer) in moet voeren. Hoe weet dit script nu welke lampen die aan of uit moet doen?

          1. Hoi Wouter,

            Dit script zorgt inderdaad niet voor het aan en uit zetten van lampen. Dit script kijkt of een apparaat online is. Om die status te bepalen wordt er gepingt. De dummyswitch telefoon representeerd de status online = aan, offline is uit.

            Op basis van die status, of een aanvullende iemand thuis schakelaar kun je je lampen inschakelen. Dat is dan weer een ander script.

            De laatste versie van mijn verlichtingscript kun je zien op https://github.com/twoenter/domoticz-scripts

            Succes!

            Wouter

          2. Hoi Wouter,
            ja ik reageer in de verkeerde tread sorry.
            Probleem nog niet opgelost ik ga zo even naar je aan/uit script kijken. hopelijk lukt het.

    2. Hoi, dacht eindelijk iets gevonden waarnaar ik zocht. Maar de code is voor mij een complet zwart. Heb je een tip hoe ik aan de code kan komen?

      1. Hoi, het code block werkt als het goed is weer. Voor de zekerheid ook een screenshot van de code geplaatst.

        Succes en groet Wouter

    1. Hoi Edwin,

      Dat denk ik wel, alleen wel met een omweg. Standaard voert Domoticz alle Lua scripts van het type Time iedere minuut uit. Je zou een Dummy Switch kunnen aanmaken die iedere 10 minuten aangaat voor 1 minuut. Dat kun je doen met de Timer opties van de switch. Vervolgens maak je in het Pingscript een controle of deze Dummy switch aanstaat. Staat ie aan, dan het pingscript uitvoeren. Anders niet.

      Je kunt ook van het Lua type Device gebruik maken, maar daar heb ik nog (geen) ervaring mee.

      Laat maar weten of het gelukt is!

      Wouter

  1. Handig!
    Ik wil Domitcz laten kijken of mijn versterker aan staat, als dat zo is dan mag de sub ook aan. Jammer genoeg blijkt mijn Yamaha versterker zijn IP altijd aanwezig te zijn, ook als de versterker zelf uit staat, dit om aangezet te kunnen worden via de app. effe verder kijken hoe ik dit ga aanpakken.

    Script werkt verder zoals verwacht, ben alleen benieuwd waar en hoe de status wordt gepresenteerd…b.v. staat al aan …
    Gr Paul

    1. Hoi Paul,

      Leuk dat je reageert! Misschien kun je via de API van de versterker de status wel uit het apparaat halen. Ik weet natuurlijk niet om welk model het gaat, maar als ik Yamaha API zoek met google, stuit ik op dit project. Zo te zien kun je de benodigde on/off informatie eruit halen. Lees anders ook mijn blogpost over het werken met de Philips TV API deel 1 en 2 waarschijnlijk werkt het op een vergelijkbare manier!

      Nog wat aanvullende toelichting op de code:

      Ik heb twee aparte functie gemaakt die we makkelijk een aantal keer kunnen uitvoeren. Alleen de devices en de acties verschillen steeds. In de regels onder commandArray kun je de ip-adressen invullen en de namen van de devices die je wilt pingen. De functie DevicePing pingt dan het apparaat en concludeert of het apparaat On of Off is. Aan de hand daarvan wordt de functie DeviceOnOff geactiveerd.

      function DeviceOnOff(Action, device)
      for deviceName,deviceValue in pairs(otherdevices) do
      Domoticz gaat alle devices langs totdat hij ze allemaal gehad heeft. Hij behandeld ieder device apart, om de beurt

      if (deviceName==device) then
      Als het device (deviceName) die nu aan de beurt is dezelfde naam heeft als ‘device’ zijn we bij een apparaat dat we aan of uit willen zetten.

      if deviceValue == Action then
      Als de waarde van het device hetzelfde is als de actie die er uitgevoerd zou moeten worden… dan laten we de regel hieronder zien in het log en doen verder niks.
      print(tostring(device) ..” staat al “.. tostring(Action))
      else
      Als dat niet zo is, dan voeren we de actie uit.
      commandArray[device] = Action
      print(tostring(device) ..” ” ..tostring(Action).. ” gezet”)
      end
      end
      end
      end

      ik hoop dat de code nu wat duidelijker is en dat je een oplossing vind voor je versterker!

      Succes! Mocht je nog vragen hebben kun je natuurlijk hier weer reageren!

      Wouter

  2. Hoi Wouter,

    Dit script is een hele gemakkelijke manier om met een netwerkgebruiker te pingen..
    Ik heb het geinstalleerd om zo onze smartphone’s te pingen, om te kijken of er iemand thuis is.
    Waar ik tegen aan loop, is dat de ping verbinding naar mijn telefoon weg valt. Zodra ik dan mijn telefoon weer aanraak, gaat de ping weer lopen..
    Ik heb een Samsung telefoon, met android, en wifi is ingeschakeld tijdens standby van telefoon..
    Heb jij misschien enig idee wat hier aan te doen is.?

    1. Beste Johan,

      Leuk dat je reageert. Dit probleem hoor ik helaas vaker, maar ik heb daar wel een oplossing voor!

      Check even het vervolg van deze blog: Verlichting inschakelen als je thuis bent

      Het script uit die post borduurt verder op het ping script. We maken een extra dummy “Iemand Thuis” aan.
      Dus, hij pingt steeds de ingevoerde smartphones of andere apparaten, zolang het apparaat antwoord, blijft de smartphonedummy aan en staat Iemand Thuis ook aan.
      Als de apparaten niet te pingen zijn, schakelt het script de smartphonedummy uit. Maar het laat de dummyswitch Iemand Thuis aan totdat een kwartier lang de smartphones niet meer te pingen zijn. Mocht een apparaat weer terug online komen binnen het kwartier, dan blijft Iemand Thuis gewoon aan. Maar is er na een kwartier echt niemand, dan zal Iemand Thuis uit gaan en op basis van die gebeurtenis kun je je verlichting of verwarming lager schakelen.

      Succes en veel plezier!

      Wouter

      1. Hoi Wouter,

        Zoals jij het beschrijft had ik het ook al gedaan, echter mijn smartfoon wordt soms uren (als ik deze niet gebruik) niet gezien door mijn router, dus ook niet door Domoticz.
        Is er misschien nog een optie om mijn WIFI wakker te houden op mijn Samsung telefoon, want dat is volgens mij het probleem waarom de verbinding weg valt..

        Groet Johan

        1. Hallo Johan,

          Mooi dat het werkt! De vraag is of je wel wil dat je Samsung de wifi constant aanhoudt. Wifi vreet namelijk veel stroom…

          Waarschijnlijk is het mij nog nooit zo opgevallen omdat ik meestal binnen een half uur m’n telefoon wel gebruik/check.

          Je kunt ook geofencing gebruiken om je thuis te melden. Zorg dan wel dat het niet conflicteert met het pingen. Je kunt geofences instellen in de (betaalde) domoticz app, of een gelijkwaardige app.

          Succes!

          Wouter

  3. Hoi Wouter, top script werkt goed, alleen klopt het aantal minuten van de NiemandThuis script niet, hij runt het script elke seconde dus, na 15 seconde denkt die al dat er niemand meer is, jij zegt dat Domoticz de events elke minuut runt, maar dat is dus niet zo, kan ik dat ergens aanpassen >

    1. Hoi Dennis, ik denk dat je type script op “all” staat in plaats van “time”.

      Bij scripts van het type “all” word het script bij iedere gebeurtenis uitgevoerd. Bijvoorbeeld het ontvangen van de meterstanden uit je slimme meter, inschakelen van een lamp, update van gegevens van een thermometer… ect. Vaker dan 1x per minuut dus.

      Bij het type “time” wordt het script iedere minuut uitgevoerd.

      Je kunt het type instellen in de kolom waar je ook de naam van het script invoert.

      Succes

      Wouter

  4. Hoi Wouter,
    Enorm bedankt voor je script. Je maakt het duidelijk ook voor degenen die nauwelijks ervaring hierin hebben (lees: ik).
    Ik zal wel een beginnersfout maken, maar: na toevoegen van de ip-adressen verschijnt er niets in mijn switches-overzicht. Hoort dat zo?
    Groeten, Joep

    1. Beste Joep,

      Dank je wel! Leuk dat je het probeert en wil leren. Ik probeer mijn handelingen altijd zo goed en simpel mogelijk te verwoorden. Ik zie dat ik in deze uitleg vergeten ben te vermelden dat je per apparaat dat je wilt pingen een dummy device moet aanmaken. Die verschijnen niet automatisch maar moet je handmatig aanmaken:

      Ga naar Instellingen -> Hardware
      Maak een Dummy hardware aan als je die nog niet hebt.
      Maak een virtuele sensor aan van het type Switch en noem het naar het apparaat, bijvoorbeeld Philips TV.

      Nu gaat het je lukken denk ik, anders hoor ik het wel.

      Succes,

      Wouter

  5. Goeden dag
    ik ben pas gestart met domoticz heb een raspberry PI 3B+ en een RFXcom433 aangeschaft. Voor elkaar gekregen dat mijn raspberry van USB stick opstart en een paar lampschakelaars aan de praat gekregen, met een hoofdschakelaar voor allen tegelijk. Nu heb ik dit script ingevoerd onder gebeurtenissen. luna en time, mijn IP adres en naam smartphone opgegeven en opgeslagen. Maar nu weet ik niet hoe ik het script in domoticz op moet starten en waar ik de gegevens van het pingen op kan halen.
    Ik hoop dat iemand mij hier mee kan helpen, alvast bedankt

    1. Beste Rene,

      Leuk dat je begonnen bent met domotica! Het opstarten en het beginnen te begrijpen duurt even maar als je het eenmaal door hebt is het erg leuk! Ik zal je verder opweg helpen.

      Domoticz voert alle scripts (gebeurtenissen) van het type time automatisch iedere minuut uit. Dus als het script enabled is, start het automatisch. Dit kun je zien in de log. Je hoeft niets in te vullen in de dummy devices bij aan en uit acties. Dus als je het juiste ip adres van bijvoorbeeld je iphone invoert in het script en daarvoor een dummy hebt aangemaakt, gaat het werken!

      Kom je zo verder?

      Groet Wouter

  6. Ik ben weer wat verder gekomen heb een dummy aangemaakt en verwezen onder” Aan actie” naar
    script://PingScript. Krijg nu de volgende meldingen in mijn log; SQHelper:error script not found home/pi/domoticz/scripts/PingScript”
    en
    Luna………………..start ping script………..
    status: luna: ping fail Mijn IPhone
    status: luna: ping fail HTPC
    status: luna: ping fail IP-cam
    Luna………………..end ping script………..

  7. Wouter leuk dat je zo snel reageerd. Ik ben weer een stuk verder in mijn log van Domotics zie ik dat de twee iphones met sucses worden gepingd maar dit is alleen als de iphones ontgrendeld zijn. Bij vergrendelde iphones is de ping failed. Dit is natuurlijk lastig als je het als aanwezigheids detectie wil gaan gebruiken. Weet jij misschien wat de oorzaak kan zijn

  8. Jammer dan werkt dit script niet in samen werking met een iphone
    Bedankt voor de hulp, mocht je nog een andere aanwezigheid detectie oplossing hebben binnen domoticz, dan hoor ik het graag.
    Ik stel je tips en scripts op je site zeer op prijs, en ga ze zeker uitproberen. bedankt

    1. Beste Rene,

      Het script werkt wel zoals je hiervoor al schreef, maar je moet de telefoonswitches niet direct gebruiken als schakelaar voor je verlichting. Daarom linkte ik al naar het andere artikel, waarin je een “iemand thuis” switch maakt die een betere indicatie geeft of je thuis bent of niet en of de verlichting dan geschakeld moet worden. Ik zou zeggen probeer het eens. Anders kun je nog de andere presence detection methode gebruiken, waarbij de Pi zelf gaat pingen ipv domoticz.

      Wouter

  9. Hallo Wouter,

    Ik hen dit script gebruikt en uiteindelijk werken gekregen.
    Het script kwam bij mij nooit bij “commandArray[device] = Action”.

    Dat heef ter mee te maken dat deviceValue de eerste keer leeg is.

    Het script werkte weer nadat ik het statement

    if deviceValue ~= Action then”

    vervangen had door:

    if deviceValue == Action then
    else

  10. Hoi Wouter,

    Handig script dank je!
    Ik heb wel dat pingen mislukt, ook naar bedrade apparaten.

    Een minuut later lukt het wel, waar ligt dat aan en is er een timer in te bouwen? bv dat het pas na 5 min uitgeschakeld wordt?

  11. Dag Wouter,

    Ik merk dat de switch enkel aan gaat als wifi aan is én als mijn scherm aan is. Is het mogelijk om deze switch ook te laten aanschakelen als mijn gsm verbonden is met wifi maar gewoon in mijn broekzak zit?

    1. Hoi Emiel,

      Nee dat gaat niet zomaar. Je telefoon heeft accu bespaaropties die het pingen tegenhouden omdat de telefoon de wifi uitzet. Je kunt daar wel omheen werken. Ik heb in het artikel ‘Is er iemand thuis’ een vrij uitgebreid script staan wat ook mijn verlichting schakelt op basis van aanwezigheid. Wil je geen verlichting schakelen gebruik dan het script tot ” — einde check iemand thuis.” . Wel aanpassen naar je eigen apparaten en wensen natuurlijk 😉

      Groet Wouter

      1. Dag Wouter,
        Mooi script wat ik al een aardige tijd laat draaien in Domoticz.
        Nu wil ik een melding op een LCD schermpje doen wat aan een NodeMCU hangt.
        De code om via het netwerk de commando’s te geven is: http://192.168.68.49/control?cmd=LCDCMD,on
        Hiermee zet je het display aan. Andere commando’s in lijn hiermee.
        Zou je me ook kunnen zeggen hoe ik zo’n commando vanuit een script kan runnen?
        Alvast bedankt!

        1. Hoi Bart,

          Dat kan. Kijk eens naar de domoticz.openurl functie.

          Uit de wiki:

          “openURL(url/options): Function. Have Domoticz ‘call’ a URL. If you just pass a url then Domoticz will execute the url after your script has finished but you will not get notified. If you pass a table with options then you have to possibility to receive the results of the request in a dzVents script. Read more about asynchronous http requests with dzVents. Supports command options.”

          Werkt goed, ik gebruik het zelf ook met mijn ledstrips om van kleur te veranderen.

          Groet Wouter

  12. Hoi Wouter,

    De volgende pagina werkt niet (meer)https://www.twoenter.nl/blog/domotica/verlichting-inschakelen-als-je-thuis-bent/
    Klopt dit?

    Gr,
    Roan

    1. Hoi Roan,

      Dat klopt ik ben ooit begonnen met het updaten van het artikel met mijn laatste versie van het script, maar die zit best ingewikkeld in elkaar. Ik heb geprobeerd wat verduidelijking in het script aan te brengen. De pagina staat weer online.

      Groet Wouter

  13. Hoi Wouter,
    Vraagje over het script. Ik heb alle ‘print’ items uitgezet maar het script blijft bepaalde zaken loggen naar het domoticz log. Hoe kan ik ervoor zorgen dat er niets meer in het log wordt weggeschreven?
    Grt Frank

    1. Hoi Frank,

      Geen idee. Domoticz gebruik ik al een aantal jaar niet meer. Welke tekst heeft het log dan nog weer?

      Groet Wouter

      1. Ha Wouter,

        Log-entry ziet er als volgt uit:
        2024-03-01 11:09:01.587 Status: EventSystem: Script event triggered: Aanwezigheid
        2024-03-01 11:09:01.856 Status: dzVents: Info: Handling events for: “Telefoon Frank”, value: “On”

        1. Aha oké, dat zijn standaard regels van dzvents dat het script is gestart en wat is uitgevoerd. Wellicht dat je dat kunt wijzigen in de instellingen van dzvents

Laat weten wat je van dit artikel vindt!

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.

%d bloggers liken dit: