[Modul] MiFlora2Tasmota

Im Moment ist es nicht möglich, keine Pflanze auszuwählen, bzw. dann komm der Fehler.

Grüße,
Kai

okay das war der Fehler.
Ich wollte die Sensoren erstmal alle einrichten, damit meine Frau sie dann flexibel verteilen kann.
hab jetzt pro Forma überall eine Orchidee (wie viele Typen es hierzu gibt…) eingetragen und danach hat es problemlos funktioniert.
Danke für den Hinweis!

Hallo @KaiS ,

wäre es möglich, das Modul dahingehend zu erweitern, dass der Pflanzenname, den man im Konfigurator auswählt in eine Variable geschrieben wird?
Das würde es vereinfachen, den richtigen Sensor in der Liste wieder zu finden:

Gruß

Burkhard

Ich habe deinen Beitrag mal in den richtigen Thread verschoben.
Klar, können wir noch eine Variable anlegen, oder die Instanz umbenennen, wenn eine Pflanze ausgewählt wird. Was fändest du besser?

Grüße,
Kai

Für mich wäre eine Variable besser, da ich den „deutschen“ Namen als Instanz nutze und den lateinischen Namen nur für Plantbook raus suche.
Richte mich da aber nach der Mehrheit.

Wäre ich auch dafür.

+1

Bin auch für eine Variable

Wäre es nicht besser, beim Anlegen der Geräteinstanz zunächst den lateinischen Namen aus dem Konfigurator als Objektname zu übernehmen?

Der Name der Geräteinstanz kann dann ja, wie sonst auch üblich, beliebig geändert werden.

Der lateinische Name ist ja als Property „Plant Name“ weiterhin vorhanden. Ich sehe noch keinen Vorteil darin, das Property „Plant Name“ zusätzlich als Variable anzulegen. Ganz im Gegenteil, wenn sich einer der Inhalte ändert, wer gewinnt dann?

Da ich meine visuellen Bedienungen alle mit IPSStudio erstelle, bräuchte ich es als Variable, um es in die View als VarLabel einzufügen. Würde es jedenfalls vereinfachen

Gruß

Burkhard

Das finde ich auch besser, dann muss man den Namen nicht doppelt pflegen.

Du bräuchtest doch nur den Instanznamen „Flora641b01“ in „Beerenbeet“ ändern. Das wäre das übliche Vorgehen bei Instanzen. Oder übersehe ich da etwas?

Im IPSView kann man den Instanznamen nicht verwenden.

Ich werde den Namen mal noch zusätzlich in eine Variable schreiben.

Grüße,
Kai

Wenn du das Modul weiter anpasst, würde ich mich auch über die Update-Zeit freuen, da dann ein besseres Monitoring stattfinden kann.

„Time“:„2021-04-10T12:37:25“

Vielleicht in einem „sinnvolleren“ Format in einer Variablen.

Mir fehlte gerade bei meiner Umstellung auch genau diese Variable :slight_smile:

Ich habe mir als Übergangslösung mit einem temporären Skript beholfen. Vielleicht möchtest du es auch nutzen.

<?php

// created by bumaas

// temporäre Lösung um eine "Letzte Meldung" Variable bei den Miflora Instanzen anzulegen und zu setzen

declare(strict_types=1);

foreach (IPS_GetInstanceListByModuleID('{1ABD9482-C0FC-A2D1-BB98-C5509FB8321C}') as $id){

   CreateVariableByIdent($id, 'LastMessageTS', 'Letzte Meldung', VARIABLETYPE_INTEGER, '~UnixTimestamp');

   

   if ($rssID = IPS_GetObjectIDByIdent('RSSI', $id)){

      createEvent($rssID); 

   }

}

if ($_IPS['SENDER'] === 'Variable'){

   $id = IPS_GetObjectIDByIdent('LastMessageTS', IPS_GetParent($_IPS['VARIABLE']));

   SetValueInteger($id, time());

}

return;

//------------------------------------------------------------------------------

function createEvent(int $varID): void

{

   global $_IPS;

   if (@IPS_GetEventIDByName('Event ' . $varID, $_IPS['SELF']) === false) {

       $ereignis = IPS_CreateEvent(0);

       IPS_SetEventTrigger($ereignis, EVENTTRIGGERTYPE_ONUPDATE, $varID);

       IPS_SetEventTriggerSubsequentExecution($ereignis, true);

       IPS_SetParent($ereignis, $_IPS['SELF']);

       IPS_SetName($ereignis, 'Event ' . $varID);

       IPS_SetEventActive($ereignis, true);

   }

}

//------------------------------------------------------------------------------

function CreateVariableByIdent(int $ParentID, string $ident, string $name, int $type, string $profile = ''): int

{

   global $_IPS;

   $vid = @IPS_GetObjectIDByIdent($ident, $ParentID);

   if ($vid === false) {

       $vid = IPS_CreateVariable($type);

       IPS_SetParent($vid, $ParentID);

       IPS_SetName($vid, $name);

       IPS_SetInfo($vid, 'This variable was created by script #' . $_IPS['SELF']);

       IPS_SetIdent($vid, $ident);

       if ($profile !== '') {

           IPS_SetVariableCustomProfile($vid, $profile);

       }

   }

   return $vid;

}

Burkhard

Hallo Kai,

erst mal danke für dein „weiteres“ tolles Modul für die MiFloras.

Mal kurz eine Frage dazu:
So wie ich es sehe, datest du alle Variablen immer ab (Tasmota Modul > IPS-Variablen), auch wenn der Sensor noch gar nicht die passenden Daten geliefert hat, oder dies im Konfigurator vorliegen.
Z.B. die Temperatur, wenn diese noch gar nicht im ESP vorliegt.
Das macht hier dann einen falschen Anschein für die wirklichen Werte.
Hat das einen speziellen Grund warum das so ist oder kann man das konfigurieren?
Ich hätte so keine Möglichkeit einen fehlenden Sensorwert zu bemerken, oder interpretiere ich da noch etwas falsch?

Danke u. viele Grüße,
Doc

Du könntest auf Änderung der Variable prüfen. :slight_smile:

Grüße,
Kai

Es gibt eine neue Beta Version, dort ist der Code mit den Pflegehinweisen von @bumaas vorhanden.
Vielen Dank an @bumaas, @Burki24 und @ralf.

Grüße,
Kai

Dann müsste man für jede Variable wieder scripten.
Wäre es nicht besser nur die Variablen zu beschreiben, die auch wirklich Werte liefern?

Die Situation, dass es einzelne Werte nicht korrekt gibt, habe ich nur einmal am Anfang bei neuen MiFloras. Danach kommen gewöhnlich alle Werte, außer Battery.

Ich habe eher den Wunsch, die „Time“ aus dem Telegramm zu übernehmen, damit man darüber sehen kann, wenn keine Daten mehr geliefert werden.