Composer

COMPOSER UNTER WINDOWS

Damit man solche FrameWorks wie OXID,  Lavarel, Flarum etc. installieren kann, braucht man den Composer. Die Installation erfolgt durch einen SSH-Zugang. Bei meinem Webhosting-Paket war das nicht inklusive. Ich müsste das Paket auf Server umstellen und das kostet statt 4,99 € dann 19,99 €.

Ich habe erstmal auf das Upgrade verzichtet und das ganze lokal compiliert. Dazu sind folgende Schritte notwendig:

1.] Installation vom Composer.exe von https://getcomposer.org/download/

2.] CMD starten und „Composer“ eingeben

3.] Installationsbefehl vom entsprechenden Paket eingeben

4.] Dateien auf den Webserver hochladen und Installationsseite öffnen

 

 

Einführung in Node-Red: Function-Nodes

EINFÜHRUNG IN NODE-RED: FUNCTION-NODES

In der Home-Automation bzw. im Smart Home gibt es mittlerweile viele verschiedene Möglichkeiten seine Geräte zentral, von unterschiedlichen Herstellern über unterschiedliche Kommunikationswegen (Funk, ZigBee, WLAN,…), zu verbinden. Ich habe für meine Projekte auf einen Raspberry Pi die Software Node-Red verwendet und bin mit den Möglichkeiten und den Funktionsumfang positiv überrascht worden. Ich konnte bisher für alle meine Projekte eine Losung über Node-Red finden.

In diesem Beitrag werde ich nur die Punkte extrahieren, die für meine Projekte relevant sind. Wer es noch detaillierter braucht, der könnte enttäuscht werden.

NACHRICHTEN -AUSTAUSCH

Über die Nodes, die ein In- bzw. Output Interface besitzen, werden Nachrichten ausgetauscht. Die verwendete Programmiersprache ist hierbei das  objektorientierte JavaScript. Für die Browserdarstellung wird HTML verwendet.

IBM, der Entwickler von Node-Red, empfiehlt nach Möglichkeit alles mit Nodes zu lösen und so wenig wie möglich Functions-Nodes bzw. JavaScript zu verwenden. Es widerspricht etwas der visuellen Programmierung.

Die grundlegende Syntax in JavaScript würde so aussehen:

var auto = {marke: "WV", farbe: "grau"};

Hier werden die Eigenschaften vom Objekt „auto“ deklariert.

Für den Zugriff auf die Eigenschaften eines Objektes wird diese Syntax/Notation verwendet:

Objekt.Eigenschaft

In unserem Beispiel würde es dann so aussehen:

var brand = auto.marke;
var color = auto.farbe;

In Node-Red gibt es ein Nachrichtenobjekt msg. Diese Eigenschaften hat das Objekt:

var msg = {payload: "Daten", topic "Header", _msgid: "323xxx"};

Wozu braucht man diese Eigenschaften?

payload: es werden die Nutzdaten gespeichert in unterschiedlichen Formen.
topic: für die Klassifizierung einer Nachricht, um das übergeordnete Thema weiter einzugrenzen.
_msgid:  für die interne Kennzeichnung einer Nachricht über die entsprechende ID.

Über einen Inject-Node („timestamp“) gebe ich den Inhalt an eine Debug-Node (msg.payload) weiter. Rechts im Fenster wird es ausgegeben.

Im Debugfenster wird der Inhalt ausgegeben. Diese Zahlen beinhalten das aktuelle Datum und die Uhrzeit. Es ist für den Computer lesbar, aber für den Menschen eher ungeeignet. Wir brauen eine function-Node („Datum“) ein und konvertieren das Datum.

Der Inhalt der Function-Node „Datum“ sieht wie folgt aus:

// Es wird ein Datum-Objekt über die eingehende msg.payload erstellt
var datum = new Date(msg.payload);

// Der Payload wird in einen String umgewandelt
msg.payload = datum.toString();

// Rückgabe des Payloads
return msg;

Die anderen beiden Nodes „Timestamp“ und „msg.payload“ habe ich in der Default-Einstellung gelassen.

Um noch detaillierter die Informationen im Debug-Fenster zu erhalten, muss man im Debug-Node eine kleine Umstellung vornehmen:

Weitere Beispiele

In String (bzw. neue Information)  umwandeln:

In der Praxis könnte man auch einen Change-Node verwenden.
msg.payload = "neuer String";

return msg;

Berechnungen:

Eingehenden String ergänzen:

Mehrere Outputs:

Abhängig, welcher Inject-Node ausgeführt wurde, werden in der Function-Node die Daten weitergeleitet an den nächsten Node (im Beispiel an das Debug-Node „msg“)

Der JavaScript-Code von der Function „Convert“:

var topic=msg.topic;

if (topic=="Test1"){
return [msg,null];
}

if (topic=="Test2"){
return [null,msg];
}

if (topic=="Test3"){
return [null, null, msg]; // 3st output
}

 

MQTT & Node-Red

MQTT & NODE-RED

Vorab:
Ich mache mir hier quasi nur paar Stichpunkte als Gedächtnisstütze. Ich extrahiere mir nur die Punkte heraus, die für meine Projekte relevant erscheinen.  Wer noch tiefere Informationen erwartet, könnte evtl. enttäuscht werden.

In diesem Beitrag möchte ich nur paar elementare Punkte zum MQTT-Netzwerkprotokoll, für die Machine-to-Machine-Kommunikation, schreiben.   Ich habe ja bereits in beschrieben, wie man mit einem SONOFF WiFi RF433 MHz Bridge  über einen MQTT-Broker/Server steuern kann.

Grundlegender Aufbau MQTT

Ich möchte das direkt mal im praktischen Einsatz zeigen.

Auf meinem PC installiere ich die Software MQTT.FX und nehme über das Zahnrädchen die MQTT-Einstellungen vor.

1.] IP-Adresse des MQTT-Brokers eingeben.
2.] Über „Connect“ Verbindung zum MQTT-Broker aufbauen.
3.] Über die Software MQTT wird eine Information an Node-Red weitergereicht.
4.] Möchte man alle Topics sehen, trägt man unter Topic die # ein.

Node-Red: Integration BroadLink SC1 WiFi Smart Switch

NODE RED: INTEGRATION BROADLINK SC1 WIFI SMART SWITCH UND BEDIENUNG ÜBER TOGGLE-KNOPF

VORAUSSETZUNGEN

· Raspberry PI (ich habe den 3B im Einsatz) mit Node-Red
· Nodes-Palette node-red-contrib-broadlink-control (verwende den SP2-Node dafür)
· BroadLink SC1 WiFi Smart Switch

Manchmal sagen Bilder mehr als tausend Worte:

1. Grundlegender Aufbau

Erläuterung:

Im Node „Status: Wohnzimmer Licht (SC1 WiFi-Switch)“ wird der Status des BroadLink SC1 WiFi Smart Switch geprüft. Der folgende Switch-Node prüft den Status und macht dann immer das Gegenteil: ist der Status OFF, dann wechsel auf ON oder umgekehrt. So kann man mit einem Knopf (Toggle), z.B. das Licht ein oder Ausschalten. Natürlich ist auch eine separate Belegung möglich.

 

 

 

Node-Red: OSRAM – Lampe mit zigbee2mqtt verbinden

NODE-RED: OSRAM – LAMPE MIT ZIGBEE-GATEWAY VERBINDEN

Ich hatte ja bereits in diesem Beitrag erläutern, wie man das Gateway (in meinem Fall zigbee2mqtt) verbindet. Das hat auch mit ZigBee-Geräten sehr gut funktioniert, die nur Senden. Bei der Einbindung der Lampe, in Konstellation mit einem SmartButton, muss man jedoch noch eine Kleinigkeit beachten.

In meinem Fall ist es die OSRAM E27. Es hätte aber auch theoretisch eine andere ZigBee-Lampe sein können.

AUFBAU DES FLOWS

Erläuterung:

Der erste Node „Aqara Button (rund)“ (Model WXKG01LM) sendet beim einfachen Tastendruck onOff:0 oder onOff:1. Ich möchte diesen Button als Toggle nutzen, also bei Klick an oder aus.

1.] Der Switch-Node lässt nur die „0“ durch, theoretisch könnt man auch die „1“ nehmen. Da beim Tastendruck des Smart-Buttons beide Werte übertragen werden.

Inhalt vom Node „format/delete payload“:

2.] Werte vom Smart-Button werden aus dem Payload entfernt. Wenn man das nicht macht, würde man die Werte der OSRAM-Lampe überschreiben und es würde nicht funktionieren.
3.] Bei „Command“ habe ich „toggle“ eingestellt. Möglich wären aber auch „off“ oder „on“

 

LAMPE HELLER/ DIMMEN

Node „SET HELLIGKEIT“:

var newMsg = { payload:
{
"level":20,
"transtime":0
}

}
return newMsg;

Node „OSRAM LAMPE …“:

 

 

Node-Red: Sonoff WiFi RF 433 MHz Bridge mit Tasmota Firmware

NODE-RED: SONOFF WiFi RF 433 MHZ BRIDGE MIT TASMOTA FIRMWARE

MOTIVATION/INTENSION

Ich nutze schon seit einigen Jahren den BroadLink RM Pro zum Steuern von 433 MHz Geräten. Es hat aber keine Empfänger-Funktion – d.h. man kann z.B. von einem 433 MHz Bewegungsmelder keine Signale abfangen, um damit weiterzuarbeiten. Nur beim Anlernen von Geräten geht der RM Pro in „Lauschposition“. Deswegen habe ich nach einer Möglichkeit gesucht, wie ich meine 433 MHz Geräte in meine Node-Red Flows einarbeiten kann. Die SONOFF WiFi RF 433 MHz Bridge soll natürlich nicht meinen BroadLink RM Pro ersetzen (kann es auch nicht, da keine Infrarotverarbeitung vorhanden), sondern um die 433 MHz Empfangsfunktion erweitern. Es gibt sehr viele verschiedene Möglichkeiten, aber diese schien mir am komfortabelsten zu sein.

VORAUSSETZUNGEN

· Raspberry PI (ich habe den 3B im Einsatz)
· SONOFF WiFi RF 433 MHz Bridge (mit Tasmota Firmware)
· Node-Red und MQTT sollten lauffähig sein

Wie man den SONOFF WiFi RF 433 MHz Bridge flasht, werde ich hier nicht weiter erläutern. Über google findet man, neben der offiziellen Tasmota-Dokumentation, unzählige Anleitungen dazu. Wenn man das macht, kann man die Hersteller-Software eWeLink nicht mehr nutzen. Wer sich die Arbeit des Flashens ersparen möchte, kann sich auch direkt – gegen einen kleinen Aufpreis – einen SONOFF WiFi RF 433 MHz Bridge mit Tasmoto Firmware kaufen. Wir setzen an der Stelle an, wo es um die Konfiguration geht. Ich werde es hier in einfachster Grundform beschreiben.

1.] SONOFF WiFi RF 433 MHz Bridge mit dem WLAN verbinden
Dazu bietet das Gerät einen WLAN-Accesspoint an, womit man sich z. B., mit seinem PC oder Smartphone direkt verbindet. Hierzu muss man den Pairing-Modus an der Bridge aktivieren, indem man ca. 7 Sekunden die Taste (neben dem USB-Anschluss) mit z.B. einem kleinen Schraubendreher (ich hatte dafür eine Nadel verwendet) betätigt. Die LED fängt an zu blinken und man kann  jetzt via WLAN sich auf das Webinterface über die IP-Adresse http:// 192.168.4.1 draufschalten und die Daten seines WLAN-Routers eingeben. Die IP-Adresse des SONOFF WiFi RF 433 MHz Bridge wird anschließend vom WLAN-Router über DHCP neu vergeben. Diese IP-Adresse kann man sich über das Konfigurationsmenü seines WLAN-Routers anzeigen lassen.

2.]  MQTT-Aktivierung
Damit später es zum Datenaustausch zwischen Node-Red bzw. dem Raspberry Pi und der SONOFF WiFi RF 433 MHz Bridge kommt, muss man im Webinterface unter „Einstellungen“ > „MQTT-Einstellungen“ Anpassungen vornehmen.

Ich habe hier nur den Host und die topic geändert. Alles andere bleibt unverändert.

Unter „Gerät konfigurieren“ habe ich diese Einstellung vorgenommen:

3.] Node-Red konfigurieren
Wir fügen einen neuen MQTT-Node hinzu, wie in den beiden Screenshots dargestellt:

Einstelllungen des MQTT-Servers. In meinem Fall ist es „localhost“,

4.] Mit Node-Red über MQTT die 433 MHz Signale abfangen und über einen Switch steuern

In dieser Grafik habe ich den Vorgang beschrieben:

Erläuterung:

Über den MQTT-Node („tele/tasmotarf433/RESULT“) werden die vom SONOFF WiFi RF 433 MHz Bridge empfangen Daten abfangen und im folgenden json-Node in eine Zeichenfolge formatiert. Der Switch-Node hat dann die Aufgabe, nur das entsprechende Datenpaket zu Filtern, was uns als Trigger dienen sollen. Unter Punkt 2 wird mit dem Payload „msg.payload.RFReceived.Data“ die „gefiltert“ und nur die Data weitergereicht, die im Debug-Fenster angezeigt wird. In meinem Beispiel war das eine 433 MHz Funkfernbedienung. Theoretisch aber kann das alles sein, was auf 433 MHz basiert, wie z.B. ein Bewegungsmelder oder Fenster-/ Türkontakt.

Ich hatte auch Geräte, die im Debug-Fenster von Node-Red nicht dargestellt wurden, aber in der Konsole im Webinterface schon:

Die Codierung steht hinter „Data“ (hier ausgepixelt)

 

SONSTIGES

Zurücksetzen:
Die Taste am Gerät min. 40 Sekunden betätigen. Danach sollte das Gerät wieder den Lieferzustand bekommen.

Im Webinterface der SONOFF WiFi RF 433 MHz Bridge den Traffic anzeigen lassen:
In der Konsole den Befehl „RfRaw AAB155“ kann man die portische Mithörung in seiner Umgebung starten. ACHTUNG! Wenn man diesen Befehl eingibt, ändert sich auch die eingegangenen MQTT-Befehle und somit funktionieren die MQTT-in Nodes nicht mehr. Das muss mit „RfRaw 0“ wieder deaktiviert werden. Hier eine sehr schöne Übersicht.

Funksignale werden angezeigt.

Node-Red: SOS-Button mit BroadLink S1C erstellen

NODE-RED: SOS-BUTTON ALS TRIGGER FÜR AKTIONEN MIT BROADLINK S1C ERSTELLEN

Ich habe in meinen vorherigen Beiträgen bereits gezeigt, wie man Interaktionen mit Node-Red abbilden kann. In diesem Betrag möchte ich mit der SOS-Taste der Fernbedienung einige Aktionen ausführen.

1.] Im Intervall von 10 Sekunden, wird der Status („Get trigger status“) abgefragt. Ist der Trigger-Status „wahr“ bzw. „true“, werden die hinterlegten Aktionen ausgeführt. In diesem Beispiel gehen Lampen und ein Fernseher an. Hier könnte theoretisch auch eine Sirene eingebunden werden.

Zusätzlich informiert die App, dass die SOS-Taste ausgelöst wurde. Die Zentraleinheit gibt auch einen Alarmton, wobei dieser – selbst in der höchsten Stufe – sehr leise ausfällt. In der Praxis würde ich eine Sirene an dieser Stelle einbinden.

Broadlink S1C und Node-Red

NODE-RED: INTEGRATION BROADLINK S1C-ALARMSYSTEM

In diesem Beitrag werde ich über die Einbindung des BroadLink S1C in Node-Red eingehen. Vorher bitte ggf. diesen Beitrag hier anschauen.

MEINE INTENTION/MOTIVATION

Über die Jahre habe ich mir diverse Geräte gekauft, die leider nicht miteinander kommunizieren können. Ich habe Geräte (wie z.B. von BroadLink), die über WLAN arbeiten, andere über ZigBee oder mit Funk (433 MHz). Mit Node-Red  auf einem Raspberry Pi als Zentrale und paar Zusatzgeräten, die als Schnittstellen (RM Pro, RF Bridge und ZigBee2mqtt-Gateway-Stick) dienen, kann man diese Geräte miteinander kommunizieren lassen.

EINLEITUNG

Ich nutze einen Raspberry Pi als zentrale mit Node-Red und dort möchte ich alle meine Smart Home Elemente (z.B. ZigBee-Geräte oder 433 MHz Elemente) implementieren, um eine größere Flexibilität zu haben. Weiter ist es aktuell auch so, dass die hauseigene App von BroadLink mit Alexa-Sprachbefehlen keine 433 MHz-Funksteckdosen unterstützt. Auch meine Anfrage beim Support (inkl. Einreichung eines Fehler-Videos) hat nichts gebracht.  Das Anlernen von z.B. 433 MHz Geräten funktioniert mit den BroadLink Nodes hervorragend und wird auch problemlos von Alexa per Sprachbefehl bedient. Inwieweit man sein Alarm-System später per Sprachbefehl einstellen möchte, muss jeder selber entscheiden. Technisch aber steht dem nichts im Weg.

INSTALLATION DER  BROADLINK-NODES

Es gibt zwei Möglichkeiten, die Geräte-Codes von RM Pro in Node-Red zu implementieren:  Bei einem bestehenden System kann man die „fertigen“ Codes übernehmen oder man lernt die Codes über die entsprechenden Nodes  an.  Wie das funktioniert, habe ich in diesem Beitrag unter „5.] BROADLINK RM PRO EINBINDEN“ genauer erläutert.

AUFBAU/LOGIK

1.] Musteraufbau

Ich lasse hier [1] einen Inject-Node in einem Intervall von 10 Sekunden nach Statusänderungen der Sensoren und Alarmsystem-Status (Teil-Alarm/Part-Arm) überprüfen.  Treffen die entsprechenden Bedingungen zu, wird eine Funksteckdose („Lampe HINTEN (RF) EIN“) eingeschaltet und nach 3 Minuten wieder ausgeschaltet. Hier könnte theoretisch auch eine Sirene eingebunden werden.

2.] Teil-Alarm muss aktiviert werden. Das geht auch mit der mitgelieferten Funk-Fernbedienung.

EINSTELLUNGEN

Treffen die beiden Bedingungen „Part-Alarm“ [3] & „Person Detected“  [5] zu, dann wird die entsprechende Aktion ausgeführt. In diesem Beispiel wird einfach nur eine Funksteckdose „LAMPE HINTEN RF EIN“ eingeschaltet und nach 3 Min. über einen Delay-Node („Verzögerung bis zum…“) ausgeschaltet.

3.] BroadLink-Nodes
4.] Hier trägt man – über den rechten Bearbeitenbutton – die MAC-Adresse (ohne Zwischenzeichen wie Doppelpunkt oder Minus) und die IP-Adresse ein. Mit der Aktion „Get alarm status“ wird der Alarm-Status (z.B. Teil-Alarm) abgefragt.
5.] Mit diesem Switch-Node wird der Status abgefangen. Beim Status „Full-Arm“ endet es aktuell hier, bei „Part-Arm“ geht es weiter zum nächsten Node.
6.] Der Sensorstatus wird ermittelt über die Aktion „Get sensors status“. Die Werte werden in einem Array geliefert.
Sensorstatus aus dem Array auslesen
7.] Um den Sensoren-Status aus dem Array zu ermitteln, habe ich einen Debug-Node angehängt. Im Debugfenster hat man die Übersicht über den aktuellen Sensoren-Status. Diese wird in der Funktion (hier hätte man auch sicherlich einen Switch-Node verwenden können) geprüft nach „Person Detected“)“ und ggf. der RF-Code zur Funksteckdosen-Steuerung ausgeführt.

Inhalt der Funktion:

var status = msg.payload[3].status.state;

if (status == "Person Detected") 
{

//Insert learning code here
var data = [178,2,132,3,7,11,7,43,6,43.........

msg.payload={
//"mac":"MAC address of your broadlink rm",
//"host":"IP address of your broadlink rm",
"action":"send",
"data":data,
"repeat":3
};
return msg; 

}

Wie man Funk- oder IR-Signale mit dem RM Pro abängt, hatte ich in diesen Beitrag bereits beschrieben.

 

 

Node Red: Zigbee-Geräte einbinden

NODE RED: ZiGBEE-GERÄTE INTEGRIEREN

Auf Basis von https://www.zigbee2mqtt.io/ möchte ich hier in diesem Beitrag zeigen, wie man ZigBee-fähige Geräte einbinden kann.

Voraussetzungen:

· Raspberry PI
· MQTT-Broker (z.B. Mosquitto)
· Nodes- Palette node-red-contrib-zigbee
· ZigBee-Stick (idealerweise einen bereits vorkonfigurierten/geflashten CC2531-USB-Stick-zigbee2mqtt)
· Geräte die das ZigBee-Protokoll unterstützen (z.B. Xiaomi Aqara oder ein anderes von dieser Liste)

1.] Die Anleitung auf https://www.zigbee2mqtt.io/getting_started/running_zigbee2mqtt.html befolgen. Diese Anleitung geht von einem bereits vorkonfigurierten Stick aus, daher wird kein Debugger Programmer für die Stickeinrichtung  benötigt.

2.] Die Palette um diese Nodes erweitern
3.] „zigbee herdsman“ auswählen und anschließend den Stift (Icon rechts) anklicken
4.] Die Suche starten. Wie man das entsprechende Gerät paart, wird hier beschrieben.

SONSTIGES

Reichweite:

Es gibt Elemente (z.B. eine ZigBee-Steckdose von OSRAM), mit den man das Zigbee-Netzwerk erweitern kann.  Dieser Geräte erscheinen unter „Devices“ als „Router“. In diesem Kontext sprich man vom Mesh-Netzwerk.

Fehlerbehebung:

Kann keine Verbindung aufgebaut werden, kann ein Neustart des Raspberry Pi helfen. Auch das Umstecken in einen anderen USB-Port kann funktionieren. Ist der Stick verbunden, steht unter einem Event-Node „connected“ mit einem grünen Punkt davor.

 

 

Vertstopfung Extruder Renkforce RF100 XL

BILDERREIHE: REINIGUNG EXTRUDER  RENKFORCE RF100 XL

Mir ist letztens etwas PLA-Filament im Extruder (Teflonröhre) hängengeblieben. Die Wahrscheinlichkeit, dass die Verstopfung sich im unteren Bereich zur Übergabe zum Nozzle – daher wie in den Bildern 2, 3, 9 und 10 vorgehen. Die Beseitigung habe ich in der folgenden Bilderreihe dokumentiert:

1.] Vorne ist eine 5 mm und oben 8 mm lange Schraube
2.] Oben 15 mm und unten 23 mm lange Schraube
3.] 17 mm lange Schrauben
4.]
5.]
6.]
7.]
8.]
9.]
10.] Im oberen Teil war die Teflon-Röhre verstopft