Resttage eines Kalendermonats?

Ok, nun brauch ich noch die Funktion für die Gesamttage des aktuellen Monats. Vielen Dank ;)
 
Zuletzt bearbeitet:
Weiß nicht ob es einen schnelleren Weg gibt, aber im Prinzip lässt sich das direkt davon ableiten:
YAML:
{{ (now().replace(month = now().month + 1, day = 1) - timedelta(days = 1)).day }}

Alternativ eben den gewünschten Monat manuell eingeben.
 
Ok, danke es scheint hier noch ein Problem zu geben, ich bekomme "argument of type 'NoneType' is not iterable" als Fehler:

Code:
  - platform: template
    sensors:
        hochrechnungeur:
        friendly_name: 'Hochrechnung Monat'
        icon_template: " mdi:sun-wireless-outline"
        value_template: "{{ states('sensor.netzeinspeisung_monat')|float(0) * states('input_number.einspeisevergutung')|float(0) / (now().replace(month = now().month , day = 1) - now()).days *-1* (now().replace(month = now().month + 1, day = 1) - timedelta(days = 1)).day }}"
        unit_of_measurement: €

Bitte um Hilfe, Danke
 
Sehe da so auf Anhieb keinen Fehler bzw. läuft es problemlos, wenn ich die states()-Angaben durch Werte ersetze.

Was ist das Ergebnis, wenn Du den Inhalt von value_template (ohne die Anführungszeichen) unter Entwicklerwerkzeuge => Template einträgst?
 
Dann würde ich sagen steckt der Fehler an anderer Stelle in der Datei, wüsste auch nicht wo in dem geposteten Code etwas iterable bedingen würde.
 
Also wenn ich den Code wieder aus der Yaml nehme und neu lade gibt es keine Meldung und alles läuft ohne Probleme
 
Passt jetzt nicht wirklich zur Fehlermeldung, aber Du müsstest auf jeden Fall alles von diesem Sensor unterhalb von hochrechnungeur: um weitere zwei Leerzeichen einrücken... schau mal ob das dann besser ist.
 
Leider wurde mein Beitrag wegen verstoß gegen die Nutzungsregeln des Forums gelöscht.
- Unerwünschter link -

Deshalb hier ohne Angabe der Quelle, eine Mögliche Lösung die ich imm www gefunden habe, als Hardcopy ;)

____________________________________________________________________
Hier mal ein Template, welcher die verbleibende Tage des Monats errechnet.

Auch wenn ihr das Template in dieser Form gar nicht gebrauchen könnt, soll euch der Aufbau und die kurzen Erläuterungen das Templating ein wenig näher bringen.

Ansonsten lässt sich daraus ein schöner Countdown basteln.
Hochrechnung von irgendwelchen monatlichen Verbräuchen, oder was auch immer
:D


YAML:
{% set this = now().replace(hour=0).replace(minute=0).replace(second=0).replace(microsecond=0) %}
{% set next = this.month + 1 if this.month + 1 <= 12 else 1 %}
{% set last = this.replace(year=this.year + 1, month=1, day=1) if now().month == 12 else this.replace(month=next, day=1) %}
{{ (last.date() - this.date()).days  }}
Die erste Zeile erzeugt die Variable this -> Das heutige Datum

YAML:
{% set this = now().replace(hour=0).replace(minute=0).replace(second=0).replace(microsecond=0) %}
Dieser Variable wird der Zeitstempel "jetzt" zugewiesen, wobei die Stunden, Minuten, Sekunden und Millisekunden auf 0 gesetzt werden.


Die zweite Zeile definiert die Variable next -> Der Folgemonat
YAML:
{% set next = this.month + 1 if this.month + 1 <= 12 else 1 %}
Dabei muss sichergestellt werden, das nach Monat 12 der Monat 1 und nicht Monat 13 folgt.


Die dritte Zeile definiert die Variable last -> Den ersten des Folgemonats
YAML:
{% set last = this.replace(year=this.year + 1, month=1, day=1) if now().month == 12 else this.replace(month=next, day=1) %}
Dabei muss sichergestellt werden, wenn es sich heute um den Monat 12 handelt, dass der Jahreswechsel berücksichtigt wird.


Die letzte Zeile berechnet die Tage zwischen den ersten des Folgemonats (last) und heute (this )
YAML:
{{ (last.date() - this.date()).days }}

Wenn der heutige Tag nicht mitgezählt werden soll, kann man im Ergebnis einfach einen Tag abziehen.
YAML:
{{ (last.date() - this.date()).days - 1 }}
____________________________________________________
 
Was auch immer den großen Vorteil mit sich bringt, dass "hier, schau, die Lösung" nicht irgendwann als toter Link nutzlos für die Nutzer werden kann ;)

Hübsche Idee mit guten Erklärungen für die Resttage, den initial von Dir zitierten Punkt für "Gesamttage des aktuellen Monats" kann man mit Berücksichtigung des Jahreswechsels in einem Einzeiler abbilden:
YAML:
{{ (now().replace(month = iif( now().month == 12, 1, now().month + 1 ), day = 1) - timedelta(days = 1)).day }}

Wenn 12, setze auf 1, sonst aktueller Monat + 1, Rest wie gehabt.
 
Was auch immer den großen Vorteil mit sich bringt, dass "hier, schau, die Lösung" nicht irgendwann als toter Link nutzlos für die Nutzer werden kann ;)

Danke für den Hinweis. Werde mir in Zukunft angewöhnen hier keine links mehr einzustellen, sondern leite davon immer ein PDF aus und lade es dann hier hoch. (y)

@Muhkuh666 ist mir jetzt erst bei erneuten überfliegen aufgefallen.
Es ist keine Kritik, sondern nur ein gut gemeinter Rat.
Verwende nicht mehr die veraltete Platform template, sondern die aktuelle Integration Template.
Es ist zwar richtig, dass aktuell noch beides funktioniert. Die Wahrscheinlichkeit, dass die alte platform template irgendwann nicht mehr unterstützt wird, ist aber gegeben.
 
Zuletzt bearbeitet:
Einfach die Code-Formatierung zu nutzen wäre zu einfach? Zumal man hier schon extra einen "Code kopieren"-Button nachgepflegt hat, was den Usern auch entgegen kommen sollte 😁

Vielleicht sollte man auch einfach mal zurück zum Thema kommen und den Thread nicht zweckentfremden (so ganz im Sinne von @Muhkuh666) 😇
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Letzte Anleitungen

Statistik des Forums

Themen
6.115
Beiträge
59.425
Mitglieder
6.160
Neuestes Mitglied
gonzo12345
Zurück
Oben