Der Code ist kein Geheimnis.
Wo hast du deinen denn geparkt?
und weiß jemand wie ich die Anzeige im Homee skalieren kann? Luftdruck z.b. ist mit 0-1000 recht schlecht zu erkennen:
Das Node Element war schon mit 800-1100 eingerichtet, aber es interessiert dem homee scheinbar recht wenig
pressure = bme680->AddAttributes(new nodeAttributes(21)); // CAAttributeTypePressure: 21
pressure->setMinimumValue(800);
pressure->setMaximumValue(1100);
pressure->setEditable(0);
pressure->setUnit("mmbar");
Wenn du die Werte im Nachgang änderst und das Device nicht neu angelernt wird, dann bleiben die alten Werte im homee stehen.
Einfach Bescheid sagen und ich stelle dir den zur Verfügung.
Geparkt ist der auf meinem Rechner aber ich kann dir den Code auf github einstellen.
ich habe die vhih geräte aus dem homee gelöscht und bereits öfter mal neu hinzugefügt. Das skalierungsproblem bleibt aber bestehen. Der Luftdruck wird immer mit 0-1000 angezeigt.
ich glaube ich weiß nun was du meinst… wenn es mal einen gemessenen wert von 0 gibt, merkt der homee sich das und skaliert dann immer von 0-1000 auch wenn in der aktuellen ansicht z.B. Tag niemals ein 0 wert dabei war?
wenn das so wäre, wäre dies schade, da öfter schon mal 0 in der anzeige steht wenn der snsor mal offline war oder so…
ja github wäre toll!
vielleicht machst du ja auch etwas entscheidendes anders als dani und meine skalierungsprobleme lassen sich dadurch bereits lösen
Hab es online gestellt musst nur n meinen github Profil schauen.
darf ich blöd fragen was die *.bin files sind? die sind auch sonst überall in deinen anderen repos wie ich sehe.
jetzt wo ich auf platformio umgestiegen bin, sehe ich das du die Ardunino IDE nutzt ^^.
habe nun erstmal nichts direktes zu der Skalierungsthematik gefunden, du machst es quasi genauso wie dani.
das hier ist genau mein problem:
Die BIN Daten sind OTA Dateien für ein Update.
Hallo liebe Homee Spezialisten, ich habe eine frage bezüglich meines Esp 32. ich habe zwei sensoren DS18b20 einmal am vorlauf und rücklauf der Heizung. Kann ich diese Werte an Homee senden? Das ich mir sie in homee anschaue? Würde mich sehr auf eure hilfe freuen
Ja natürlich kannst du das machen.
Du kannst auf dem ESP einen virtuellen homee laufen lassen und diesen dann einbinden in den homee.
Habe damit einige ESP ausgestattet und es klappt problemlos.
Vielen Dank für deine schnelle Antwort, Kannst du mir das bitte ein bisschen erklären Ich möchte nur Die beiden Werte auf Homie sehen mehr nicht
@danil @Micha
Ich bin gerade dabei meine Wetterstation über dieses Feature einzubinden.
Vielen Dank nochmals an Dich @danil für die tolle Arbeit
Sketch ist soweit, dass das vhih Device im homee richtig abgebildet wird.
Meine Frage ist jetzt:
Wenn ich z.B. 2x das Attribut Temperatur z.B. für außen und innen verarbeiten möchte, werden mir 2 Instanzen angelegt: Temperatur und Temperatur 1.
Besteht die Möglichkeit diesen Angezeigten Namen zu ersetzen/ändern?
diese beiden Varianten habe ich erfolglos versucht, bekomme dann bei beiden Fehler beim Kompilieren.
temp1 = weatherNode->AddAttributes(new nodeAttributes(5)"Außentemperatur");
temp1->setUnit("°C");
temp1->setMinimumValue(-30);
temp1->setMaximumValue(60);
temp1 = weatherNode->AddAttributes(new nodeAttributes(5));
temp1->setUnit("°C");
temp1->setMinimumValue(-30);
temp1->setMaximumValue(60);
temp1->setName("Außentemperatur");
In der lib ist diese Funktion nicht angelegt.
Daher kannst du die Namen aktuell nicht so setzen.
Hierzu muss die Datei nodeAttributes.hpp sowie cpp eine setter Funktion bekommen damit du das machen kannst.
@danil kann diese bestimmt einbauen oder ich mach das und @danil muss die Änderung dann übernehmen.
Alternativ kann ich auch einen fork bei mir mit der Änderung ablegen.
Oder ich schreibe dir was du ändern musst.
Das wäre für den Anfang echt super, wenn Du das machen könntest
Was da der best practice ist kann ich nicht sagen
Meiner Meinung nach wäre eine Lib. zu dem Thema besser als zwei aber das ist halt auch nur meine Meinung
an der Lib. von @danil musste ich eh auch das hier ändern:
WebAuthentication.cpp
von
mbedtls_md5_starts_ret(&_ctx);
mbedtls_md5_update_ret(&_ctx, data, len);
mbedtls_md5_finish_ret(&_ctx, _buf);
zu
mbedtls_md5_starts(&_ctx);
mbedtls_md5_update(&_ctx, data, len);
mbedtls_md5_finish(&_ctx, _buf);
und bei
AsyncWebSocket.cpp
von
mbedtls_sha1_starts_ret(&ctx);
mbedtls_sha1_update_ret(&ctx, (const unsigned char*)key.c_str(), key.length());
mbedtls_sha1_finish_ret(&ctx, hash);
zu
mbedtls_sha1_starts(&ctx);
mbedtls_sha1_update(&ctx, (const unsigned char*)key.c_str(), key.length());
mbedtls_sha1_finish(&ctx, hash);
Diese Änderungen haben sich durch ein Update eingeschlichen von Seiten Arduino und der crypto Lib.
Was für ein ESP benutzt du ?
Werde ich heute aber nicht mehr schaffen einzustellen.
Esp32 S3 Zero
Kein Stress , ich komm vmtl. vor Donnerstag nichtmehr an den Rechner.
Hättest du einen älteren esp dann entfallen diese Anpassungen.
Der S3 hat 2 CPU und irgendwie passt da was nicht.
Du meinst jetzt das in, AsyncWebSocket.cpp und WebAuthentication.cpp
oder wegen der Namensgebung für die Attribute
Ja genau du sagst es . Die Änderungen an derLib meine ich.
Ich hatte das selbe Problem und habe es dadurch gelöst, indem ich die Eigenschaft „name“ in den Public-Bereich der Klasse verschoben habe. Nun kann ich den Namen setzen, bevor ich das neue Attribut dem node hinzufüge. Ob’s so korrekt ist weiß ich nicht aber es funktioniert
Bei Gelegenheit werde ich meinen Forq auch bei github hochladen. … aber ich hätte auch nichts gegen ein offizielles Update
Aktuell bin ich dabei immer größere werdende Projekte auf dem ESP32 anzugehen und setze dabei auch auf die virtualHomee.hpp von GitHub - DanielKnoop/homee-api-esp32: homee-api-esp32 ist eine Library, um ESP32 und ESP8266 Microcontroller über die "vhih"-Funktion direkt mit der Smarthome-Zentrale homee zu verbinden..
Entstanden sind bereits
- Heizungsdatenlogger. Hier werden diverse Temperaturen der Heizung aufgezeichnet
- Eine Fußbodenheizungssteuerung mit Abfrage eines Raumthermometers via Bluetooth und die Ansteuerung einer Umwälzpumpe
- (in Arbeit) eine Steuerzentrage für meine Garage mit Taupunktlüftung, Wasserstandsüberwachtung einer Zisterne, Garagentorüberwachung und Bodenfeuchtemessung.
Leider habe ich mit der homee-Anbindung ein Problem und vielleicht kann mir hier ja jemand auf die Sprünge helfen.
Wenn ich ein neues Gerät, also einen neuen Node anlege, muss ich mich für ein bestimmtes Profil entscheiden. Je nachdem für was ich mich da entscheide, verhalten sie die hinzugefügten Attribute später in der homee-App anders: werden angezeigt (oder nicht); können über die App editiert werden oder sind reine Anzeigen bzw. nur über Gerät-Bearbeiten erreichbar, werden unter „Gerätestatus“ oder unter „Messwerte“ angezeigt, etc. pp.
Ich habe es auch schon geschafft über eine falsche Anzahl / Typ von Attributen meinen Homee so abzuschießen, dass ich ein Backup einspielen musste.
Was ich trotz langer Suche nicht geschafft habe: einen simplen ein/aus-Schalter oder (noch besser) einen Taster und zusätzliche Messwerte darstellen zu können. Im Besten Fall habe ich einen Schieberegler angezeigt bekommen.
Nun meine Frage an die Experten hier:
a) Gibt es irgendwo eine Übersicht, welche Profile welche Attribute voraussetzen und wie das Gerät dann in der App dargestellt wird?
b) gibt es vielleicht so eine Art „neutralen node“, dem man einfach beliebige Attribute mit geben kann und die dann auch „einfach funktionieren“ ?
c) es gibt in der noteattributs.hpp noch ein paar weitere Methoden, deren Wirken sich mir nicht erschließt - z.B. „setData(String _data)“ oder „setState“ / „getState“. Ich hatte damit ein wenig gespielt aber passiert ist nichts erkennbares.
Gibt es irgendwo eine Doku für die einzelnen Methoden?
So sieht aktuell die Oberfläche für meine Taupunktlüftung aus. Für die Modus-Umschaltung wollte ich eigentlich einen Taster und keinen Schieberegler. Temperaturen laden unter Messwerte aber Taupunkt im Gerätestatus. Alle anderen Kombinationsversuche gingen gar nicht oder waren zumindest nicht besser. Außerdem würde ich dem node gerne das Ventilatoricon zuordnen - leider ist das für dieses Profil nicht verfügbar.
Auszug aus meinem Code:
//homee definitionen
#define CAAttributeTypeButtonState 40
#define CAAttributeTypeDewPoint 235
#define CAAttributeTypeTemperature 5
#define CAAttributeTypeRelativeHumidity 7
#define CAAttributeTypeTargetTemperature 6
#define CANodeProfileRoomThermostatWithHumiditySensor 3004
#define HMID_MODE 1
#define HMID_FAN_STATE 2
#define HMID_DEWPT_DIFF 3
#define HMID_IN_TEMP 4
#define HMID_OUT_TEMP 5
#define HMID_IN_HUM 6
#define HMID_OUT_HUM 7
#define HMID_IN_DEWPT 8
#define HMID_OUT_DEWPT 9
void homee_setup()
{
node *n1;
nodeAttributes *na;
//Neues Gerät
n1 = new node(vhih_ID, CANodeProfileRoomThermostatWithHumiditySensor, "Taupunktlüftung"); //2009 - CANodeProfileWindowHandleWithButtonsAndTemperatureAndHumiditySensor
//FAN-Status (an / aus)
na = new nodeAttributes(CAAttributeTypeTargetTemperature, HMID_MODE);
na->name = "Betriebsmodus";
na->setUnit("");
na->setMinimumValue(0);
na->setMaximumValue(1);
na->setCurrentValue(0);
na->setEditable(true);
na->setCallback(callBack_homeeReceiveValue);
n1->AddAttributes(na); //set attribute to node
//FAN-Status (an / aus)
na = new nodeAttributes(CAAttributeTypeButtonState, HMID_FAN_STATE);
na->name = "Lüfterstatus";
na->setUnit("");
na->setMinimumValue(0);
na->setMaximumValue(1);
na->setCurrentValue(0);
na->setCallback(nullptr);
na->setEditable(false);
n1->AddAttributes(na); //set attribute to node
na = new nodeAttributes(CAAttributeTypeDewPoint, HMID_DEWPT_DIFF);
na->name = "Taupunktdifferenz";
na->setUnit("K");
na->setMinimumValue(-100);
na->setMaximumValue(100);
na->setCurrentValue(0);
na->setCallback(nullptr);
na->setEditable(false);
n1->AddAttributes(na); //set attribute to node
na = new nodeAttributes(CAAttributeTypeTemperature, HMID_IN_TEMP); //temperatur
na->name = "Temperatur innen";
na->setUnit("°C");
na->setMinimumValue(0);
na->setMaximumValue(1);
na->setCurrentValue(0);
na->setCallback(nullptr);
na->setEditable(false);
n1->AddAttributes(na); //set attribute to node
na = new nodeAttributes(CAAttributeTypeTemperature, HMID_OUT_TEMP);
na->name = "Temperatur außen";
na->setUnit("°C");
na->setMinimumValue(0);
na->setMaximumValue(1);
na->setCurrentValue(0);
na->setCallback(nullptr);
na->setEditable(false);
n1->AddAttributes(na); //set attribute to node
na = new nodeAttributes(CAAttributeTypeRelativeHumidity, HMID_IN_HUM);
na->name = "Luftfeuchte innen";
na->setUnit("%");
na->setMinimumValue(0);
na->setMaximumValue(1);
na->setCurrentValue(0);
na->setCallback(nullptr);
na->setEditable(false);
n1->AddAttributes(na); //set attribute to node
na = new nodeAttributes(CAAttributeTypeRelativeHumidity, HMID_OUT_HUM);
na->name = "Luftfeuchte außen";
na->setUnit("%");
na->setMinimumValue(0);
na->setMaximumValue(1);
na->setCurrentValue(0);
na->setCallback(nullptr);
na->setEditable(false);
n1->AddAttributes(na); //set attribute to node
na = new nodeAttributes(CAAttributeTypeDewPoint, HMID_IN_DEWPT);
na->name = "Taupunkt innen";
na->setUnit("°C");
na->setMinimumValue(0);
na->setMaximumValue(1);
na->setCurrentValue(0);
na->setCallback(nullptr);
na->setEditable(false);
n1->AddAttributes(na); //set attribute to node
na = new nodeAttributes(CAAttributeTypeDewPoint, HMID_OUT_DEWPT);
na->name = "Taupunkt außen";
na->setUnit("°C");
na->setMinimumValue(0);
na->setMaximumValue(1);
na->setCurrentValue(0);
na->setCallback(nullptr);
na->setEditable(false);
n1->AddAttributes(na); //set attribute to node
//Gerät hinzufügen
virtHomee->addNode(n1);