Unconsolidate generating of states
This commit is contained in:
parent
2ef1e9320a
commit
259700a1b5
@ -1,27 +1,42 @@
|
|||||||
export class State {
|
export class State {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.publisher = 'front';
|
this.igniter = {
|
||||||
return this;
|
|
||||||
};
|
|
||||||
|
|
||||||
init(config) {
|
|
||||||
config.mqtt.subscriptions.forEach(sub => {
|
|
||||||
this[sub.name] = {
|
|
||||||
on: false,
|
on: false,
|
||||||
topic: sub.topic,
|
topic: 'hestia/status/igniter',
|
||||||
publisher: 'front',
|
publisher: 'front',
|
||||||
power: (communicator) => {
|
power: (communicator) => {
|
||||||
// This *should* toggle the state, asks if state is true, if it is set it false, otherwise set it true
|
// This *should* toggle the state, asks if state is true, if it is set it false, otherwise set it true
|
||||||
this[sub.name].on ? this[sub.name].on = false : this[sub.name].on = true;
|
this.igniter.on ? this.igniter.on = false : this.igniter.on = true;
|
||||||
communicator.send(sub.topic, JSON.stringify(this));
|
communicator.send('hestia/status/igniter', JSON.stringify(this));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
console.log(`${sub.name} initialized.`)
|
|
||||||
});
|
this.exhaust = {
|
||||||
console.log(`State initialized.`)
|
on: false,
|
||||||
|
topic: 'hestia/status/exhaust',
|
||||||
|
publisher: 'front',
|
||||||
|
power: (communicator) => {
|
||||||
|
// This *should* toggle the state, asks if state is true, if it is set it false, otherwise set it true
|
||||||
|
this.exhaust.on ? this.exhaust.on = false : this.exhaust.on = true;
|
||||||
|
communicator.send('hestia/status/exhaust', JSON.stringify(this));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.auger = {
|
||||||
|
on: false,
|
||||||
|
feedRate: 500,
|
||||||
|
topic: 'hestia/status/auger',
|
||||||
|
publisher: 'front',
|
||||||
|
power: (communicator) => {
|
||||||
|
// This *should* toggle the state, asks if state is true, if it is set it false, otherwise set it true
|
||||||
|
this.auger.on ? this.auger.on = false : this.auger.on = true;
|
||||||
|
communicator.send('hestia/status/auger', JSON.stringify(this));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
console.log(`State initialized.`)
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
export class Communicator {
|
export class Communicator {
|
||||||
constructor(state) {
|
constructor(state) {
|
||||||
this.publisher = state.publisher;
|
this.publisher = state.publisher;
|
||||||
@ -40,11 +55,10 @@ export class Communicator {
|
|||||||
client.on('connect', () => {
|
client.on('connect', () => {
|
||||||
console.log('Connected to MQTT broker');
|
console.log('Connected to MQTT broker');
|
||||||
// Subscribe to status topics
|
// Subscribe to status topics
|
||||||
config.mqtt.subscriptions.forEach(sub => {
|
state.forEach(element => {
|
||||||
client.subscribe(sub.topic, (err) => {
|
client.subscribe(element.topic, (err) => {
|
||||||
if (!err) {
|
if (!err) {
|
||||||
console.log(`Subscribed to ${sub.topic}`);
|
console.log(`Subscribed to ${element.topic}`);
|
||||||
state[sub.name].topic = sub.topic;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -5,21 +5,7 @@ const config = {
|
|||||||
"mqtt": {
|
"mqtt": {
|
||||||
"address": "wss://mqtt.3411.one",
|
"address": "wss://mqtt.3411.one",
|
||||||
"username": "hestia",
|
"username": "hestia",
|
||||||
"password": "hestia",
|
"password": "hestia"
|
||||||
"subscriptions": [
|
|
||||||
{
|
|
||||||
"name": "igniter",
|
|
||||||
"topic": "hestia/status/igniter"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "exhaust",
|
|
||||||
"topic": "hestia/status/exhaust"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "auger",
|
|
||||||
"topic": "hestia/status/auger"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user