NEWS
CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor
-
Hab jetzt endlich mal ein Video dazu fertig gemacht: https://youtu.be/DBMYJOIcjvU
-
@haus-automatisierung sagte in CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor:
Hab jetzt endlich mal ein Video dazu fertig gemacht: https://youtu.be/DBMYJOIcjvU
Vielen Dank für die Erwähnung im Blog
-
Am Wochenende soll alles laufen
-
Der chaotische Versuchsaufbau
Werte kommen an!
L1 NASS
L2 TROCKENJetzt geht es an die Feinheiten. Ich hoffe, man kann mit dem Converter in 10% umrechnen. Sonst mache ich das mit einem Alias.
-
Der DHT22 läuft nun, zwei Soil Sensoren auch.
Bei den Reedkontakten habe ich noch ein Problem
Der zweite will einfach nicht.
Identische Einstellungen, es bleibt aber bei N/A
-
Mit passendem Converter klappt es!
-
UPDATE:
l1: Bodentemperatur DS18B20 (liegt zur Zeit auf der Heizung)
l2: Lufttemperatur & -feuchtigkeit DHT22
l3: Bodenfeuchtigkeit Soil Sensor (wird hier noch falsch angezeigt)
l4: Bodenfeuchtigkeit Soil Sensor
l5: Reed für die Tür
l6: Reed für das Fenster
l7: Relais für Beleuchtung
l8: Relais für Heizung/FrostschutzBei den Details und in den Datenpunkten stimmen die Endpunkte L3 und L4. Im Dashboard bekomme ich es einfach nicht geändert
EDIT: Es handelt sich 'nur' um einen Übersetzungsfehler! In der englischen Ansicht passt es
-
Die freie Version voll ausgereizt. Mehr geht nur mit der Premium!
-
Die Beschreibungen konnte ich auch direkt im Converter vergeben
-
Ich habe leider ein Problem mit den Kontakt Datenpunkte.
Die Aktualisieren sich im Zigbee2mqtt Adapter nicht
Im mqtt Adapter kommt allerdings die Änderung an
Ich behelfe mich nun erstmal mit einem kleinen Blockly und zwei Hilfsdatenpunkten, bis ich eine Lösung gefunden habe
Ich lese das json jetzt aus dem mqtt Adpater aus
Wo die Daten herkommen ist beim Alias ja egal.
Da die Werte im Zigbee2mqtt ankommen und auch üer mqtt auswertbar sind, vermute ich das Problem irgendwo im Zigbee2mqtt Adapter.
Ich habe dazu ein Issue erstellt: -
Das Widget dazu
(Die Werte stimmen natürlich noch nicht. Die Sensoren liegen alle noch hier im Büro und teilweise auf der Heizung) -
Fertig
Es fehlt nur noch die TPU-Dichtung unter dem Deckel. -
Jetzt brauche ich erstmal eine neue Idee!
-
Ich hatte noch einen CC2531 und ein paar DHT22 übrig.
Natürlich wieder mit Icon und eigenem Konverter
Ein Sensor mit 2m Kabel für die neue Werkstatt und einmal 5m Kabel, durch die Wand für den Außenbereich.
-
Hallo zusammen.
Ich habe mittlerweile ein paar eigene Zigbee Geräte in meinem Netzwerk. Klappt soweit sehr stabil.
Ich stehe nur vor einem 'Problem' bei einem externen Konverter. Kennst sich da jemand aus? Ich würde gern einen Wert direkt im Konverter umrechnen.Alles unter 300mm soll als 'true' und alles darüber als 'false' angezeigt werden. Mit einem Alias ist das kein Problem! Ich hätte es aber gern direkt in der Zigbee-Kachel anders stehen.
Ich messe hier in der Mähroboter-Garage, ob Roberta drin steht oder unterwegs ist.
So mache ich es zur Zeit (via Alias)
Ausschnitt vom Konverter. Könnte man es nicht schon direkt hier umrechnen?
Das wäre meine Wunschvorstellung (Photoshop)
-
@skvarel sagte in CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor:
Hallo zusammen.
[…]
Ausschnitt vom Konverter. Könnte man es nicht schon direkt hier umrechnen?
Kann man.
Dazu musst du 2 Dinge tun
- eine Funktion schreiben die die zigbee Nachricht abfängt um setzt
- das korrekte ‘expose’ dafür finden / definieren
Das hört sich jetzt sehr komplex an, ist es aber nicht.
- Du schaust dir die Funktion fz.ptvo_switch_analog_Input an. Wichtig sind die Parameter beim Aufruf sowie der rückgabewert
- du schreibst eine Funktion die mit den gleichen Parametern aufgerufen wird und rufst darin als erstes besagte fz… Funktion auf. Dann nimmst du den rückgabewert und baust den so um das deine Wunsch Bedingung erfüllt ist.
- Unter fromZigbee trägst du dann diese Funktion an Stelle der ptvo_switch_analog_Input ein.
- als letztes musst du schauen welcher Expose am besten dazu passt. Ich bin gerade unterwegs, kann da aber heute Nachmittag mal einen Vorschlag machen.
A.
-
@asgothian .. puhh, das klingt doch schon kompliziert.
-
Hier nochmal der aktuelle Konverter:
https://github.com/inventwo/custom-zigbee/blob/main/Converter/CC2531.US100.js
-
@skvarel sagte in CC2530/CC2531 als Custom-Zigbee-Aktor/Sensor:
@asgothian .. puhh, das klingt doch schon kompliziert.
Es ist einfacher als du denkst. Ich hatte bei der Beschreibung aber auch einen Denkfehler. Versuch mal so:
const fzlocal = { ptvo_switch_analog_to_boolean: { cluster: 'genAnalogInput', type: ['attributeReport', 'readResponse'], convert: (model, msg, publish, options, meta) => { const value =( msg.data['presentValue'] > 300 ); const action = (value ? 'occupied':'free'); return {action: postfixWithEndpointName(action, msg, model, meta)}; }, }; const device = { zigbeeModel: ['CC2531.US100'], model: 'CC2531.US100', vendor: 'inventwo', description: '[CC2531 w. US-100 Sensor](https://github.com/inventwo/custom-zigbee)', fromZigbee: [fz.ignore_basic_report, fz.ptvo_switch_uart, fz.ptvo_switch_analog_input,fzlocal.ptvo_switch_analog_to_boolean], toZigbee: [tz.ptvo_switch_trigger, tz.ptvo_switch_uart,], exposes: [ exposes.numeric('l1', ea.STATE).withDescription('Innenraummessung').withUnit('mm'), exposes.action(['occupied'].withDescription('Innenraum belegt'), exposes.action(['free'].withDescription('Innenraum frei'), ], meta: { multiEndpoint: true, }, endpoint: (device) => { return { l1: 1, }; }, configure: async (device, coordinatorEndpoint, logger) => { const endpoint = device.getEndpoint(1); await endpoint.read('genBasic', ['modelId', 'swBuildId', 'powerSource']); }, };
A.
Nachtrag: ich hab das icon aus dem code genommen, und den Kopf nicht mit angegeben - das sollte aber kein problem für Dich sein
Nachtrag2: ich hatte noch einen Denkfehler - ist jetzt korrigiert.
-
@asgothian .. teste ich!