- Home
- Deutsch
- Entwicklung
- [Major Update] UniFi Adapter v0.5.0
[Major Update] UniFi Adapter v0.5.0
-
@crunchip @braindead
Ich habe in mein Blockly eine Verzögerung eingebaut. Den Adapter habe ich auf 60 Sekunden gelassen. Heute Nacht habe ich das mal mit 2 Minuten Verzögerung laufen gelassen. (nur für die Abmeldung/Offline Meldung) Bei 2 Minuten Verzögerung hatte ich nicht eine einzige Offline Meldung. Die Online Meldung kommt beim nächsten Adapter Intervall Durchlauf und die Offline Meldung dann nach Adapter Intevall Durchlauf + max die eingestellte Verzögerung. Ich werde jetzt mal die Verzögerung nur knapp über dem Updateintervall testen. (eine Minute Verzögerung reicht bei meiner Installation nicht)Falls Jemand probieren möchte:
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id=";k,Ihk0[-)fmYrQXm8m^">anlegen_in</variable> <variable type="" id="fyVM({2.Ubq}R7hxFVRc">speicherort</variable> <variable type="" id="nTXOZ!3I{zM-7hg^DXcc">person_1_is_online_DP</variable> <variable type="" id="lvz.2`K]e8c1*JEc-vJu">anwesenheit_person_1</variable> <variable type="" id="@i-nl2q|$|OFpK!Yx+CC">anwesenheit_person_2</variable> <variable type="" id="yB(N?#)zIjYIo%.B@UT(">person_2_is_online_DP</variable> <variable type="" id=";^euFaDvC/jHl4C^!SUw">person_1</variable> <variable type="undefined" id="start">start</variable> <variable type="" id="sgYRW3,@::dC5Ux]x;8|">person_2</variable> <variable type="" id=";,S.tm1x]$^/_:4UWB~|">verzoegerung_person_1</variable> <variable type="undefined" id="warten_person_1">warten_person_1</variable> <variable type="undefined" id="warten_person_2">warten_person_2</variable> <variable type="" id="XzCE`hDBP%sX+x?@f$E;">verzoegerung_person_2</variable> <variable type="" id="![EW]9b!hQ9S[MT.q}6-">telegram_benutzer</variable> </variables> <block type="procedures_defcustomnoreturn" id="eZsGA^2r{c%G,YpuLp]K" x="13" y="13"> <mutation statements="false"> <arg name="anlegen_in" varid=";k,Ihk0[-)fmYrQXm8m^"></arg> </mutation> <field name="NAME">Datenpunkte_anlegen</field> <field name="SCRIPT">LyoqCiAqIENyZWF0ZSBzdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wIG9yIGphdmFzY3JpcHQueAogKiBDdXJyZW50IFZlcnNpb246ICAgICBodHRwczovL2dpdGh1Yi5jb20vTWljLU0vaW9icm9rZXIuY3JlYXRlVXNlclN0YXRlcwogKiBTdXBwb3J0OiAgICAgICAgICAgICBodHRwczovL2ZvcnVtLmlvYnJva2VyLm5ldC90b3BpYy8yNjgzOS8KICogQXV0b3I6ICAgICAgICAgICAgICAgTWljIChpb0Jyb2tlcikgfCBNaWMtTSAoZ2l0aHViKQogKiBWZXJzaW9uOiAgICAgICAgICAgICAxLjEgKDI2IEphbnVhcnkgMjAyMCkKICogRXhhbXBsZTogICAgICAgICAgICAgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWMtTS9pb2Jyb2tlci5jcmVhdGVVc2VyU3RhdGVzI2JlaXNwaWVsCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIFBMRUFTRSBOT1RFOiBQZXIgaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCwgdGhlIHVzZWQgZnVuY3Rpb24gc2V0T2JqZWN0KCkgCiAqICAgICAgICAgICAgICBleGVjdXRlcyB0aGUgY2FsbGJhY2sgUFJJT1IgdG8gY29tcGxldGluZyB0aGUgc3RhdGUgY3JlYXRpb24uIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlci4gCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEBwYXJhbSB7c3RyaW5nfSB3aGVyZSAgICAgICAgICBXaGVyZSB0byBjcmVhdGUgdGhlIHN0YXRlOiAnMF91c2VyZGF0YS4wJyBvciAnamF2YXNjcmlwdC54Jy4KICogQHBhcmFtIHtib29sZWFufSBmb3JjZSAgICAgICAgIEZvcmNlIHN0YXRlIGNyZWF0aW9uIChvdmVyd3JpdGUpLCBpZiBzdGF0ZSBpcyBleGlzdGluZy4KICogQHBhcmFtIHthcnJheX0gc3RhdGVzVG9DcmVhdGUgIFN0YXRlKHMpIHRvIGNyZWF0ZS4gc2luZ2xlIGFycmF5IG9yIGFycmF5IG9mIGFycmF5cwogKiBAcGFyYW0ge29iamVjdH0gW2NhbGxiYWNrXSAgICAgT3B0aW9uYWw6IGEgY2FsbGJhY2sgZnVuY3Rpb24gLS0gVGhpcyBwcm92aWRlZCBmdW5jdGlvbiB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCBzdGF0ZXMgYXJlIGNyZWF0ZWQuCiAqLwoKCmZ1bmN0aW9uIGNyZWF0ZVVzZXJTdGF0ZXMod2hlcmUsIGZvcmNlLCBzdGF0ZXNUb0NyZWF0ZSwgY2FsbGJhY2sgPSB1bmRlZmluZWQpIHsKIAogICAgY29uc3QgV0FSTiA9IGZhbHNlOyAvLyBPbmx5IGZvciAwX3VzZXJkYXRhLjA6IFRocm93cyB3YXJuaW5nIGluIGxvZywgaWYgc3RhdGUgaXMgYWxyZWFkeSBleGlzdGluZyBhbmQgZm9yY2U9ZmFsc2UuIERlZmF1bHQgaXMgZmFsc2UsIHNvIG5vIHdhcm5pbmcgaW4gbG9nLCBpZiBzdGF0ZSBleGlzdHMuCiAgICBjb25zdCBMT0dfREVCVUcgPSBmYWxzZTsgLy8gVG8gZGVidWcgdGhpcyBmdW5jdGlvbiwgc2V0IHRvIHRydWUKICAgIC8vIFBlciBpc3N1ZSAjNDc0IChodHRwczovL2dpdGh1Yi5jb20vaW9Ccm9rZXIvaW9Ccm9rZXIuamF2YXNjcmlwdC9pc3N1ZXMvNDc0KSwgdGhlIHVzZWQgZnVuY3Rpb24gc2V0T2JqZWN0KCkgZXhlY3V0ZXMgdGhlIGNhbGxiYWNrIAogICAgLy8gYmVmb3JlIHRoZSBzdGF0ZSBpcyBhY3R1YWwgY3JlYXRlZC4gVGhlcmVmb3JlLCB3ZSB1c2UgYSBzZXRUaW1lb3V0IGFuZCBjb3VudGVyIGFzIGEgd29ya2Fyb3VuZC4KICAgIGNvbnN0IERFTEFZID0gNTA7IC8vIERlbGF5IGluIG1pbGxpc2Vjb25kcyAobXMpLiBJbmNyZWFzZSB0aGlzIHRvIDEwMCwgaWYgaXQgaXMgbm90IHdvcmtpbmcuCgogICAgLy8gVmFsaWRhdGUgIndoZXJlIgogICAgaWYgKHdoZXJlLmVuZHNXaXRoKCcuJykpIHdoZXJlID0gd2hlcmUuc2xpY2UoMCwgLTEpOyAvLyBSZW1vdmUgdHJhaWxpbmcgZG90CiAgICBpZiAoICh3aGVyZS5tYXRjaCgvXigoamF2YXNjcmlwdFwuKFsxLTldWzAtOV18WzAtOV0pKSR8MF91c2VyZGF0YVwuMCQpLykgPT0gbnVsbCkgKSB7CiAgICAgICAgbG9nKCdUaGlzIHNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHRvIGNyZWF0ZSBzdGF0ZXMgdW5kZXIgWycgKyB3aGVyZSArICddJywgJ2Vycm9yJyk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIFByZXBhcmUgInN0YXRlc1RvQ3JlYXRlIiBzaW5jZSB3ZSBhbHNvIGFsbG93IGEgc2luZ2xlIHN0YXRlIHRvIGNyZWF0ZQogICAgaWYoIUFycmF5LmlzQXJyYXkoc3RhdGVzVG9DcmVhdGVbMF0pKSBzdGF0ZXNUb0NyZWF0ZSA9IFtzdGF0ZXNUb0NyZWF0ZV07IC8vIHdyYXAgaW50byBhcnJheSwgaWYganVzdCBvbmUgYXJyYXkgYW5kIG5vdCBpbnNpZGUgYW4gYXJyYXkKCiAgICAvLyBBZGQgIndoZXJlIiB0byBTVEFURVNfVE9fQ1JFQVRFCiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXRlc1RvQ3JlYXRlLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgbGV0IGxwUGF0aCA9IHN0YXRlc1RvQ3JlYXRlW2ldWzBdLnJlcGxhY2UoL1wuKlwuL2csICcuJyk7IC8vIHJlcGxhY2UgYWxsIG11bHRpcGxlIGRvdHMgbGlrZSAnLi4nLCAnLi4uJyB3aXRoIGEgc2luZ2xlICcuJwogICAgICAgIGxwUGF0aCA9IGxwUGF0aC5yZXBsYWNlKC9eKChqYXZhc2NyaXB0XC4oWzEtOV1bMC05XXxbMC05XSlcLil8MF91c2VyZGF0YVwuMFwuKS8sJycpIC8vIHJlbW92ZSBhbnkgamF2YXNjcmlwdC54LiAvIDBfdXNlcmRhdGEuMC4gZnJvbSBiZWdpbm5pbmcKICAgICAgICBscFBhdGggPSB3aGVyZSArICcuJyArIGxwUGF0aDsgLy8gYWRkIHdoZXJlIHRvIGJlZ2lubmluZyBvZiBzdHJpbmcKICAgICAgICBzdGF0ZXNUb0NyZWF0ZVtpXVswXSA9IGxwUGF0aDsKICAgIH0KCiAgICBpZiAod2hlcmUgIT0gJzBfdXNlcmRhdGEuMCcpIHsKICAgICAgICAvLyBDcmVhdGUgU3RhdGVzIHVuZGVyIGphdmFzY3JpcHQueAogICAgICAgIGxldCBudW1TdGF0ZXMgPSBzdGF0ZXNUb0NyZWF0ZS5sZW5ndGg7CiAgICAgICAgc3RhdGVzVG9DcmVhdGUuZm9yRWFjaChmdW5jdGlvbihsb29wUGFyYW0pIHsKICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIE5vdyB3ZSBhcmUgY3JlYXRpbmcgbmV3IHN0YXRlIFsnICsgbG9vcFBhcmFtWzBdICsgJ10nKTsKICAgICAgICAgICAgbGV0IGxvb3BJbml0ID0gKGxvb3BQYXJhbVsxXVsnZGVmJ10gPT0gdW5kZWZpbmVkKSA/IG51bGwgOiBsb29wUGFyYW1bMV1bJ2RlZiddOyAvLyBtaW1pYyBzYW1lIGJlaGF2aW9yIGFzIGNyZWF0ZVN0YXRlIGlmIG5vIGluaXQgdmFsdWUgaXMgcHJvdmlkZWQKICAgICAgICAgICAgY3JlYXRlU3RhdGUobG9vcFBhcmFtWzBdLCBsb29wSW5pdCwgZm9yY2UsIGxvb3BQYXJhbVsxXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBudW1TdGF0ZXMtLTsKICAgICAgICAgICAgICAgIGlmIChudW1TdGF0ZXMgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gQWxsIHN0YXRlcyBwcm9jZXNzZWQuJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBleGVjdXRlIGlmIGEgZnVuY3Rpb24gd2FzIHByb3ZpZGVkIHRvIHBhcmFtZXRlciBjYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gRnVuY3Rpb24gdG8gY2FsbGJhY2sgcGFyYW1ldGVyIHdhcyBwcm92aWRlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQ3JlYXRlIFN0YXRlcyB1bmRlciAwX3VzZXJkYXRhLjAKICAgICAgICBsZXQgbnVtU3RhdGVzID0gc3RhdGVzVG9DcmVhdGUubGVuZ3RoOwogICAgICAgIGxldCBjb3VudGVyID0gLTE7CiAgICAgICAgc3RhdGVzVG9DcmVhdGUuZm9yRWFjaChmdW5jdGlvbihsb29wUGFyYW0pIHsKICAgICAgICAgICAgY291bnRlciArPSAxOwogICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2cgKCdbRGVidWddIEN1cnJlbnRseSBwcm9jZXNzaW5nIGZvbGxvd2luZyBzdGF0ZTogWycgKyBsb29wUGFyYW1bMF0gKyAnXScpOwogICAgICAgICAgICBpZiggKCQobG9vcFBhcmFtWzBdKS5sZW5ndGggPiAwKSAmJiAoZXhpc3RzU3RhdGUobG9vcFBhcmFtWzBdKSkgKSB7IC8vIFdvcmthcm91bmQgZHVlIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9pb0Jyb2tlci9pb0Jyb2tlci5qYXZhc2NyaXB0L2lzc3Vlcy80NzgKICAgICAgICAgICAgICAgIC8vIFN0YXRlIGlzIGV4aXN0aW5nLgogICAgICAgICAgICAgICAgaWYgKFdBUk4gJiYgIWZvcmNlKSBsb2coJ1N0YXRlIFsnICsgbG9vcFBhcmFtWzBdICsgJ10gaXMgYWxyZWFkeSBleGlzdGluZyBhbmQgd2lsbCBubyBsb25nZXIgYmUgY3JlYXRlZC4nLCAnd2FybicpOwogICAgICAgICAgICAgICAgaWYgKCFXQVJOICYmIExPR19ERUJVRykgbG9nKCdbRGVidWddIFN0YXRlIFsnICsgbG9vcFBhcmFtWzBdICsgJ10gaXMgYWxyZWFkeSBleGlzdGluZy4gT3B0aW9uIGZvcmNlICg9b3ZlcndyaXRlKSBpcyBzZXQgdG8gWycgKyBmb3JjZSArICddLicpOwogICAgICAgICAgICAgICAgaWYoIWZvcmNlKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gU3RhdGUgZXhpc3RzIGFuZCBzaGFsbCBub3QgYmUgb3ZlcndyaXR0ZW4gc2luY2UgZm9yY2U9ZmFsc2UKICAgICAgICAgICAgICAgICAgICAvLyBTbywgd2UgZG8gbm90IHByb2NlZWQuCiAgICAgICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bVN0YXRlcyA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gQWxsIHN0YXRlcyBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkIScpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7IC8vIGV4ZWN1dGUgaWYgYSBmdW5jdGlvbiB3YXMgcHJvdmlkZWQgdG8gcGFyYW1ldGVyIGNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gQW4gb3B0aW9uYWwgY2FsbGJhY2sgZnVuY3Rpb24gd2FzIHByb3ZpZGVkLCB3aGljaCB3ZSBhcmUgZ29pbmcgdG8gZXhlY3V0ZSBub3cuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZ28gb3V0IGFuZCBjb250aW51ZSB3aXRoIG5leHQgZWxlbWVudCBpbiBsb29wLgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE4NDUyOTIwL2NvbnRpbnVlLWluLWN1cnNvci1mb3JlYWNoCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAvLyBpZighZm9yY2UpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFN0YXRlIGlzIG5vdCBleGlzdGluZyBvciBmb3JjZSA9IHRydWUsIHNvIHdlIGFyZSBjb250aW51aW5nIHRvIGNyZWF0ZSB0aGUgc3RhdGUgdGhyb3VnaCBzZXRPYmplY3QoKS4KICAgICAgICAgICAgbGV0IG9iaiA9IHt9OwogICAgICAgICAgICBvYmoudHlwZSA9ICdzdGF0ZSc7CiAgICAgICAgICAgIG9iai5uYXRpdmUgPSB7fTsKICAgICAgICAgICAgb2JqLmNvbW1vbiA9IGxvb3BQYXJhbVsxXTsKICAgICAgICAgICAgc2V0T2JqZWN0KGxvb3BQYXJhbVswXSwgb2JqLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgbG9nKCdDYW5ub3Qgd3JpdGUgb2JqZWN0IGZvciBzdGF0ZSBbJyArIGxvb3BQYXJhbVswXSArICddOiAnICsgZXJyKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIE5vdyB3ZSBhcmUgY3JlYXRpbmcgbmV3IHN0YXRlIFsnICsgbG9vcFBhcmFtWzBdICsgJ10nKQogICAgICAgICAgICAgICAgICAgIGxldCBpbml0ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBpZihsb29wUGFyYW1bMV0uZGVmID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYobG9vcFBhcmFtWzFdLnR5cGUgPT09ICdudW1iZXInKSBpbml0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYobG9vcFBhcmFtWzFdLnR5cGUgPT09ICdib29sZWFuJykgaW5pdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBpZihsb29wUGFyYW1bMV0udHlwZSA9PT0gJ3N0cmluZycpIGluaXQgPSAnJzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpbml0ID0gbG9vcFBhcmFtWzFdLmRlZjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0U3RhdGUobG9vcFBhcmFtWzBdLCBpbml0LCB0cnVlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBzZXRTdGF0ZSBkdXJjaGdlZsO8aHJ0OiAnICsgbG9vcFBhcmFtWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVN0YXRlcy0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bVN0YXRlcyA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbGwgc3RhdGVzIHByb2Nlc3NlZC4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7IC8vIGV4ZWN1dGUgaWYgYSBmdW5jdGlvbiB3YXMgcHJvdmlkZWQgdG8gcGFyYW1ldGVyIGNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBGdW5jdGlvbiB0byBjYWxsYmFjayBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfSwgREVMQVkgKyAoMjAgKiBjb3VudGVyKSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9KTsKICAgIH0KfQoKcGVyc29uMSA9ICdIZWlrbycKcGVyc29uMiA9ICdLZXJzdGluJwpsZXQgc3RhdGVzVG9DcmVhdGUgPSBbCiAgICAvL0Fud2VzZW5oZWl0IFBlcnNvbmVuL0hhbmR5cwogICAgWydVbmlmaS5Bbndlc2VuaGVpdC4nK1twZXJzb24xXSwgeyduYW1lJzpbcGVyc29uMV0rJyBBbndlc2VuaGVpdCcsICd0eXBlJzonc3RyaW5nJywgJ3JlYWQnOnRydWUsICd3cml0ZSc6dHJ1ZSwgJ3JvbGUnOidzdHJpbmcnLCAnZGVmJzonbm9jaCBsZWVyJyB9XSwKICAgIFsnVW5pZmkuQW53ZXNlbmhlaXQuJytbcGVyc29uMl0sIHsnbmFtZSc6W3BlcnNvbjJdKycgQW53ZXNlbmhlaXQnLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonc3RyaW5nJywgJ2RlZic6J25vY2ggbGVlcicgfV0sCiAgIApdOwoKY3JlYXRlVXNlclN0YXRlcyhhbmxlZ2VuX2luLCBmYWxzZSwgc3RhdGVzVG9DcmVhdGUsIGZ1bmN0aW9uKCl7OwogICAgbWFpbigpOwp9KTsKCgo=</field> <comment pinned="false" h="80" w="160">Datenpunkte erstellen</comment> </block> <block type="variables_set" id="oODt+HYM*+ptP0jLnPoN" x="13" y="62"> <field name="VAR" id="fyVM({2.Ubq}R7hxFVRc" variabletype="">speicherort</field> <value name="VALUE"> <block type="text" id="^a2)}wPt=s[~]UsHJqvr"> <field name="TEXT">0_userdata.0</field> </block> </value> <next> <block type="comment" id="@hJky?+Qv5OpJOJa;Tl6"> <field name="COMMENT">Unifi Adapter Client DP is_online</field> <next> <block type="variables_set" id="Y?6=|YzWSeM4LOdF5$XM"> <field name="VAR" id="nTXOZ!3I{zM-7hg^DXcc" variabletype="">person_1_is_online_DP</field> <value name="VALUE"> <block type="field_oid" id="knG,[`=1g+b,s{kx1EP,"> <field name="oid">unifi.0.default.clients.8c:b8:4a:34:ac:85.is_online</field> </block> </value> <next> <block type="comment" id="/R=ulymL%~caLxh2Ilfo"> <field name="COMMENT">Unifi Adapter Client DP is_online</field> <next> <block type="variables_set" id="Vx9vV3Sg8kY@H?;zDw@("> <field name="VAR" id="yB(N?#)zIjYIo%.B@UT(" variabletype="">person_2_is_online_DP</field> <value name="VALUE"> <block type="field_oid" id="!feFu(z:sKBl~0nK`eGu"> <field name="oid">unifi.0.default.clients.04:d6:aa:76:06:53.is_online</field> </block> </value> <next> <block type="variables_set" id="9m,K[:2^)KFEl|00rZQ7"> <field name="VAR" id=";^euFaDvC/jHl4C^!SUw" variabletype="">person_1</field> <value name="VALUE"> <block type="text" id="pJ}1(u|}l3lA7~[z+Wg5"> <field name="TEXT">Heiko</field> </block> </value> <next> <block type="comment" id="}W{ch-1OEjvE8xy`G(aN"> <field name="COMMENT">60000 x 1 = 1 Minute</field> <next> <block type="comment" id="vOE*^-a,jtYycI=KQ)Q!"> <field name="COMMENT">90000 x 1 = 1,5 Minuten</field> <next> <block type="variables_set" id="WCX(yO/edOT~0H{EzEDJ"> <field name="VAR" id=";,S.tm1x]$^/_:4UWB~|" variabletype="">verzoegerung_person_1</field> <value name="VALUE"> <block type="math_arithmetic" id="8=|?+a[CEu_T?522u981"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="y=JYnz0]^+S}-0Wcp8dK"> <field name="NUM">90000</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="xBI[G7a_J/}x!L4k{6FN"> <field name="NUM">1</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="k`L|~6i[HzfGD|D*L^Z["> <field name="VAR" id="sgYRW3,@::dC5Ux]x;8|" variabletype="">person_2</field> <value name="VALUE"> <block type="text" id="$^o6%]+%A^W3{Txo4Yds"> <field name="TEXT">Kerstin</field> </block> </value> <next> <block type="variables_set" id="aJJ+aqI83onu8lQ]Q_UQ"> <field name="VAR" id="XzCE`hDBP%sX+x?@f$E;" variabletype="">verzoegerung_person_2</field> <value name="VALUE"> <block type="math_arithmetic" id="q`nu[t,DyhqtYO9Tp}`Y"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="`Ce#nDl]~dO36UCkyB]1"> <field name="NUM">90000</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="cHM6|FVqyG^7-@=9PZ$t"> <field name="NUM">1</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="bEu?$N6,|qbfd8h2t;xr"> <field name="VAR" id="![EW]9b!hQ9S[MT.q}6-" variabletype="">telegram_benutzer</field> <value name="VALUE"> <block type="text" id="@AJ19!Lch7=H%ib(sX@`"> <field name="TEXT">Heiko</field> </block> </value> <next> <block type="procedures_callcustomnoreturn" id="(4(-f$1VS~CwO}P[R@.6" collapsed="true"> <mutation name="Datenpunkte_anlegen"> <arg name="anlegen_in"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="!74)L93;^_?DR0pALJ9f"> <field name="VAR" id="fyVM({2.Ubq}R7hxFVRc" variabletype="">speicherort</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defnoreturn" id="SSMy$1MUVX,GQsbb[2*m" collapsed="true" x="12" y="437"> <field name="NAME">main</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="timeouts_cleartimeout" id="TZP~F0nTRJ5tX).DDSa`"> <field name="NAME">start</field> <next> <block type="variables_set" id=",U2@|cXpD(cMh/t+?6ch"> <field name="VAR" id="lvz.2`K]e8c1*JEc-vJu" variabletype="">anwesenheit_person_1</field> <value name="VALUE"> <block type="text_join" id="!1[II16BPGnRh-7=6hz["> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="xK5Ij}90B8}K(46SJ?nI"> <field name="VAR" id="fyVM({2.Ubq}R7hxFVRc" variabletype="">speicherort</field> </block> </value> <value name="ADD1"> <block type="text" id="j|:+t7a^%@D?7F{x85Vu"> <field name="TEXT">.Unifi.Anwesenheit.</field> </block> </value> <value name="ADD2"> <block type="variables_get" id="/d9dG48mWBBOwwOV|b7q"> <field name="VAR" id=";^euFaDvC/jHl4C^!SUw" variabletype="">person_1</field> </block> </value> </block> </value> <next> <block type="variables_set" id="!b3P0hupqzO)$LYY_96G"> <field name="VAR" id="@i-nl2q|$|OFpK!Yx+CC" variabletype="">anwesenheit_person_2</field> <value name="VALUE"> <block type="text_join" id="j^1|XvQ;,bZdK7j*e[W]"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="{e5Na0l3aK]%yCR.A^B{"> <field name="VAR" id="fyVM({2.Ubq}R7hxFVRc" variabletype="">speicherort</field> </block> </value> <value name="ADD1"> <block type="text" id="IVD:VEYV~yR=s_-/Xf!N"> <field name="TEXT">.Unifi.Anwesenheit.</field> </block> </value> <value name="ADD2"> <block type="variables_get" id="Aty5L{S^6krr(,SAac[M"> <field name="VAR" id="sgYRW3,@::dC5Ux]x;8|" variabletype="">person_2</field> </block> </value> </block> </value> <next> <block type="timeouts_settimeout" id=".|_m4*n~bGC)tC]M]!E^"> <field name="NAME">start</field> <field name="DELAY">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="controls_if" id="@IdN-@8]b19pM5K:RKAV"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="mOtoF5ZD{_J6ssks0m)y"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="P=ub#}lCd=k9sU(YPcg:"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="+?=%oVJ6|*ti.6j6/Wxj"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="l+hT5v.Pk.O2J$/Iaqt,"> <field name="VAR" id="nTXOZ!3I{zM-7hg^DXcc" variabletype="">person_1_is_online_DP</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="9{xgUNQr|Jen;~u_$)6d"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id=".V]CdR(,WY/[gHi[+RLy" inline="true"> <field name="TYPE">true</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="hRVN~;8VstUL/pd4KSAZ"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="3%^DGT`3E`2/0p:w3{4^"> <field name="VAR" id="lvz.2`K]e8c1*JEc-vJu" variabletype="">anwesenheit_person_1</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="bbVKs5v:Ert)PYdo!`!i"> <field name="BOOL">TRUE</field> </shadow> <block type="text_join" id="f8$xC!VB#l1J#2YIx60!"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="1oBT:?uj_zr?Mgi+#WM`"> <field name="VAR" id=";^euFaDvC/jHl4C^!SUw" variabletype="">person_1</field> </block> </value> <value name="ADD1"> <block type="text" id="SWk`f2QCt@7CE*{M9F=y"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="Gh(!zydv3Jh_{d7dIKNr"> <field name="TEXT">ist online ✅</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="I7CJ`-|pTzVbPm]Rm~#j"> <field name="NUM">0</field> </shadow> </value> </block> </statement> <statement name="ELSE"> <block type="control_ex" id="Rm7t|TP;p?8IkYCVTFYf" inline="true"> <field name="TYPE">true</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="hRVN~;8VstUL/pd4KSAZ"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="rh!@7z?k=8.uZbxF?DoI"> <field name="VAR" id="lvz.2`K]e8c1*JEc-vJu" variabletype="">anwesenheit_person_1</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="bbVKs5v:Ert)PYdo!`!i"> <field name="BOOL">TRUE</field> </shadow> <block type="text_join" id=";.n,Hn*I2XhhSW85o_Q2"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="tu5-.4UIt2~I(onp}L$P"> <field name="VAR" id=";^euFaDvC/jHl4C^!SUw" variabletype="">person_1</field> </block> </value> <value name="ADD1"> <block type="text" id="`*!Euh8@c0Kv1`dL)`|]"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="OP@O9n8`%s$i4iu!qalG"> <field name="TEXT">ist offline ❌</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="?QJBHR?P%=ONW9U|7bz~"> <field name="NUM">0</field> </shadow> </value> </block> </statement> <next> <block type="controls_if" id="CW7PDI-i5$*GOj_KJb4Q"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="-!aPk*oy9xC5J=ysP)7="> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="n+Ps:J5qI;GEdiv{)E?z"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="+?=%oVJ6|*ti.6j6/Wxj"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="!|b(=p?G65~q+jglAR8w"> <field name="VAR" id="yB(N?#)zIjYIo%.B@UT(" variabletype="">person_2_is_online_DP</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="!(SIj5PDvV$R:iUQ*(LP"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="4VEiHKIjpLMpRX2h?+MR" inline="true"> <field name="TYPE">true</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="hRVN~;8VstUL/pd4KSAZ"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="MTibw$-yf66T#p]`3z?r"> <field name="VAR" id="@i-nl2q|$|OFpK!Yx+CC" variabletype="">anwesenheit_person_2</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="bbVKs5v:Ert)PYdo!`!i"> <field name="BOOL">TRUE</field> </shadow> <block type="text_join" id=":iT@UQ1eLTq{?.Nc0-Ob"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id=")vF^Rbw,2,7/)$D8gF};"> <field name="VAR" id="sgYRW3,@::dC5Ux]x;8|" variabletype="">person_2</field> </block> </value> <value name="ADD1"> <block type="text" id="23zE8haiF=Z5L.H#Pk7i"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="+0!/qeY$7F8aH-xnRR*0"> <field name="TEXT">ist online ✅</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="l4gI%#`:C=?(4rd|p`^."> <field name="NUM">0</field> </shadow> </value> </block> </statement> <statement name="ELSE"> <block type="control_ex" id="W?x]+MW|=5vu@Uj(3,75" inline="true"> <field name="TYPE">true</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="hRVN~;8VstUL/pd4KSAZ"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="VV1Lj`Qf^tQkmc+x.maW"> <field name="VAR" id="@i-nl2q|$|OFpK!Yx+CC" variabletype="">anwesenheit_person_2</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="bbVKs5v:Ert)PYdo!`!i"> <field name="BOOL">TRUE</field> </shadow> <block type="text_join" id="ll.R;kcidI|hRLwDFVB{"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="WD$^uCEDqYwF6:QS*F]j"> <field name="VAR" id="sgYRW3,@::dC5Ux]x;8|" variabletype="">person_2</field> </block> </value> <value name="ADD1"> <block type="text" id="wR$`1P`CT=B)$/YSN(~J"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="4c(~/}V#~bT!jwy2iB}J"> <field name="TEXT">ist offline ❌</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="!d5FRdKZAaU7?)=#m4%_"> <field name="NUM">0</field> </shadow> </value> </block> </statement> </block> </next> </block> </statement> <next> <block type="on_ext" id="SX%6!fqcVoVlD@SU-7Y4"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id=";0_S:)AqTJF$]lRUv@gx"> <field name="oid">default</field> </shadow> <block type="variables_get" id="UKe(AmN7{4GdYH(3_`O#"> <field name="VAR" id="nTXOZ!3I{zM-7hg^DXcc" variabletype="">person_1_is_online_DP</field> </block> </value> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id=";5poL43K$!]^/%.4$m+%"> <field name="NAME">warten_person_1</field> <next> <block type="controls_if" id="_z?rO3%XvQmDU%U1=lon"> <value name="IF0"> <block type="on_source" id="_(Fal+8L^ATHe#Hq|y+9"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="control_ex" id="LM-KIX/g(V6Tuik9CLF/" inline="true"> <field name="TYPE">true</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="hRVN~;8VstUL/pd4KSAZ"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="7,y}skvg#u?n$OT[5K=S"> <field name="VAR" id="lvz.2`K]e8c1*JEc-vJu" variabletype="">anwesenheit_person_1</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="bbVKs5v:Ert)PYdo!`!i"> <field name="BOOL">TRUE</field> </shadow> <block type="text_join" id="l|J80x/T-`0?9M^7b]:N"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id=".qiA1:)|eFl9@:8-b6*`"> <field name="VAR" id=";^euFaDvC/jHl4C^!SUw" variabletype="">person_1</field> </block> </value> <value name="ADD1"> <block type="text" id="G0=0Fc~I_fA]0O)}g3W("> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="]N,+4OnsaC~Lw_.k0/hh"> <field name="TEXT">ist online ✅</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="1:S1**dQmdnwe.l7.Z-b"> <field name="NUM">0</field> </shadow> </value> </block> </statement> <next> <block type="timeouts_settimeout" id="=B9@U~m`_A#Z6:]qChNR"> <field name="NAME">warten_person_1</field> <field name="DELAY">verzoegerung_person_1</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="controls_if" id="1VR-AfT4Oa^*9,9^jtoL"> <value name="IF0"> <block type="logic_negate" id="7-N(LCjniX9-2w}5C|lV"> <value name="BOOL"> <block type="on_source" id="9dgu*Y:=}#idI+CVK{?O"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="YN=l|7.)+2WVOGMcg!/`" inline="true"> <field name="TYPE">true</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="hRVN~;8VstUL/pd4KSAZ"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="4.t^B;y;~YJA^DTb;gyE"> <field name="VAR" id="lvz.2`K]e8c1*JEc-vJu" variabletype="">anwesenheit_person_1</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="bbVKs5v:Ert)PYdo!`!i"> <field name="BOOL">TRUE</field> </shadow> <block type="text_join" id="o}K:*wP8{onf4yKv=4YT"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="941ISD`abMu2l=]8Y(/m"> <field name="VAR" id=";^euFaDvC/jHl4C^!SUw" variabletype="">person_1</field> </block> </value> <value name="ADD1"> <block type="text" id="ZM+pW%,1k!o2Vf?t0R?l"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="S__OPp))@Dgo/JTcf}ax"> <field name="TEXT">ist offline ❌</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="f6RJ7!swO;Le1Bfko;L2"> <field name="NUM">0</field> </shadow> </value> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </statement> <next> <block type="on_ext" id="~ObZs=5%-:^CnQuYO(z="> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id=";0_S:)AqTJF$]lRUv@gx"> <field name="oid">default</field> </shadow> <block type="variables_get" id="Olbu@Xq[MZTK?j4d_a#g"> <field name="VAR" id="yB(N?#)zIjYIo%.B@UT(" variabletype="">person_2_is_online_DP</field> </block> </value> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="TP402$RK@-Gp1F8cUm2A"> <field name="NAME">warten_person_2</field> <next> <block type="controls_if" id="!K2H`_FR~oD9eh*@T1|w"> <value name="IF0"> <block type="on_source" id="*I8C7_{s9`7I(Zx#@%|2"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="control_ex" id="mFAN(dDUr6q/gR6UwBVZ" inline="true"> <field name="TYPE">true</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="hRVN~;8VstUL/pd4KSAZ"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="$UftmC*.f}ze-ab-ys,Q"> <field name="VAR" id="@i-nl2q|$|OFpK!Yx+CC" variabletype="">anwesenheit_person_2</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="bbVKs5v:Ert)PYdo!`!i"> <field name="BOOL">TRUE</field> </shadow> <block type="text_join" id="P3N04_kX]?qG{Xs2[(fH"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="P5IAcPBtd#@dS,*2B@fW"> <field name="VAR" id="sgYRW3,@::dC5Ux]x;8|" variabletype="">person_2</field> </block> </value> <value name="ADD1"> <block type="text" id="r7@)j/8/+({|VPB=@6%r"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="xxE=NzJgw3NYsn-%!LPx"> <field name="TEXT">ist online ✅</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="p/d5]r.~2%E#lqUZ+Zzo"> <field name="NUM">0</field> </shadow> </value> </block> </statement> <next> <block type="timeouts_settimeout" id="@C,B!T7fXep/Dm=_:4d3"> <field name="NAME">warten_person_2</field> <field name="DELAY">verzoegerung_person_2</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="controls_if" id="MR]9DN1U5jsMH!CAUwnx"> <value name="IF0"> <block type="logic_negate" id=",X~j=CgHu3Dua,Pajc)c"> <value name="BOOL"> <block type="on_source" id=":T;WH4z-(3~qmteGL,c3"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="L{2Dp(q220seA@K)H~:9" inline="true"> <field name="TYPE">true</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="hRVN~;8VstUL/pd4KSAZ"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="37B(F$tlde-Bt#u.;L~#"> <field name="VAR" id="@i-nl2q|$|OFpK!Yx+CC" variabletype="">anwesenheit_person_2</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="bbVKs5v:Ert)PYdo!`!i"> <field name="BOOL">TRUE</field> </shadow> <block type="text_join" id="eFy4q-cPhD:xWFQ|LO1f"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id=";$UrDWF]KPE{L^K`r/hr"> <field name="VAR" id="sgYRW3,@::dC5Ux]x;8|" variabletype="">person_2</field> </block> </value> <value name="ADD1"> <block type="text" id="wwJ^.~7}z9=7(BjXQ.p)"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="lM_E)oJ#UCr|#hxu*pAT"> <field name="TEXT">ist offline ❌</field> </block> </value> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="~ECK]+XM?KdV2JNU{|2O"> <field name="NUM">0</field> </shadow> </value> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </statement> <next> <block type="on_ext" id="kBmahL8nnn?vxO//$f-["> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="ni$tZS5FQYqe`2,/#UC,"> <field name="oid">default</field> </shadow> <block type="variables_get" id="QQcy{{[8Zg74:pbx$kRi"> <field name="VAR" id="lvz.2`K]e8c1*JEc-vJu" variabletype="">anwesenheit_person_1</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="$/OU#xEey?~;BXD:2yDW"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="Q~Ms:uf(M:~S,tM9,~js"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="i@wtxhk*E|Qo{AoB_u?I"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text_join" id="@,A~!kjAU/-aY3.wbM9;"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="TACK]j|)Lo@,E00/vwhP"> <field name="VAR" id=";^euFaDvC/jHl4C^!SUw" variabletype="">person_1</field> </block> </value> <value name="ADD1"> <block type="text" id="7hOD~O*?LrVG~dZ8TQ5`"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="L492!]0m|`X{r2h{+w=6"> <field name="TEXT">ist online ✅</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="telegram" id="54*y/hkmyWndQBH{h#)V"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">Markdown</field> <value name="MESSAGE"> <shadow type="text" id="F8`_}5Ls0W8c7x2c+hZa"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="IGB?:md|3ZD;,sYcS|bg"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="/tAT/wS-)[}+6m*I4~g8"> <field name="VAR" id=";^euFaDvC/jHl4C^!SUw" variabletype="">person_1</field> </block> </value> <value name="ADD1"> <block type="text" id="fFlUO))aCIA!f=Yag|;M"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="V[o?yVyX~D{w{(:^NNVr"> <field name="TEXT">ist online ✅</field> </block> </value> </block> </value> <value name="USERNAME"> <block type="variables_get" id="41ZPm5?AKrt.cqhBg3{2"> <field name="VAR" id="![EW]9b!hQ9S[MT.q}6-" variabletype="">telegram_benutzer</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="telegram" id="gONL!Ak:KiDx*lp_)..%"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">Markdown</field> <value name="MESSAGE"> <shadow type="text" id="=nQH.TsZSn{lfpy^dbYY"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="z,us3C]4=+L0DA.p_}lp"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="i3Q4|n~53-sQ?^T*H.TC"> <field name="VAR" id=";^euFaDvC/jHl4C^!SUw" variabletype="">person_1</field> </block> </value> <value name="ADD1"> <block type="text" id="QFr-g%mo//Sg8;:roRfA"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id=")0nYWe-N-O.,_Jrn${Vm"> <field name="TEXT">ist offline ❌</field> </block> </value> </block> </value> <value name="USERNAME"> <block type="variables_get" id="vm,}kUg}PwBi!:PsGM,{"> <field name="VAR" id="![EW]9b!hQ9S[MT.q}6-" variabletype="">telegram_benutzer</field> </block> </value> </block> </statement> </block> </statement> <next> <block type="on_ext" id="q4OPoLnwQVEJSw$nioXu"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="hXjoTKk;7Ym;i+XqSni1"> <field name="oid">default</field> </shadow> <block type="variables_get" id="U=OI/?JPPNn/VeC.eoBY"> <field name="VAR" id="@i-nl2q|$|OFpK!Yx+CC" variabletype="">anwesenheit_person_2</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="({xqy3x//DnK@jj08nId"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="7hJU.dk^tV/xxaHXK:96"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="lLs6wkl|I#q4lph`RbX("> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text_join" id="kT/l3;AAS%)aS2G#O$Kn"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="iVvqZxBB66K4Oco(cXJa"> <field name="VAR" id="sgYRW3,@::dC5Ux]x;8|" variabletype="">person_2</field> </block> </value> <value name="ADD1"> <block type="text" id="(J`VLxYAOs=YWWOW$[H+"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="o@}[*NOAo(#=4meNSS8q"> <field name="TEXT">ist online ✅</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="telegram" id="G/k/uD]_e{FwK|;oni_9"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">Markdown</field> <value name="MESSAGE"> <shadow type="text" id="F8`_}5Ls0W8c7x2c+hZa"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="EwI{:V.W#KbT~#,))hp4"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="rXJ#~l_SmSueR^}c}c+2"> <field name="VAR" id="sgYRW3,@::dC5Ux]x;8|" variabletype="">person_2</field> </block> </value> <value name="ADD1"> <block type="text" id="{++h2{_?][DK]_UJQ!1;"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="+T~B`e5Yo89(P:rS[eXJ"> <field name="TEXT">ist online ✅</field> </block> </value> </block> </value> <value name="USERNAME"> <block type="variables_get" id="SIP/Bn3+q.?-|~fP{|mj"> <field name="VAR" id="![EW]9b!hQ9S[MT.q}6-" variabletype="">telegram_benutzer</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="telegram" id="QrG*QsVt38c~9UI4H1.U"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">Markdown</field> <value name="MESSAGE"> <shadow type="text" id="=nQH.TsZSn{lfpy^dbYY"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="i*RxzVi!*A==)}IS5C}S"> <mutation items="3"></mutation> <value name="ADD0"> <block type="variables_get" id="}%!^~Qa|-+l=w6[91@*f"> <field name="VAR" id="sgYRW3,@::dC5Ux]x;8|" variabletype="">person_2</field> </block> </value> <value name="ADD1"> <block type="text" id="nE0K73Q(?EJwI52FCdl@"> <field name="TEXT"> </field> </block> </value> <value name="ADD2"> <block type="text" id="zQ8F1qC^L?*7c#hE}z_A"> <field name="TEXT">ist offline ❌</field> </block> </value> </block> </value> <value name="USERNAME"> <block type="variables_get" id="M|AZ+FjOe.JP3wkCCbbC"> <field name="VAR" id="![EW]9b!hQ9S[MT.q}6-" variabletype="">telegram_benutzer</field> </block> </value> </block> </statement> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </xml>
-
@dslraser ich werde es mal testen
-
@crunchip sagte in [Major Update] UniFi Adapter v0.5.0:
@dslraser ich werde es mal testen
Hat heute morgen und eben (ich war unterwegs) funktioniert wie gewünscht.
-
@dslraser ja sieht besser aus, soweit ich testen konnte.
Übrigens läuft der radar2 in der neuen Version(v1.9.9) prima, werde diese DP's wohl wieder für Anwesend verwenden. -
@crunchip Wenn online sofort funktioniert, offline aber Probleme macht, dann muss ich wohl doch ein Offset einbauen für offline, oder? Wobei ich mich etwas wunder, dass es bei meinem Android Handy ohne Offset funktioniert. Hast Du ein Apple Gerät?
-
@braindead ich könnte mir fast vorstellen, dass hier ggf. jedes Handy (Hersteller/Android-Version) anders reagiert. Einen fest verbauten Offset im Code würde ich jetzt nicht so gut finden - oder meinstest du einen Offset, den man selbst im Adapter angeben kann?
-
@Kueppert Korrekt, der Offset muss konfigurierbar sein. Andernfalls ist er für einige User zu klein und für andere zu groß.
-
@braindead nein sind beides Galaxy S10. Ein S10 und ein S10+. Auch sind beide per Einstellung bei Energiemodus auf maximale Leistung gestellt und auch der Wlan Energiesparmodus ist deaktiviert.
Dann wahrscheinlich die beste Wahl, es im Adapter konfigurierbar zu machen. -
@braindead sagte in [Major Update] UniFi Adapter v0.5.0:
Wobei ich mich etwas wunder, dass es bei meinem Android Handy ohne Offset funktioniert.
Hast Du einen AP, oder mehrere ?
(EDIT: wir haben hier ein Samsung Note 8 und ein Samsung Note 10 plus 5G---eingestellt wie bei @crunchip ) -
@braindead sagte in [Major Update] UniFi Adapter v0.5.0:
Wenn online sofort funktioniert, offline aber Probleme macht, dann muss ich wohl doch ein Offset einbauen für offline, oder?
Beides funktioniert sofort.
Aber ich habe es gestern bei mir noch mal getestet. Wenn ich mit dem Handy in den Keller laufe, dann wechselt das Handy den AP und dann geht der DP is_online für einen Durchlauf auf false, da kann ich live zusehen. Wenn ich jetzt einfach im Adapter das Intervall verlängere geht es ja auch nur "zufällig", da ich ja nicht weiß wie weit der Durchlauf gerade ist wenn das Handy den DP wechselt und kurz auf false geht. Deswegen hatte ich es für mich erstmal so gelöst. " 2 Minuten ist bei mir ein guter Wert. Auch 1,5 Minuten waren vorhin schon zu kurz. -
Ich hab jetzt seit 2 Tagen ein Testscript für die Anwesenheit am laufen. Bei mir läuft es soweit top, einzig beim wechsel des AP (hab 3 davon) kann es zu einer kurzen "falsch Meldung" kommen, wenn ich in der Bude rumlaufe aber nur dann. Stört mich jetzt soweit nicht, da im Gegensatz zum tr-064 die Erkennung dafür auch wesentlich schneller ist. Falls das mit einem konfigurierbarem Offset lösbar wäre, wäre das natürlich top!
-
@Xsev sagte in [Major Update] UniFi Adapter v0.5.0:
einzig beim wechsel des AP (hab 3 davon) kann es zu einer kurzen "falsch Meldung" kommen, wenn ich in der Bude rumlaufe aber nur dann
Ja genau. Deshalb eine Verzögerung. Wenn Du darüber eine Anwesenheitserkennung realisieren willst, dann wäre das
Stört mich jetzt soweit nicht
nicht sehr hilfreich. Es könnte ja sein das Du bei Anwesenheit dies oder jenes an oder ausschaltest und bei Abwesenheit umgekehrt, da wären "Falschmeldungen" störend.
-
Wir haben hier 3 iPhones mit aktuellster Software und bei denen kommt es zu keinen Falschmeldungen. Ich hab keine Verzögerung eingebaut oder so, quasi Out-of-the-Box und läuft alles wie gewünscht.
-
@Sören sagte in [Major Update] UniFi Adapter v0.5.0:
bei denen kommt es zu keinen Falschmeldungen
Und wieviel AP gibt es bei Dir ? Einen oder mehrere ? (weil es vermutlich daran liegt, wenn es mehrere AP gibt)
-
Stört mich aktuell nicht, da ich derzeit (noch)nichts damit schalte. Aber gebe dir natürlich recht.
-
@dslraser said in [Major Update] UniFi Adapter v0.5.0:
Und wieviel AP gibt es bei Dir ? Einen oder mehrere ? (weil es vermutlich daran liegt, wenn es mehrere AP gibt)
Ich hab hier nur einen.
-
Bei mir funktioniert 0.5.2. bezüglich "is_online" nicht. Bleibt bei mir immer true, auch wenn ich beim Handy WLAN ausschalte.
"last_seen" funktioniert hingegen einwandfrei und darüber klappt die Anwesenheit mit einem Script einwandfrei.Adapter hatte ich mal komplett gelöscht. Hat aber nichts gebracht. Einstellungen sollten passen. Aktualisierung 60s:
-
@lobomau wird das Handy denn im controller angezeigt (Verbunden usg) wenn es nicht im Wlan ist?
Verwende das script auch, allerdings nicht mit last seen (funktioniert nicht richtig bei mir), sondern hab dafür last see by uap genommen. -
@crunchip sagte in [Major Update] UniFi Adapter v0.5.0:
@lobomau wird das Handy denn im controller angezeigt (Verbunden usg) wenn es nicht im Wlan ist?
Verwende das script auch, allerdings nicht mit last seen (funktioniert nicht richtig bei mir), sondern hab dafür last see by uap genommen.im unifi controller? Unter clients taucht es nicht mehr auf, wenn es nicht mehr im WLAN ist. Normal. Oder was meinst du? Ich habe keinen USG. Liegt es daran? Unifi controller ist ein Docker Container bei mir.
-
@lobomau achso, ja wenn man ein USG integriert hat, sieht man die Verbindung, client---USG, wenn client nicht mehr mit dem AP/Wlan verbunden ist.
Was du aber siehst, ist der DP. Im Adapter.
In dem Moment steht dein Datenpunkt .is-wired auf true
Hat im Endeffekt den gleichen Zweck. Wlan Gerät ist nicht mehr im Wlan.