Mit I-Beacons habe ich noch keine Erfahrung gesammelt, aber schöne Idee!
Du brauchst eigentlich nur durchschauen, bis du "code device" findest.
Also erstmal auf Apps
dann
über der Liste der apps u
nd unterhalb der auswahl "local/online/active apps, links vom sortieren-Button klicken damit du "all apps" angezeigt bekommst und nicht nur "featured apps"
Dann code device suchen, hat ein hellrotes symbol wo "</>" draufsteht.
Bei mir ist das unter local apps, kann aber sein dass man das erst installieren muss und es beim ersten mal daher nicht unter local apps sondern unter online apps zu finden ist.
Weiter unten habe ich nochmal genau beschrieben was ich da reingeschrieben habe.
Ich habe inzwischen den ESP-8266 so programmiert dass alles so läuft wie ich möchte. Klingeln wird erkannt und Türöffner geht - hat mich insgesamt keine 4€ gekostet.
Ich habe eine Klingelanlage mit Zweileiterbus/24V und eigener Steuerplatine in meiner Gegensprechanlage, die mit der irgendwo im haus montierten Zentrale kommuniziert und dort angelernt ist.
Also war hardwiring angesagt

Den Taster für den Türöffner schalte ich potentialfrei über ein Kleinrelais, da ich beim ersten Versuch mittels FET die Klingelanlage im ganzen Haus lahmgelegt hatte.
Die Erkennung ob es geklingelt hat mache ich wie folgt: Die Gegensprechanlage hat eine LED die für ca 30 sek blinkt wenn es geklingelt hat.
Ich habe einen Optokoppler mit dieser LED in Reihe geschaltet, und den Optokoppler an einen Eingang des ESP-8266 angeschlossen. Dadurch läuft auch die Klingelerkennung Potentialfrei.
Wird nun geklingelt, ändert sich ja durch das Blinken der LED ständig der Pegel am Eingang des ESP - wird das erkannt, sende ich über MQTT eine Nachricht an den Raspberry. Ich sende aber nur wenn ein High-Signal erkannt wird.
Auf dem Raspberry läuft ein Script, das mit dem Mosquitto-MQTT-Broker auf dieses Topic subscribed ist und alles was es empfängt in ein Textfile (auf einem RAM-Drive im Arbeitsspeicher) schreibt.
In der Z-Way-Oberfläche habe ich unter local apps ein Code Device ausgewählt (Einstellung binary sensor). Unter "Code to get Value" habe ich ein weiteres shellskript eingetragen,das die letzte Zeile im Textfile ausliest. Wenn diese Zeile "1" ist, startet das skript ein zweites im Hintergrund, das nach eingestellter Zeit den inhalt des Textfiles mit "0" überschreibt (=Sensorstatus zurücksetzt) und mit "Exit 0" beendet. Ansonsten wird mit "Exit 1" beendet.
Das code device triggert seinen status (sensor ausgelöst oder nicht ausgelöst) dann über den Exitstatus des aufgerufenen Shellskripts.
unter "code to get value" steht dann also
system('/opt/z-way-server/automation/userModules/readsensor.sh')[0]==0 ? 'on' : 'off'
[0] ist dabei der ein ausgabekanal des skripts, der aufruf dahinter sorgt dafür dass exit 0 bzw exit 1 als off bzw on interpretiert werden.
Die Shellscripte zu schreiben konnte ich vorher auch nicht, mit googeln und einigen Stunden lernt man das aber - hat bei mir ja auch geklappt.
So funktioniert ein Code Device Binary Sensor, hier z.b. über das hochperformante MQTT-Protokoll. Webserver auf Microcontrollern laufen zu lassen um msowas zu machen geht auch, ist aber langsamer und verursacht eine riesen Datenmenge. MQTT lässt sich sogar mit Verschlüsselungszertifikaten absichern, ist also hier trotz des notwendigen Einlesens absolut das mittel der Wahl.
So hat man für ein paar Euro Temp/Feuchtesensor, RGB(W)LED-Streifensteuerung, Türöffner, Klingelerkennung, schaltbare Steckdosen und Lichter, Steuerung für die Fußbodenheizung, Fernsteuerung für die Kaffeemaschine etc. zusammengebaut und muss nicht für je 50€ irgendwelche Module kaufen die die Hälfte nicht können oder eigene Apps in eigenem WLAN erfordern.