Inhoudsopgave:

Draadloze MQTT bedhoofdeindebediening - Ajarnpa
Draadloze MQTT bedhoofdeindebediening - Ajarnpa

Video: Draadloze MQTT bedhoofdeindebediening - Ajarnpa

Video: Draadloze MQTT bedhoofdeindebediening - Ajarnpa
Video: IoT Router Edge Computing Gateway Industrial Support JavaScript Secondary Development 2024, Juli-
Anonim
Draadloze MQTT bedhoofdeindebediening
Draadloze MQTT bedhoofdeindebediening
Draadloze MQTT bedhoofdeindebediening
Draadloze MQTT bedhoofdeindebediening

Een paar jaar geleden kochten we een nieuw traagschuimbed en zoals bij de meeste bedden moest je ook een van hun "goedgekeurde bodems" kopen om garantie te behouden. Dus kozen we voor de goedkoopste basis die ook de mogelijkheid omvatte om het hoofdeinde van het bed omhoog en omlaag te brengen. Een paar dagen later werden onze matras en onze American Adjustables goedkope basis met bedrade bedieningselementen (één voor elke kant van het bed) geleverd en opgesteld.

Het eerste wat ons opviel was dat de snoeren in de showroom die lekker lang waren niet waren wat we op ons bed hadden! Die in de showroom hadden uitbreidingen. Deze verlengkabels waren NIET bij ons bed inbegrepen en interessant genoeg was niemand geïnteresseerd om ons een paar verlengkabels te verkopen. Hierdoor hadden we bedieningselementen die nauwelijks de bovenkant van het bed bereikten en die we moesten omdraaien om te gebruiken.

Je krijgt waar je voor betaalt

Na ongeveer 6 maanden merken we dat de trekontlastingskragen op een van de controles begon te scheuren. Een paar maanden later - blote draad. Ongeveer een jaar snel vooruit, een van de bedieningselementen werkt niet meer en de andere wordt een beetje zenuwachtig.

Nogmaals, niemand was geïnteresseerd om ons vervangingen te verkopen. Toen raakte het me!

Wacht even! Ben ik niet een domotica- en BEDIENINGssysteem aan het bouwen?!?

Stap 1: Ontdekking

Ontdekking
Ontdekking
Ontdekking
Ontdekking

Ik wilde zien wat ik kon doen met wat ik had, dus nam ik de defecte controller appart en wauw! er zat veel troep in! Waar waren al deze spullen voor? Ik deed een stap achteruit en keek alleen maar naar de lijnen die in en uit kwamen. Ik kon zien dat er een 12 volt voedingslijn was en een massalijn. De andere twee lijnen zagen eruit als signaallijnen voor de twee omhoog- en omlaagknoppen. Dus ik waagde een gok en schakelde de 12v-voeding gewoon over naar de "up"-signaallijn. Het bed begon te bewegen! Ik verplaatste toen mijn jumperdraad naar de signaallijn "omlaag" en het bed ging naar beneden!

In de doos zitten contacten voor nog 4 signaallijnen en nog 4 knoppen. Mijn beste gok is dat dit controllerbord in al hun bedrade basismodellen wordt gebruikt en dat ze indien nodig gewoon verschillende voorplaten over het bord plaatsen. Dus ik had een werktheorie. Ik heb de toevoerleiding getest om te zien of deze tijdens gebruik is ondergedompeld of op enig moment is geprikt - nee. Er was heel weinig stroomverbruik over de signaallijnen, maar ze hadden 12 volt nodig om de motor te activeren.

Stap 2: Ontwerp

Ontwerp
Ontwerp
Ontwerp
Ontwerp
Ontwerp
Ontwerp
Ontwerp
Ontwerp

Dus een eenvoudige contactverbinding tussen VCC en de signaalpin is alles wat nodig is, maar hoe doe ik dat binnen mijn systeem. Er zijn twee relais nodig voor de contacten en een ESP8266 zou werken voor de draadloze controller. Aangezien de relais meer stroom nodig hebben dan de digitale pinnen kunnen leveren, is het het beste om een opto-isolator tussen de controller en het relais te gebruiken. Hierdoor kan een klein signaal een hogere stroomschakelaar inschakelen (in dit geval een lichtgestuurde transistor) en de relaisspoel veilig activeren. Ook isoleert een opto-isolator de controller van eventuele pieken die kunnen ontstaan wanneer de relaisspoel wordt losgelaten en het magnetische veld instort. Gelukkig zijn er relaismodules die al deze schakelingen al bevatten en voor een vrij lage prijs.

Het bed is de voeding voor de controller en om de geleverde 12 volt aan te kunnen, hebben we een variabele buck-converter nodig. Een zeer goedkope is hieronder gelinkt en werkt prachtig. De 12V-lijn en GND-lijnen worden aangesloten op de ingangszijde van de converter en de gereguleerde 5 volt-zijde wordt aangesloten op de VCC van de NodeMCU en de VCC-pin op de relaismodule. De aarde (-) op de converter wordt aangesloten op de GND-pinnen op zowel de relaismodule als de NodeMCU.

De NodeMCU maakt verbinding met IN1 via D1 (GPIO5) en IN2 via D2 (GPIO4). De omhoog-signaallijn op het bed wordt aangesloten op de normaal open schroefklem voor relais 1 en de neerwaartse signaallijn wordt aangesloten op de normaal open klemmenblokconnector van relais 2. U moet de 12v-draad die is aangesloten op de ingangszijde van de buck-converter ook aansluiten op de andere aansluitblokaansluiting voor BEIDE relais 1 en 2.

Onderdelen

  • 1 - NodeMCU
  • 1 - Duel-relaismodule met stroomisolatie
  • 1 - Variabele input/output buck-converter
  • 1 - Breadboard-printplaat
  • 22 gauge gevlochten koperen kerndraad
  • 2 - M3x 8 schroeven

Stap 3: Behuizing

Behuizing
Behuizing

De bijlage is hier te vinden:

Ik ontwierp een eenvoudige omhulling met Tinkercad waarmee de bedbedieningskabel de doos kan worden ingevoerd tussen trekontlastingsbeugels in de doos. Er zijn sleuven voor een ritssluiting hier die zouden helpen voorkomen dat de kabel wegglijdt, maar in mijn geval was de pasvorm erg nauw en had ik deze niet nodig. Het deksel wordt vastgeschroefd met 2 M3x 8 schroeven. Ik zou aanraden om de code te uploaden en het systeem te testen voordat je het in de doos monteert.

Ik heb hete lijm gebruikt om de planken op hun plaats te houden, maar dit is misschien niet nodig.

Stap 4: Coderen

De code is hier te vinden:

OPMERKING: dit project maakt gebruik van de pubsubclient-bibliotheek die kan worden toegevoegd in de bibliotheekmanager in de Arduino IDE

De code hier is vrij eenvoudig en is ontworpen op basis van het Cover MQTT-type in Home Assistant. Het idee hier is eenvoudig: wanneer u op de knop omhoog of omlaag drukt in de Home Assistant, wordt het betreffende relais gesloten totdat het stopcommando wordt ontvangen OF het systeem een maximale activeringstijd bereikt en stopt.

De maximale tijd is bedoeld als veiligheidsmaatregel voor het geval de gebruiker vergeet het te stoppen of als het commando per ongeluk is verzonden en het onwaarschijnlijk is dat iemand het zal stoppen. We willen niet dat het relais voor onbepaalde tijd aan staat of dat er onverwachte problemen met het bed ontstaan door langdurige contactsluiting.

In mijn code is deze time-out 20 seconden en kan worden aangepast in het globale variabele blok bovenaan de code.

Een tweede veiligheidsmaatregel was om er altijd voor te zorgen dat als ik het ene relais activeer, er altijd een opzettelijke deactivering van het andere wordt opgeroepen, zelfs als de laatste status al uit was. Ik wil geen 12v langs beide signaallijnen sturen, omdat ik niet weet wat dat met het bed zal doen.

Anders dan dat, publiceert het bed dat het elke 60 seconden beschikbaar is en dat is het dan. Geen toeters of bellen hier. Omdat het bed geen positiefeedback heeft, kon ik er geen terugsturen naar Home Assistant.

Stap 5: Voorbeeld integratie

Voorbeeld integratie
Voorbeeld integratie
Voorbeeld integratie
Voorbeeld integratie

De code die ik heb geschreven gebruikt MQTT om via wifi te communiceren en kan daarom communiceren met elke automatiseringshub of elk apparaat dat MQTT gebruikt. Ik gebruik Home Assistant met een ingebouwde MQTT-makelaar. Hieronder ziet u een voorbeeld van mijn HA-configuratie.

In HA heb ik een covers.yaml-bestand met de volgende definitie:

- platform: mqtt

name: "Master Bed Headboard" command_topic: "master_bed_control/cmd" availability_topic: "master_bed_control/availability" qos: 0 behouden: false payload_open: "UP" payload_close: "DOWN" payload_stop: "STOP" payload_available: "online" payload_not_available: " offline" optimistisch: waar

Dit geeft me één ingang in mijn HA-interface met een omhoog/stop/omlaag-knop ingesteld met de actie zoals hierboven beschreven.

Bovendien heb ik twee knoppen op mijn bedbedieningspaneel gedefinieerd (Instructable / Blog Post) om het hoofdeinde omhoog en omlaag te brengen. De knoppen op het bedieningspaneel zijn gedefinieerd als MQTT-sensoren:

- platform: mqtt

state_topic: "bedside_cp1/button5" naam: "Bedside CP1 Button 5" icoon: mdi:circle

- platform: mqtt

state_topic: "bedside_cp1/button6" naam: "Bedside CP1 Button 6" icoon: mdi:circle

… en 4 automatiseringsregels voor wanneer elke knop wordt ingedrukt en losgelaten. Wanneer ingedrukt, wordt het commando omhoog of omlaag naar het bed gestuurd, afhankelijk van welke knop is geactiveerd, wanneer de knop wordt losgelaten, wordt het stopcommando verzonden:

- id: '1548308650383'

alias: MBR Bedside CP Button 5a trigger: - Entity_id: sensor.bedside_cp1_button_5 from: 'Off' platform: state to: 'On' condition: action: - data: entity_id: 'cover.master_bed_headboard' service: cover.open_cover - id: '1548308758911' alias: MBR Bedside CP Button 5b trigger: - Entity_id: sensor.bedside_cp1_button_5 from: 'On' platform: state to: 'Off' condition: action: - data: entity_id: 'cover.master_bed_headboard' service: cover.stop_cover - id: '1548308863495' alias: MBR Bedside CP Button 6a trigger: - Entity_id: sensor.bedside_cp1_button_6 from: 'Off' platform: state to: 'On' condition: action: - data: entity_id: ' cover.master_bed_headboard' service: cover.close_cover - id: '1548308911467' alias: MBR Bedside CP Button 6b trigger: - Entity_id: sensor.bedside_cp1_button_6 from: 'On' platform: state to: 'Off' condition: action: - data: entiteit_id: 'cover.master_bed_headboard' service: cover.stop_cover

Aanbevolen: