RedMatic - Telegrambot-home

Node-RED als CCU3/RaspberryMatic Addon, WebApp, HomeKit, ...

Moderator: Co-Administratoren

Hypnos
Beiträge: 460
Registriert: 06.01.2018, 12:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 57 Mal
Danksagung erhalten: 39 Mal

Re: RedMatic - Telegrambot-home

Beitrag von Hypnos » 21.10.2018, 14:50

Soweit ich gesehen habe wird über das cgi nur ein HM Script ausgeführt. Das kann man in RedMatic ohne Umwege über das Script-Node machen.

Zum Ursprungs-Problem:

Um einfach eine Temperatur zu einer bestimmten Zeit zu senden muss man diese einfach in einem context speichern und den letzten Wert zu der bestimmten Zeit senden:
2018-10-21_14h46_42.png
2018-10-21_14h46_42.png (20.46 KiB) 1894 mal betrachtet
im value Node den Datenpunkt wählen:
2018-10-21_14h46_00.png
Der value node sendet immer den Wert, wenn er vom Gerät gesendet wird (oder nur wenn er sich ändert, wenn der entsprechende haken gesetzt ist).

in dem change node einfach als "flow variable" speichern:
2018-10-21_14h42_00.png
2018-10-21_14h42_00.png (16.59 KiB) 1894 mal betrachtet
und im Inject node den letzen variablen-wert aussenden:
2018-10-21_14h42_17.png
Ich habe auch verschiedene Wemos. Ursprünglich hatte ich auch CuXD Geräte damit "gefüttert". Das hat mir nicht wirklich gefallen. Es gibt nicht für alles CuXD Geräte und dann müssen Systemvariablen her.
Die Anbindung habe ich mit RedMatic jetzt anders gelöst. Ich habe auf meiner CCU noch das Mosquitto AddOn laufen und sende die Daten alle über MQTT an RedMatic und auch den IOBroker). Die paar CuXD Geräte, welche ich noch habe aktualisiere ich jetzt über RedMatic.
Damit bin ich auch flexibler, wenn sich was ändert, ist der RedMatic Flow einfacher angepasst.

dhuuk42
Beiträge: 47
Registriert: 07.03.2017, 08:00

Re: RedMatic - Telegrambot-home

Beitrag von dhuuk42 » 22.10.2018, 06:56

Moin! Und Danke, soweit komme ich mit. Allerdings hapert es bei mir daran die Variable in den Telegram Node zu übergeben und ausgeben zu lassen.

Also bis zum Inject Node ist alles gut. Der Trigger gibt auch per Debug den gewünschten Wert aus. Aber keine Ahnung wie ich diese msg.payload an telegram übergebe :(
2018-10-22 06_55_42-Node-RED.png

Hypnos
Beiträge: 460
Registriert: 06.01.2018, 12:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 57 Mal
Danksagung erhalten: 39 Mal

Re: RedMatic - Telegrambot-home

Beitrag von Hypnos » 22.10.2018, 14:45

Da kann ich dir leider nicht helfen.

Ich nutze das Paket "node-red-contrib-telegrambot" und hier die "Telegram sender" node.

Über diese schicke ich die Nachricht als objekt in der Form:

Code: Alles auswählen

msg. payload = {
        chatId : 081508150,
        type : 'message',
        content : 'dies ist mein Message-text',  //(required) - your message
        options : {
            disable_web_page_preview : true,
            parse_mode : 'HTML', //"Markdown"
            disable_notification : 'false'
        }
Damit kommen bei mir die Nachrichten an.

dhuuk42
Beiträge: 47
Registriert: 07.03.2017, 08:00

Re: RedMatic - Telegrambot-home

Beitrag von dhuuk42 » 22.10.2018, 15:07

Ja so kann ich das auch machen. Habe auch das node-red-contrib-telegrambot Paket.

Aber wie zieh ich mir eine Variable mit rein? Das müsste ja mit in den content block kommen, siehe unten.

Code: Alles auswählen

msg. payload = {
        chatId : 081508150,
        type : 'message',
        content : 'Die Temperatur beträgt' + msg.myTemp + "Grad Celsius",  //(required) - your message
        options : {
            disable_web_page_preview : true,
            parse_mode : 'HTML', //"Markdown"
            disable_notification : 'false'
        }

Hypnos
Beiträge: 460
Registriert: 06.01.2018, 12:48
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 57 Mal
Danksagung erhalten: 39 Mal

Re: RedMatic - Telegrambot-home

Beitrag von Hypnos » 22.10.2018, 15:42

entweder eine change node nehmen
change.png
change.png (14.74 KiB) 1841 mal betrachtet
dort setzt du zuerst den payload auf die JSON expression:

Code: Alles auswählen

{
    "chatId": 081508150,
    "type": "message",
    "content": "",
    "options": {
        "disable_web_page_preview": true,
        "parse_mode": "HTML",
        "disable_notification": false
    }
}
und dann den payload.content auf deinen Wert mittels JSONATA:

Code: Alles auswählen

'Die Temperatur beträgt ' & msg.myTemp & " Grad Celsius"
oder (langweilig) nur eine function node: :D
function.png
function.png (17.74 KiB) 1841 mal betrachtet

Smutje
Beiträge: 13
Registriert: 12.01.2011, 00:45
Wohnort: 8800 Lysos, District Paphos, Zypern
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: RedMatic - Telegrambot-home

Beitrag von Smutje » 22.10.2018, 16:35

Variable aus dem flow context auslesen!

Mit dem Befehl get lassen sich zuvor im flow gespeicherte Daten wieder auslesen.

Code: Alles auswählen

var t = flow.get("myTemp");
in deinem Script sähe das dann so aus:

Code: Alles auswählen

msg. payload = {
        chatId : 081508150,
        type : 'message',
        content : 'Die Temperatur beträgt' + flow.get("myTemp") + "Grad Celsius",  //(required) - your message
        options : {
            disable_web_page_preview : true,
            parse_mode : 'HTML', //"Markdown"
            disable_notification : 'false'
        }
Viel Erfolg!

Smutje

Antworten

Zurück zu „RedMatic“