NEWS
Nello Telegram
-
@CKMartens
Gibt es eine Änderung des DP beim Klingeln? Wenn ja würde das schon als Trigger für Telegram ausreichen.@Marek
Auf GitHub sind ja Scripte zum Signalisieren der Türklingel, somit muss ja irgendein DP bei Klingeln zappeln, wenn das nicht der Fall ist, stimmt bei Dir schon was nicht.@Jan1 sagte in Nello Telegram:
@CKMartens
Gibt es eine Änderung des DP beim Klingeln? Wenn ja würde das schon als Trigger für Telegram ausreichen.Klar... Wenn über den iot Adapter ein Service wie in der Anleitung steht eingerichtet ist, wird beim klingeln unter iot.x.service.servicename der Datenpunkt aktualisiert. In dem wird als Json String die Rückgabe von Nello gespeichert (geklingelt und nicht geöffnet , geöffnet, über Geo geöffnet usw.).
Diesen Datenpunkte liest dann der Nello-Adapter aus und speichert ihn unter events. Da kannst du dann den Json-String auswerten. Schau dir die Beispiele auf der Github Seite an, da nimmt Zefau das um die Echo Ansage zu machen. -
@Jan1 sagte in Nello Telegram:
@CKMartens
Gibt es eine Änderung des DP beim Klingeln? Wenn ja würde das schon als Trigger für Telegram ausreichen.Klar... Wenn über den iot Adapter ein Service wie in der Anleitung steht eingerichtet ist, wird beim klingeln unter iot.x.service.servicename der Datenpunkt aktualisiert. In dem wird als Json String die Rückgabe von Nello gespeichert (geklingelt und nicht geöffnet , geöffnet, über Geo geöffnet usw.).
Diesen Datenpunkte liest dann der Nello-Adapter aus und speichert ihn unter events. Da kannst du dann den Json-String auswerten. Schau dir die Beispiele auf der Github Seite an, da nimmt Zefau das um die Echo Ansage zu machen.@CKMartens
Den DP gibt es aber bei @Marek im Screenshot nicht, somit hat er auch die Vorbereitung dazu noch nicht gemacht.
Wenn das allerdings erledigt ist, stehen die Events im Klartext drin oder ist das noch ein JASON String? Wobei das für ein Telegramm Nachricht schon reichen würde, wenn man das auf "wurde geändert" prüft.Da muss @Marek wohl noch ein wenig lesen, oder es ist einer so nett der das auch zu Hause hat (@CKMartens) und baut im das mal schnell zusammen :blush:
-
Hallo Leute :)
Danke im vorraus für eure Hilfe!Ich wollte fragen ob es möglich ist, über Telegram Benachrichtigungen zu erhalten wenn es zuhause geklingelt hat. Das Problem ist das man in der Wohnung die Türklingel oftmals nicht hört und die Benachrichtigungen der Nello app nicht zuverlässig sind. Würde ich gerne eine Telegram Nachricht bekommen wenn es klingelt bzw. wissen wer geklingelt hat.
Ist das möglich mittels JavaScript oder Blockly?
Ich freue mich über jede Hilfe.
Vielen Dank und schöne Grüße
Marek
Mal ein kurzer Quick Guide:
Nello Adapter installieren und einen Tocken eintragen oder wenn Du noch keinen generiert hast unter https://auth.nello.io/admin einen erstellen und eintragen

Dann im iot-Adapter den Service eintragen...

...und im Nello-Adaper fertig einstellen

Wenn alles richtig ist werden die Datenpunkte unter anderem beim Klingeln geändert:


In dem feed-Datenpunkt unter nello.0.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.events.feed steht dann als Json-String alle letzten Ereignisse drinnen:
[{"action":"swipe","data":{"location_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx","name":"Carsten Martens","user_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx","timestamp":1560788361}}, [...]Unter iot.0.services.custom_nello (also dem eingerichteten Service) steht dann immer das letzte Event als Json
{"action": "deny", "data": {"location_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx"}}Diese kannst du mit einem Script parsen und auswerten. Schau Dir dazu Zafus Beispiel an.
Ich hoffe das es etwas geholfen hat.
-
Okay, das Grundprinzip habe ich verstanden. Ich muss jetzt ein Script erstellen, welches mit dann diese Benachrichtigungen erstellt.
Mache ich das in Scripts? Kann mir da einer einen kurzen Denkanstoß geben. Bitte :) -
also den Datenpunkt habe ich ja jetzt. Bin nämlich nach der Anleitung oben vorgegangen. Das klappt auch. Nur wie mache ich das jetzt mit dem Script.
-
-
Hallo zusammen,
Wow eine so große Resonanz hatte ich nicht erwartet, danke an alle die sich die Zeit nehmen mir zu helfen!
Ja es stimmt, anfangs hatte ich den Datenpunkt custom_nello nicht aber ich hab es jetzt hinbekommen. Auch ändern sich die Aktionen deny usw.
Danke an Zefau für das Hinzufügen des Scripts!
Nun wenn ich es richtig verstanden habe:
/** * Send something with Telegram * * @param {string} content Content to send via Telegram * @param {string} [user=''] User to send the content to * @return void * */ function msg(content, user = '') { const CONFIG = { text: content, parse_mode: 'HTML', reply_markup: { keyboard: ACTIONS, resize_keyboard: true, one_time_keyboard: false } }; sendTo('telegram', user ? Object.assign({user: user}, CONFIG) : CONFIG); }Erstelle ich ein Java Script im common Ordner.
Und dann schreibe ich das drunter
var L = { 'actionRingUnknown': 'Es hat geklingelt', 'actionOpenName': '%name% hat die Tür geöffnet', 'actionOpenGeo': '%name% hat das Haus betreten', 'actionOpen': 'Die Haustür wurde geöffnet' }; on({id: 'nello.0.ID.events.feed', change: 'any'}, function(obj) { var events = JSON.parse(obj.state.val); if (events.length === 0) return; var event = events[events.length-1]; if (event.action == 'deny') msg(L.actionRingUnknown); else if (event.action == 'swipe') msg(L.actionOpenName.replace(/%name%/gi, event.data.name)); else if (event.action == 'geo') msg(L.actionOpenGeo.replace(/%name%/gi, event.data.name)); else msg(L.actionOpen); });Und dann bei nello.0.ID schreib ich die Nello id rein.
Ich bin da noch wirklich Neuling und fange gerade erst an zu lernen mit dem Scripte erstellen. Ich muss erstmal nur das Grundprinzip verstehen.
Ziel ist es das ich eine Telegram Nachricht bekomme wenn es geklingelt hat und wenn die Tür geöffnet wurde und wer die Tür geöffnet hat usw.
Kann mir da einer ne kleine Step by step Anleitung für komplette idioten geben.
Ich danke nochmal allen Hilfsbereiten. :v:
-
Hallo zusammen,
Wow eine so große Resonanz hatte ich nicht erwartet, danke an alle die sich die Zeit nehmen mir zu helfen!
Ja es stimmt, anfangs hatte ich den Datenpunkt custom_nello nicht aber ich hab es jetzt hinbekommen. Auch ändern sich die Aktionen deny usw.
Danke an Zefau für das Hinzufügen des Scripts!
Nun wenn ich es richtig verstanden habe:
/** * Send something with Telegram * * @param {string} content Content to send via Telegram * @param {string} [user=''] User to send the content to * @return void * */ function msg(content, user = '') { const CONFIG = { text: content, parse_mode: 'HTML', reply_markup: { keyboard: ACTIONS, resize_keyboard: true, one_time_keyboard: false } }; sendTo('telegram', user ? Object.assign({user: user}, CONFIG) : CONFIG); }Erstelle ich ein Java Script im common Ordner.
Und dann schreibe ich das drunter
var L = { 'actionRingUnknown': 'Es hat geklingelt', 'actionOpenName': '%name% hat die Tür geöffnet', 'actionOpenGeo': '%name% hat das Haus betreten', 'actionOpen': 'Die Haustür wurde geöffnet' }; on({id: 'nello.0.ID.events.feed', change: 'any'}, function(obj) { var events = JSON.parse(obj.state.val); if (events.length === 0) return; var event = events[events.length-1]; if (event.action == 'deny') msg(L.actionRingUnknown); else if (event.action == 'swipe') msg(L.actionOpenName.replace(/%name%/gi, event.data.name)); else if (event.action == 'geo') msg(L.actionOpenGeo.replace(/%name%/gi, event.data.name)); else msg(L.actionOpen); });Und dann bei nello.0.ID schreib ich die Nello id rein.
Ich bin da noch wirklich Neuling und fange gerade erst an zu lernen mit dem Scripte erstellen. Ich muss erstmal nur das Grundprinzip verstehen.
Ziel ist es das ich eine Telegram Nachricht bekomme wenn es geklingelt hat und wenn die Tür geöffnet wurde und wer die Tür geöffnet hat usw.
Kann mir da einer ne kleine Step by step Anleitung für komplette idioten geben.
Ich danke nochmal allen Hilfsbereiten. :v:
-
Also ich bekomme da den Fehler:
javascript.0 script.js.common.Nello.Klingeln compile failed:
at script.js.common.Nello.Klingeln:9Hab es jetzt genau nach deiner Beschreibung gemacht...
Oh Mann...
-
Also ich bekomme da den Fehler:
javascript.0 script.js.common.Nello.Klingeln compile failed:
at script.js.common.Nello.Klingeln:9Hab es jetzt genau nach deiner Beschreibung gemacht...
Oh Mann...
@Marek habe die Skripte nochmal angepasst, versuch mal:
/** * Send something with Telegram * * @param {string} content Content to send via Telegram * @param {string} [user=''] User to send the content to * @return void * */ function msg(content, user = '') { const CONFIG = { text: content, parse_mode: 'HTML' }; sendTo('telegram', user ? Object.assign({user: user}, CONFIG) : CONFIG); }sowie
var L = { 'actionRingUnknown': 'Es hat geklingelt', 'actionOpenName': '%name% hat die Tür geöffnet', 'actionOpenGeo': '%name% hat das Haus betreten', 'actionOpen': 'Die Haustür wurde geöffnet' }; on({id: 'javascript.0.test', change: 'any'}, function(obj) { var events = obj && obj.state && JSON.parse(obj.state.val); if (!events || events.length == 0) return; var event = events[events.length-1]; if (event.action == 'deny') msg(L.actionRingUnknown); else if (event.action == 'swipe') msg(L.actionOpenName.replace(/%name%/gi, event.data.name)); else if (event.action == 'geo') msg(L.actionOpenGeo.replace(/%name%/gi, event.data.name)); else msg(L.actionOpen); });Telegram Adapter hast du installiert und konfiguriert, richtig?
-
Haloo Zefau,
also ich habe jetzt dein neues script genommen. Das funktioniert. Ich habe nur "javascript.0.test" in nello.0.ID.events.feed anstelle "ID" die ID vom nello eingetragen. Es funktioniert. Danke dir !
-
@Marek habe die Skripte nochmal angepasst, versuch mal:
/** * Send something with Telegram * * @param {string} content Content to send via Telegram * @param {string} [user=''] User to send the content to * @return void * */ function msg(content, user = '') { const CONFIG = { text: content, parse_mode: 'HTML' }; sendTo('telegram', user ? Object.assign({user: user}, CONFIG) : CONFIG); }sowie
var L = { 'actionRingUnknown': 'Es hat geklingelt', 'actionOpenName': '%name% hat die Tür geöffnet', 'actionOpenGeo': '%name% hat das Haus betreten', 'actionOpen': 'Die Haustür wurde geöffnet' }; on({id: 'javascript.0.test', change: 'any'}, function(obj) { var events = obj && obj.state && JSON.parse(obj.state.val); if (!events || events.length == 0) return; var event = events[events.length-1]; if (event.action == 'deny') msg(L.actionRingUnknown); else if (event.action == 'swipe') msg(L.actionOpenName.replace(/%name%/gi, event.data.name)); else if (event.action == 'geo') msg(L.actionOpenGeo.replace(/%name%/gi, event.data.name)); else msg(L.actionOpen); });Telegram Adapter hast du installiert und konfiguriert, richtig?
-
@Marek sagte in Nello Telegram:
wenn ich die Telegram an mehrere user schicken möchte wie mache ich das dann?
/** * Send something with Telegram * * @param {string} content Content to send via Telegram * @param {array} [user=[]] Users to send the content to * @return void * */ function msg(content, users = []) { const CONTENT = { text: content, parse_mode: 'HTML' }; if (!Array.isArray(users) || users.length == 0) sendTo('telegram', CONTENT); else users.forEach(user => sendTo('telegram', Object.assign({ user: user }, CONTENT))) }und dann
msg('hallo', ['Zefau', 'Marek'])bzw.msg('hallo')schickt an alle. -
@Marek sagte in Nello Telegram:
wenn ich die Telegram an mehrere user schicken möchte wie mache ich das dann?
/** * Send something with Telegram * * @param {string} content Content to send via Telegram * @param {array} [user=[]] Users to send the content to * @return void * */ function msg(content, users = []) { const CONTENT = { text: content, parse_mode: 'HTML' }; if (!Array.isArray(users) || users.length == 0) sendTo('telegram', CONTENT); else users.forEach(user => sendTo('telegram', Object.assign({ user: user }, CONTENT))) }und dann
msg('hallo', ['Zefau', 'Marek'])bzw.msg('hallo')schickt an alle./** * Send something with Telegram * * @param {string} content Content to send via Telegram * @param {array} [user=[]] Users to send the content to * @return void * */ function msg(content, users = 'Marco', 'Nadine' ) { const CONFIG = { text: content, parse_mode: 'HTML' }; sendTo('telegram', user ? Object.assign({user: user}, CONFIG) : CONFIG); }haut irgendwie nicht hin.. grübel. Ich muss mal so nen Java Kurs belegen...
-
/** * Send something with Telegram * * @param {string} content Content to send via Telegram * @param {array} [user=[]] Users to send the content to * @return void * */ function msg(content, users = 'Marco', 'Nadine' ) { const CONFIG = { text: content, parse_mode: 'HTML' }; sendTo('telegram', user ? Object.assign({user: user}, CONFIG) : CONFIG); }haut irgendwie nicht hin.. grübel. Ich muss mal so nen Java Kurs belegen...