NEWS
Node red
-
Всё я уже голову сломал…
Запости здесь ВСЮ цепочку. Телефон и пин в личку.
Я не могу по отдельным цепочкам догадыватся, что где выводиться. Уходит ОЧЕНЬ много времени. `
[{"id":"b7d37336.482c9","type":"inject","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":92,"y":81,"z":"865a081c.79a5f8","wires":[["b614a670.49eb58"]]},{"id":"b614a670.49eb58","type":"function","name":"Авторизация","func":"msg.sessionid = context.global.sessionid;\n msg.headers = {\n 'Host': 'www.sistemagorod.ru',\n 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0',\n 'Accept': '*/*',\n 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',\n 'Accept-Encoding': 'gzip, deflate',\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n 'X-Requested-With': 'XMLHttpRequest',\n 'Referer': 'https://www.sistemagorod.ru/lk/',\n 'Cookie': 'JSESSIONID='+ msg.sessionid,\n 'Connection': 'keep-alive',\n 'Pragma': 'no-cache',\n 'Cache-Control': 'no-cache'\n }\n \n\n var url= \"https://www.sistemagorod.ru/lk/auth?type-auth=phone&answer-captcha=&phone=xxx&pin=xxx\";\n\nmsg.url = url;\nreturn msg;","outputs":1,"valid":true,"x":128.55555725097656,"y":152.11111450195312,"z":"865a081c.79a5f8","wires":[["ef96486b.1069b8"]]},{"id":"ef96486b.1069b8","type":"http request","name":"","method":"POST","ret":"txt","url":"","x":284.7778015136719,"y":153.2222137451172,"z":"865a081c.79a5f8","wires":[["ad6096b4.529f68","62c44e09.9d3bb","a452cdcd.5bad3"]]},{"id":"62c44e09.9d3bb","type":"debug","name":"SessionId","active":true,"console":"false","complete":"payload","x":602.333366394043,"y":37.33333778381348,"z":"865a081c.79a5f8","wires":[]},{"id":"44e90f84.bb16f","type":"debug","name":"SessionId2","active":true,"console":"false","complete":"payload","x":445.5555191040039,"y":243.33333206176758,"z":"865a081c.79a5f8","wires":[]},{"id":"ad6096b4.529f68","type":"debug","name":"","active":true,"console":"false","complete":"true","x":602.5555419921875,"y":209,"z":"865a081c.79a5f8","wires":[]},{"id":"a452cdcd.5bad3","type":"function","name":"sessionid2","func":"\n//var obj = { \"topic\": \"\", \"payload\": \"\\r\\n<response>\\r\\n <state>ok</state>\\r\\n</response>\\r\\n\\r\\n\", \"_msgid\": \"c27391e4.3d8c7\", \"sessionid\": \"6E14E8C7BF3AFDE8E63FBF0EA015BFB4\", \"headers\": { \"date\": \"Sun, 24 May 2015 17:59:17 GMT\", \"server\": \"Apache/2.4.7 (Ubuntu)\", \"content-length\": \"88\", \"set-cookie\": [ \"JSESSIONID=6385A1C965987A3FAA6131DD153D2EE1; Path=/lk/; Secure; HttpOnly\" ], \"keep-alive\": \"timeout=5, max=100\", \"connection\": \"Keep-Alive\", \"content-type\": \"text/plain\" }, \"url\": \"https://www.sistemagorod.ru/lk/auth?type-auth=phone&answer-captcha=&phone=xxxx&pin=xxxx\", \"statusCode\": 200 };\nvar obj = msg.payload;\nvar cookies = obj.headers[\"set-cookie\"][0];\nvar m = cookies.match(/JSESSIONID=([\\w\\d]*)/);\nif (m) {\n msg.payload = m[1];\n return msg;\n}\n\n\n","outputs":"1","valid":true,"x":235.55560302734375,"y":284.2221984863281,"z":"865a081c.79a5f8","wires":[["44e90f84.bb16f","7a9fda5d.856024"]]},{"id":"7a9fda5d.856024","type":"debug","name":"SessionId2","active":true,"console":"false","complete":"true","x":446.66667556762695,"y":292.22221755981445,"z":"865a081c.79a5f8","wires":[]}] -
:roll:
-
Ты запостил не ВЕСЬ flow. Авторизации не было.
[{"id":"b2457b04.4dba88","type":"inject","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":110,"y":142,"z":"a3d5aaa9.5c2a58","wires":[["a4b814e9.5b47e8"]]},{"id":"a4b814e9.5b47e8","type":"http request","name":"","method":"GET","ret":"txt","url":"https://www.sistemagorod.ru/lk/","x":430,"y":143,"z":"a3d5aaa9.5c2a58","wires":[["673656c9.98c9a8","892e892.f76d178"]]},{"id":"8aebf8b1.751408","type":"http request","name":"","method":"POST","ret":"txt","url":"","x":429,"y":207,"z":"a3d5aaa9.5c2a58","wires":[["f398e11c.0c672","2e09ba5d.d1f646"]]},{"id":"6d01402.f92fec","type":"http request","name":"","method":"GET","ret":"txt","url":"","x":428,"y":284,"z":"a3d5aaa9.5c2a58","wires":[["3d2f1fc5.c2d0e","7138683e.8ec798"]]},{"id":"f398e11c.0c672","type":"function","name":"Get \"indications\"","func":"if (msg.payload.indexOf('>ok<') != -1) {\n\tmsg.payload = '';\n\tvar parts = msg.headers['set-cookie'][0].split(';');\n\t\n\tmsg.headers = {\n\t 'Host': 'www.sistemagorod.ru',\n\t 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0',\n\t 'Accept': '*/*',\n\t 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',\n\t 'Accept-Encoding': '',\n\t 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n\t 'X-Requested-With': 'XMLHttpRequest',\n\t 'Referer': 'https://www.sistemagorod.ru/lk/',\n\t 'Cookie': parts[0],\n\t 'Connection': 'keep-alive',\n\t 'Pragma': 'no-cache',\n\t 'Cache-Control': 'no-cache'\n\t};\n\t\n\t//msg.headers.Cookie = msg.headers[0]['set-cookie'],\n\tmsg.url = \"https://www.sistemagorod.ru/lk/indications\";\n\treturn msg;\n}\n","outputs":1,"x":236,"y":284,"z":"a3d5aaa9.5c2a58","wires":[["6d01402.f92fec"]]},{"id":"3d2f1fc5.c2d0e","type":"debug","name":"","active":true,"console":"false","complete":"true","x":636,"y":284,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"673656c9.98c9a8","type":"debug","name":"","active":true,"console":"false","complete":"true","x":632,"y":144,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"2e09ba5d.d1f646","type":"debug","name":"","active":true,"console":"false","complete":"true","x":633,"y":207,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"892e892.f76d178","type":"function","name":"Authenticate","func":"msg.url='https://www.sistemagorod.ru/lk/auth?type-auth=phone&answer-captcha=&phone=xxx&pin=yyyy'\nreturn msg;","outputs":1,"x":257,"y":207,"z":"a3d5aaa9.5c2a58","wires":[["8aebf8b1.751408"]]},{"id":"9d88bc37.62774","type":"debug","name":"","active":true,"console":"false","complete":"payload","x":416,"y":381,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"7138683e.8ec798","type":"function","name":"Extract values","func":"var m = msg.payload.match(/data-previos-reading=\"([\\d.]*)\"/g);\nmsg.payload = [];\nif (m) {\n\tfor (var i = 0; i < m.length; i++) {\n\t\tvar parts = m[i].split('=\"');\n\t\tif (parts.length == 2) {\n\t\t msg.payload.push(parts[1].replace('\"', ''));\n\t\t}\n\t}\n}\nreturn msg;","outputs":1,"x":241,"y":382,"z":"a3d5aaa9.5c2a58","wires":[["9d88bc37.62774"]]}]Ещё была ошибка, что "'Accept-Encoding': 'gzip, deflate',"
И поэтому ты получал зазипованный ответ.
Я довел до ответа
[ "375", "7", "7", "1.351" ]Дальше сам.
-
Ты запостил не ВЕСЬ flow. Авторизации не было.
[{"id":"b2457b04.4dba88","type":"inject","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":110,"y":142,"z":"a3d5aaa9.5c2a58","wires":[["a4b814e9.5b47e8"]]},{"id":"a4b814e9.5b47e8","type":"http request","name":"","method":"GET","ret":"txt","url":"https://www.sistemagorod.ru/lk/","x":430,"y":143,"z":"a3d5aaa9.5c2a58","wires":[["673656c9.98c9a8","892e892.f76d178"]]},{"id":"8aebf8b1.751408","type":"http request","name":"","method":"POST","ret":"txt","url":"","x":429,"y":207,"z":"a3d5aaa9.5c2a58","wires":[["f398e11c.0c672","2e09ba5d.d1f646"]]},{"id":"6d01402.f92fec","type":"http request","name":"","method":"GET","ret":"txt","url":"","x":428,"y":284,"z":"a3d5aaa9.5c2a58","wires":[["3d2f1fc5.c2d0e","7138683e.8ec798"]]},{"id":"f398e11c.0c672","type":"function","name":"Get \"indications\"","func":"if (msg.payload.indexOf('>ok<') != -1) {\n\tmsg.payload = '';\n\tvar parts = msg.headers['set-cookie'][0].split(';');\n\t\n\tmsg.headers = {\n\t 'Host': 'www.sistemagorod.ru',\n\t 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0',\n\t 'Accept': '*/*',\n\t 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',\n\t 'Accept-Encoding': '',\n\t 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n\t 'X-Requested-With': 'XMLHttpRequest',\n\t 'Referer': 'https://www.sistemagorod.ru/lk/',\n\t 'Cookie': parts[0],\n\t 'Connection': 'keep-alive',\n\t 'Pragma': 'no-cache',\n\t 'Cache-Control': 'no-cache'\n\t};\n\t\n\t//msg.headers.Cookie = msg.headers[0]['set-cookie'],\n\tmsg.url = \"https://www.sistemagorod.ru/lk/indications\";\n\treturn msg;\n}\n","outputs":1,"x":236,"y":284,"z":"a3d5aaa9.5c2a58","wires":[["6d01402.f92fec"]]},{"id":"3d2f1fc5.c2d0e","type":"debug","name":"","active":true,"console":"false","complete":"true","x":636,"y":284,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"673656c9.98c9a8","type":"debug","name":"","active":true,"console":"false","complete":"true","x":632,"y":144,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"2e09ba5d.d1f646","type":"debug","name":"","active":true,"console":"false","complete":"true","x":633,"y":207,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"892e892.f76d178","type":"function","name":"Authenticate","func":"msg.url='https://www.sistemagorod.ru/lk/auth?type-auth=phone&answer-captcha=&phone=xxx&pin=yyyy'\nreturn msg;","outputs":1,"x":257,"y":207,"z":"a3d5aaa9.5c2a58","wires":[["8aebf8b1.751408"]]},{"id":"9d88bc37.62774","type":"debug","name":"","active":true,"console":"false","complete":"payload","x":416,"y":381,"z":"a3d5aaa9.5c2a58","wires":[]},{"id":"7138683e.8ec798","type":"function","name":"Extract values","func":"var m = msg.payload.match(/data-previos-reading=\"([\\d.]*)\"/g);\nmsg.payload = [];\nif (m) {\n\tfor (var i = 0; i < m.length; i++) {\n\t\tvar parts = m[i].split('=\"');\n\t\tif (parts.length == 2) {\n\t\t msg.payload.push(parts[1].replace('\"', ''));\n\t\t}\n\t}\n}\nreturn msg;","outputs":1,"x":241,"y":382,"z":"a3d5aaa9.5c2a58","wires":[["9d88bc37.62774"]]}]Ещё была ошибка, что "'Accept-Encoding': 'gzip, deflate',"
И поэтому ты получал зазипованный ответ.
Я довел до ответа
[ "375", "7", "7", "1.351" ]Дальше сам. `
Воу! Спасибо большое!
-
Ещё была ошибка, что "'Accept-Encoding': 'gzip, deflate',"
И поэтому ты получал зазипованный ответ.
Дальше сам. `
Я все воскресенье убил, вроде что то получатся начало но на выходе кракозябры… теперь понятно в чем ошибка.
-
Как в node red завести данные датчиков? Выбираю в input IoBroker, переменная передается только когда значение изменяется. Мне нужно получить доступ к текущим показаниям датчика, как эти данные поместить в функцию во время выполения скрипта?
- еще если переменная изменяется то она запускает скрипт который после этой переменной
-
Как в node red завести данные датчиков? Выбираю в input IoBroker, переменная передается только когда значение изменяется. Мне нужно получить доступ к текущим показаниям датчика, как эти данные поместить в функцию во время выполения скрипта?
- еще если переменная изменяется то она запускает скрипт который после этой переменной `
Никак. В этом вся проблема node-red. Он stateless и event triggered.
Можно только через хак и сохранять значения в context.global (http://nodered.org/docs/writing-functions.html)
- еще если переменная изменяется то она запускает скрипт который после этой переменной `
-
Как в node red завести данные датчиков? Выбираю в input IoBroker, переменная передается только когда значение изменяется. Мне нужно получить доступ к текущим показаниям датчика, как эти данные поместить в функцию во время выполения скрипта?
- еще если переменная изменяется то она запускает скрипт который после этой переменной `
Никак. В этом вся проблема node-red. Он stateless и event triggered.
Можно только через хак и сохранять значения в context.global (http://nodered.org/docs/writing-functions.html) `
Ок. Будем делать через глобальные.msg.Hot_curr = h.substring(0, h.length - 2); выдает ошибку TypeError: Object 722 has no method 'substring' (line 4, col 19)
Как обрезать последние два символа в значении?
PS Посоветуй литературу почитать по Node red'у
- еще если переменная изменяется то она запускает скрипт который после этой переменной `
-
Пока сделал так:
var h = context.global.Hot_curr; h = '' + h; msg.Hot_curr = h.substr(0, h.length - 2); var c = context.global.Cold_curr; c = '' + c; msg.Cold_curr = c.substr(0, c.length - 2):D
-
Пока сделал так:
var h = context.global.Hot_curr; h = '' + h; msg.Hot_curr = h.substr(0, h.length - 2); var c = context.global.Cold_curr; c = '' + c; msg.Cold_curr = c.substr(0, c.length - 2):D `
Ну в принципе именно так:var h = context.global.Hot_curr.toString(); msg.Hot_curr = h.substr(0, h.length - 2); -
Как происходит взаимодействие из нодрэда с другими драйверами?
Например как из нодреда отправить сообщение Pushover.
721_fenster_tuer.jpg
721_cultuer.jpg
721_zwischenstecker.jpg
721_direktverbindung.jpg
721_wandthermostat.jpg -
Написал условие, переменная меняет свое состояние но клиенту mqtt не уходит команда, что я делаю не так?
[{"id":"acda5939.5325a8","type":"ioBroker in","name":"myhome/Bathroom/Humidity_room","topic":"mqtt.0.myhome.Bathroom.Humidity_room","payloadType":"value","x":167,"y":131,"z":"865a081c.79a5f8","wires":[["20e9eada.df1616","207b73cb.df848c"]]},{"id":"ffc2e396.003d2","type":"ioBroker out","name":"myhome/Bathroom/Ventilator","topic":"mqtt.0.myhome.Bathroom.Ventilator","ack":"true","autoCreate":"false","x":677,"y":139,"z":"865a081c.79a5f8","wires":[]},{"id":"20e9eada.df1616","type":"debug","name":"","active":true,"console":"false","complete":"false","x":328,"y":292,"z":"865a081c.79a5f8","wires":[]},{"id":"207b73cb.df848c","type":"function","name":"","func":"if (msg.payload > 56){\n msg.payload = 1;\n}\nelse {\n msg.payload = 0;\n}\nreturn msg;","outputs":1,"valid":true,"x":431,"y":127,"z":"865a081c.79a5f8","wires":[["9fe832be.6017d","ffc2e396.003d2"]]},{"id":"9fe832be.6017d","type":"debug","name":"1111111111111111","active":true,"console":"false","complete":"payload","x":609,"y":219,"z":"865a081c.79a5f8","wires":[]}] -
Написал условие, переменная меняет свое состояние но клиенту mqtt не уходит команда, что я делаю не так? `
Понял в чем была ошибка, нужно было в выводе поставить не value а command.Возникает следующий вопрос.
Как написать чтобы данные отсылались только один раз при срабатывание условия а не постоянно слались на клиента?
приведенный код срабатывает только раз т.к. flag постоянно устанавливается в 0. В ардуино хорошо можно при инициализации объявить переменные, а как поступить в нодред?
var flag = 0; if (msg.payload > 56 && flag === 0){ msg.payload = 1; var flag = 1; return msg; } else if (msg.payload < 56 && flag === 1){ msg.payload = 0; var flag = 0; return msg; } -
Написал условие, переменная меняет свое состояние но клиенту mqtt не уходит команда, что я делаю не так? `
Понял в чем была ошибка, нужно было в выводе поставить не value а command.Возникает следующий вопрос.
Как написать чтобы данные отсылались только один раз при срабатывание условия а не постоянно слались на клиента?
приведенный код срабатывает только раз т.к. flag постоянно устанавливается в 0. В ардуино хорошо можно при инициализации объявить переменные, а как поступить в нодред?
var flag = 0; if (msg.payload > 56 && flag === 0){ msg.payload = 1; var flag = 1; return msg; } else if (msg.payload < 56 && flag === 1){ msg.payload = 0; var flag = 0; return msg; } ```` `Поменяй на
if (context.global.flag === undefined) { context.global.flag = msg.payload > 56; } if (msg.payload > 56 && !context.global.flag){ msg.payload = 1; context.global.flag= true; return msg; } else if (msg.payload < 56 && context.global.flag){ msg.payload = 0; context.global.flag= false; return msg; } -
Поменяй на
if (context.global.flag === undefined) { context.global.flag = msg.payload > 56; } if (msg.payload > 56 && !context.global.flag){ msg.payload = 1; context.global.flag= true; return msg; } else if (msg.payload < 56 && context.global.flag){ msg.payload = 0; context.global.flag= false; return msg; } ```` `Спасибо заработало. Вчера начинал уже мудрить с глобальными переменными, думал может есть другой способ.
Как из нодреда отправить сообщение на Pushover?
-
Как происходит взаимодействие из нодрэда с другими драйверами?
Например как из нодреда отправить сообщение Pushover. `
Так и не понял как отправить сообщение. Или только через javascript? -
Ну в принципе именно так:
var h = context.global.Hot_curr.toString(); msg.Hot_curr = h.substr(0, h.length - 2); ```` `Вроде работал код, сегодня решил проверить ругается на toString. Было обновление?
Добавлено:
Нодред не подхватывает значения счетчиков воды.
От электросчетчика подхватывает.
! ````
[{"id":"249fe99a.db6016","type":"debug","name":"","active":true,"console":"false","complete":"true","x":701,"y":802,"z":"2c2981e2.d3d67e","wires":[]},{"id":"4ad0b93e.b52f48","type":"function","name":"Текущие показания Холодной воды","func":"context.global.Cold_curr = msg.payload.val;\nreturn msg;","outputs":1,"valid":true,"x":426,"y":789,"z":"2c2981e2.d3d67e","wires":[["249fe99a.db6016"]]},{"id":"c6b46d56.394b9","type":"function","name":"Текущие показания Горячей воды","func":"context.global.Hot_curr = msg.payload.val;\nreturn msg;","outputs":1,"valid":true,"x":420,"y":846,"z":"2c2981e2.d3d67e","wires":[["249fe99a.db6016"]]},{"id":"4c6b878d.b39478","type":"ioBroker in","name":"myhome/Mother/Electro_counter","topic":"mqtt.0.myhome.Mother.Electro_counter","payloadType":"value","x":134,"y":904,"z":"2c2981e2.d3d67e","wires":[["269c6eea.d96392"]]},{"id":"269c6eea.d96392","type":"function","name":"Текущие показания Электросчетчика","func":"context.global.Electro_curr = msg.payload;\nreturn msg;","outputs":1,"valid":true,"x":436,"y":904,"z":"2c2981e2.d3d67e","wires":[object Object]},{"id":"fca376ea.035c88","type":"ioBroker in","name":"myhome/Bathroom/Cold_water","topic":"mqtt.0.myhome.Bathroom.Cold_water","payloadType":"value","x":128.5,"y":789,"z":"2c2981e2.d3d67e","wires":[["4ad0b93e.b52f48"]]},{"id":"3729a205.c8d65e","type":"ioBroker in","name":"myhome/Bathroom/Hot_water","topic":"mqtt.0.myhome.Bathroom.Hot_water","payloadType":"value","x":126,"y":846,"z":"2c2981e2.d3d67e","wires":[["c6b46d56.394b9"]]}]Добавлено: Чудеса, сегодня все работает ок. -
Как через Node red создать переменную в iobrokere?
-
Node red вообще заглючил.
Завис на http reqest.
Код не подсвечивает.
Перезапустил в логе ошибки
! node-red-0 2015-06-17 10:49:38 warn
! node-red-0 2015-06-17 10:49:38 warn 17 Jun 10:49:36 - [warn] –----------------------------------------
! node-red-0 2015-06-17 10:49:38 warn
! node-red-0 2015-06-17 10:49:38 warn 17 Jun 10:49:36 - [warn] [redisout] Error: Cannot find module 'redis'
! node-red-0 2015-06-17 10:49:38 warn
! node-red-0 2015-06-17 10:49:38 warn 17 Jun 10:49:36 - [warn] [tail] Info : Currently not supported on Windows.
! node-red-0 2015-06-17 10:49:38 warn 17 Jun 10:49:36 - [warn] [rpi-gpio] Info : Ignoring Raspberry Pi specific node.
! node-red-0 2015-06-17 10:49:38 warn 17 Jun 10:49:36 - [warn] [arduino] Error: Cannot find module 'arduino-firmata'
! node-red-0 2015-06-17 10:49:38 warn
! node-red-0 2015-06-17 10:49:38 warn 17 Jun 10:49:36 - [warn] –----------------------------------------
! node-red-0 2015-06-17 10:49:36 warn
! node-red-0 2015-06-17 10:49:36 warn js-bson: Failed to load c++ bson extension, using pure JS version
! node-red-0 2015-06-17 10:49:36 warn js-bson: Failed to load c++ bson extension, using pure JS version
! node-red-0 2015-06-17 10:49:36 warn
! node-red-0 2015-06-17 10:49:36 warn js-bson: Failed to load c++ bson extension, using pure JS version
! node-red-0 2015-06-17 10:49:34 warn
! node-red-0 2015-06-17 10:49:34 warn js-bson: Failed to load c++ bson extension, using pure JS version -
Как через Node red создать переменную в iobrokere? `
Возник тот же вопрос.В корне получается создать (пример test) , а вот чтобы добавить сразу топик нет (пример stat/test)
И вообще где можно почитать про создание переменных "для чайников" в iobroker?
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden