Nachdem hier schon so viele tolle vhih-Projekte und auch ESP32-Projekte wie der M5Stack etc. vorgestellt worden sind, möchte ich euch auch mein aktuelles Projekt vorstellen.
Das Projekt ist noch in einem sehr frühen Stadium und kaum getestet, allerdings bin ich schon auf euren Input gespannt und auf die Ideen, was damit anzufangen ist.
Auch würden mich natürlich Bedenken bzw. „natürliche“ Grenzen interessieren.
Wie viele hih kann der homee? Ich weiß es nicht. Wie viele Nodes packt der ESP32? Weiß ich auch nicht.
Die Readme ist noch bei 0, die werde ich aber erweitern.
Aber jetzt erst mal: Worum geht es überhaupt.
Ich habe, ausgehend von den Projekten von @stfnhmplr (vhih im node-red) und @Micha (M5Stack) und natürlich allen daran Beteiligten, die Idee gehabt, Sensoren mit dem ESP32 zu entwickeln und natürlich ohne node-red oder sonstige Brücken in den homee zu bringen.
Dies ist mir zumindest in einem „Proof of Concept“ gelungen. Aktuell ist es noch keine einfach zu verwendende Library, aber ich bin in der Lage, zufällige Temperaturwerte und Schalterstellungen an den homee zu übertragen und zu empfangen.
Ich habe das Projekt mit PlatformIO in VS Code entwickelt. Dies wird wohl auch benötigt, wenn man meinen Versuch „nachspielen“ möchte.
Im Code müssen die Nodes und die Attribute initialisiert werden:
node* n1 = new node(10, 3001, "Luftsensor"); //CANodeProfileTemperatureAndHumiditySensor
na1 = n1->AddAttributes(new nodeAttributes(5)); //CAAttributeTypeTemperature
na2 = n1->AddAttributes(new nodeAttributes(7)); //CAAttributeTypeRelativeHumidity
na1->setUnit("%C2%B0C");
na1->setMinimumValue(-20);
na1->setMaximumValue(60);
na2->setUnit("%25");
node* n2 = new node(20, 10, "Schalter");
schalterAttribute = n2->AddAttributes(new nodeAttributes(1));
schalterAttribute->setEditable(1);
schalterAttribute->setMinimumValue(0);
schalterAttribute->setMaximumValue(1);
schalterAttribute->setCallback([](nodeAttributes* a)
{
a->setCurrentValue(a->getTargetValue());
vhih.updateAttribute(a);
});
vhih.addNode(n1);
vhih.addNode(n2);
Wie man sieht, wird bei dem Schalter ein Callback registriert. Dieses wird gerufen, wenn der homee einen Wert an den ESP32 sendet. Anders herum muss updateAttribute
gerufen werden, wenn ein Sensor am ESP32 einen Wert empfängt, welcher an den homee gesendet werden soll.
Für die IDs muss man sich an den enums von sthnhmplr https://github.com/stfnhmplr/homee-api/blob/master/lib/enums.js orientieren.
Ich habe das Projekt auf GitHub hochgeladen, falls es sich jemand anschauen möchte.