Hauptmenü

Mehrzeilige Eingaben?

Begonnen von jw9, 11 Januar 2021, 12:53:10

Vorheriges Thema - Nächstes Thema

jw9

Zitat von: Wernieman am 12 Januar 2021, 08:56:53
Soo so viel Leistung braucht FHEM auch nicht, das Du so differenziert arbeiten mußt. Ein Automatisierungs-System brint Dir eigentlich nur etwas, wenn Du die Infos Zentral sammelst ....
Nein, es geht dabei nicht um Leistung, sondern um die Verkabelung.

An den Stellen wo sich "devices" häufen (zB Garage oder Gartenhaus), da kommt ein fhem hin, der das Ganze sozusagen als "Konzentrator" an den zentralen FHEM weiterleitet.

Die Alternative wäre, die Leitungen der Sensoren quer durch das Grundstück zum "es kann nur einen geben" zu ziehen.

Zitat
Deinen Ton nehme ich an, das Du Lust auf Stänkern und nicht auf Lösungen hast.
Sorry, das war kein Stänkern, sondern der Fachbegriff für das, was Du im obigen Post umschrieben hattest. Das war sozusagen die Bestätigung meinerseits, dass Du eines der zentralen Probleme der automatisierten Konfiguration angesprochen hattest, auch wenn Du den zugehörigen Fachbegriff nicht explizit genannt hattest. Siehe auch in dieser Beschreibung den Absatz unter den Bildchen mit dem Berg und dem Gravitationsnetz:

Zitat
With CFEngine you focus on the end state (right hand figure), not where you start from. Every change, action or recipe may be repeated a infinite number of times[4] without adverse consquences, because every action will only bring you to the desired state, no matter where you start from.

[4] Some writers like to call this property idempotence.


jw9

Zitat von: Beta-User am 11 Januar 2021, 12:58:05
Da hat jemand im Wiki leider RAW-DEF-kompatible Schreibweise an der einen Stelle verwendet, nicht aber durchgängig (und das dann auch noch falsch angekündigt).
Noch mal zum Verständnis: das grüne PlusQuadrat IST doch die Stelle, wo man RAW-DEF hineinkippen soll, oder nicht?

Zitat von: betateilchen am 11 Januar 2021, 13:36:07
Ein so langer Codeblock gehört in die 99_myUtils.pm. Basta.
OK. Habe das jetzt soweit abgeändert, dass myUtils verwendet wird, und es funktioniert soweit auch.

ALLERDINGS: bei mir funktioniert der offitielle Weg, die Datei über "Edit Files" zu bearbeiten ganz und gar nicht. Beim Speichern verschwindet die Datei unwiderbringlich. Sie wird im Anschluss weder unter "Edit Files" gelistet, noch ist sie im Dateisystem aufzufinden.

Sehr ärgerlich, denn man hat sich ja viel Arbeit gemacht, diese zu erstellen.

Folglich habe ich das Beispiel auf die gute alte Art mit emacs erstellt, und es funktioniert jetzt.

Insofern würde ich erst einmal davon abesehen, das Wiki entsprechend abzuändern. Nach meiner Auffassung sollten im Wiki keine "workarounds" auftauchen, sondern nur der offiziell vorgesehene Weg. Da auf diesem offiziellen Weg die Datei (zumindest bei mir) nicht erstellt werden kann, macht es auch keinen Sinn, das dort zu beschreiben.

Hier der Inhalt der 99_Energybalance.pm
Code (99_Energybalance.pm) Auswählen

package main;

use strict;
use warnings;

sub
Energybalance_Initialize($$)
{
  my ($hash) = @_;
}

sub
Energybalance_table($)
{
my $name = @_;
my $pv   = ReadingsVal("$name","PV", "")." W";
my $pvd  = ReadingsVal("$name","PVDay", "")." kWh";
my $pvm  = ReadingsVal("$name","PVMonth", "")." kWh";
my $gfi  = ReadingsVal("$name","GridFeedIn", "")." W";
my $gfid = ReadingsVal("$name","GridFeedInDay", "")." kWh";
my $gfim = ReadingsVal("$name","GridFeedInMonth", "")." kWh";
my $eb   = ReadingsVal("$name","GridConsumption", "")." W";
my $ebd  = ReadingsVal("$name","GridConsumptionDay", "")." kWh";
my $ebm  = ReadingsVal("$name","GridConsumptionMonth", "")." kWh";
my $et   = ReadingsVal("$name","TotalConsumption", "")." W";
my $etd  = ReadingsVal("$name","TotalConsumptionDay", "")." kWh";
my $etm  = ReadingsVal("$name","TotalConsumptionMonth", "")." kWh";
my $aq   = ReadingsVal("$name","AutarkyQuote", "")." %";
my $aqd  = ReadingsVal("$name","AutarkyQuoteDay", "")." %";
my $aqm  = ReadingsVal("$name","AutarkyQuoteMonth", "")." %";
my $sq   = ReadingsVal("$name","SelfConsumptionQuote", "")." %";
my $sqd  = ReadingsVal("$name","SelfConsumptionQuoteDay", "")." %";
my $sqm  = ReadingsVal("$name","SelfConsumptionQuoteMonth", "")." %";
my $md   = ReadingsTimestamp("$name", "TotalConsumption", "");
my $cd   = ReadingsTimestamp("$name", "AutarkyQuoteDay", "");
my $cm   = ReadingsTimestamp("$name", "AutarkyQuoteMonth", "");

"<html><table border=2 bordercolor='darkgreen' cellspacing=0>
  <tr>
    <td style='padding-right:5px;padding-left:5px;font-weight:bold'></td>
    <td style='padding-right:5px;padding-left:5px;font-weight:bold'>aktueller Wert</td>
    <td style='padding-right:5px;padding-left:5px;font-weight:bold'>Heute</td>
    <td style='padding-right:5px;padding-left:5px;font-weight:bold'>dieser Monat</td>
  </tr><tr>
    <td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>PV-Erzeugung</td>
    <td style='padding-right:5px;padding-left:5px'>".$pv."</td>
    <td style='padding-right:5px;padding-left:5px'>".$pvd."</td>
    <td style='padding-right:5px;padding-left:5px'>".$pvm."</td>
  </tr><tr>
    <td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Einspeisung</td>
    <td style='padding-right:5px;padding-left:5px'>".$gfi."</td>
    <td style='padding-right:5px;padding-left:5px'>".$gfid."</td>
    <td style='padding-right:5px;padding-left:5px'>".$gfim."</td>
  </tr><tr>
    <td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Bezug</td>
    <td style='padding-right:5px;padding-left:5px'>".$eb."</td>
    <td style='padding-right:5px;padding-left:5px'>".$ebd."</td>
    <td style='padding-right:5px;padding-left:5px'>".$ebm."</td>
  </tr><tr>
    <td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Energieverbrauch</td>
    <td style='padding-right:5px;padding-left:5px'>".$et."</td>
    <td style='padding-right:5px;padding-left:5px'>".$etd."</td>
    <td style='padding-right:5px;padding-left:5px'>".$etm."</td>
  </tr><tr>
    <td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Autarkiequote</td>
    <td style='padding-right:5px;padding-left:5px'>".$aq."</td>
    <td style='padding-right:5px;padding-left:5px'>".$aqd."</td>
    <td style='padding-right:5px;padding-left:5px'>".$aqm."</td>
  </tr><tr>
    <td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Eigenverbrauchsquote</td>
    <td style='padding-right:5px;padding-left:5px'>".$sq."</td>
    <td style='padding-right:5px;padding-left:5px'>".$sqd."</td>
    <td style='padding-right:5px;padding-left:5px'>".$sqm."</td>
  </tr><tr>
    <td style='padding-right:5px;padding-left:5px;text-align:left;font-weight:bold'>Berechnung am</td>
    <td style='padding-right:5px;padding-left:5px'>".$md."</td>
    <td style='padding-right:5px;padding-left:5px'>".$cd."</td>
    <td style='padding-right:5px;padding-left:5px'>".$cm."</td>
  </tr></table>
</html>"
}

1;


Aufgerufen wird das dann über

attr Dum.Energy stateFormat { Energybalance_table ($name);; }


Und ja: wie oben vermutet, lag das Problem beim Doppel-Strichpunkt.

Beta-User

Zitat von: jw9 am 12 Januar 2021, 14:41:05
Noch mal zum Verständnis: das grüne PlusQuadrat IST doch die Stelle, wo man RAW-DEF hineinkippen soll, oder nicht?
Ja. Der Vollständigkeit wegen: Es gibt noch eine zweite Option, nämlich das (vorausgefüllte) Dialogfeld, das erscheint, wenn man in der Detailansicht eines Geräts auf "Raw definition" klickt.

Ich selbst verwurstel' das dann noch relativ häufig für attrTemplate (zum allgemeinen Gebrauch). Da ist die Syntax auch ähnlich, aber nicht ganz gleich...

Zitat
ALLERDINGS: bei mir funktioniert der offitielle Weg, die Datei über "Edit Files" zu bearbeiten ganz und gar nicht.
Im Wiki steht aber auch, dass die Namenskontention u.A. ein "Utils" vorschreibt. Kann ich bei dir nicht erkennen:
ZitatFolgende Dinge sind für eigene Programmdateien besonders zu beachten:

       
  • Der Dateiname muss mit 99_ beginnen. [...].
  • Damit die neue Datei bei Edit files angezeigt wird, muss sie mit .pm enden und den Bestandteil Utils enthalten. Also zum Beispiel 99_meineUtils.pm oder 99_myUtils_Homematic.pm.
Warum die nicht im Dateisystem zu finden sein sollte, erschließt sich mir nicht.

Was die Syntax-Problematik mit den Semicolon etc. angeht, bitte den Autor des Artikels kontaktieren; wie gesagt: nicht meine Baustelle...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors