Beiträge von Pilot188

    Aber gerne doch

    Wie man sieht, habe ich den Bereich vor dem Komma als Main gelassen und für die Nachkommastellen "Sub" definiert
    Damit werden dann zwei getrennte Werte übermittelt.

    Nachtrag:
    Das Gehäuse werde ich noch einmal neu konstruieren, da ich doch mit dem Dremel die ein oder andere Anpassung vorgenommen habe und oben die 25mm Abstand dazu gepackt habe.
    Aber da muss ich mich erst in Freecad o.ä. reinfuchsen
    Jetzt bleibt das erst einmal so. Bin froh das alles passt

    Und dann noch die Bilder des von mir arg malträtierten 3D-Drucks von Don (möge er mir verzeihen :) )
    Mit 25mm Aufsatz

    Linke Seite angepasst


    Rechte Seite angepasst

    Ich habe auf die externen LED verzichtet und stattdessen den Abschnitt unter der LED verdunkelt.

    Das Bild ist jetzt auch gut sichtbar und ich werde mit Werten beliefert.

    Kommen wir zur Konfiguration, wie ich die Daten verarbeite

    Openhab:
    Als MQTT Broker kommt Mosquito zum Einsatz.
    Die Channel werden dann wie folgt eingestellt
    Name wie bei jedem Channel frei wählbar
    unter MQTT State topic muss dann folgendes eingetragen werden
    gaszaehler/main/timestamp
    gaszaehler/main/value
    gaszaehler/main/raw
    gaszaehler/main/error
    gaszaehler/main/changeabsolut


    Für die Nachkommastellen
    gaszaehler/sub/timestamp
    gaszaehler/sub/value
    gaszaehler/sub/raw
    gaszaehler/sub/error
    gaszaehler/sub/changeabsolut

    Da ich mir den Verbrauch bei Strom und eben jetzt bei Gas immer monatlich ausrechne habe ich folgende Items angelegt
    Zuerst die Item für den Preis, hier wurden folgende angelegt. Ich erwähne die Itemnamen deshalb, weil sonst die nachfolgende Rule nicht klar ist.

    Gasbezugskosten // Hier packt ihre den Nettopreis für die kWh Gas rein.
    GasGrundgebuehrTag // Hier packt ihr die Grundgebühr rein, bitte den Jahrespreis / 365

    Gas_Zaehlerfaktor // Der ist aus der letzten Rechnung ersichtlich

    Gas_Brennwert // Ebenfalls aus der letzten Rechnung ersichtlich

    Gasstand_letzteLesung // Der Zählerstand bei der letzten Abrechnung

    Gastariftage // Hier schreibt die Regel die Anzahl Tage seit der letzten Abrechnung rein


    Kommen wir zu den Items zur Erfassung der Verbrauchswerte, sofern nicht anders angegeben sind das alles Number Item

    Spoiler anzeigen


    GasVerbrauchJahr
    GasKostenJahr
    GasKostenJahrForecast
    GasVerbrauchJahrForecast
    GasDayAverageMeter
    GasDayAverage
    GasDayAverageCost

    Für die einzelnen Monate:
    Gas_Stand_Januar
    Gas_VerbrauchJanuar
    Gas_kostenJanuar
    Gas_TagesverbrauchJanuar


    //für die restlichen Monate entsprechend fortsetzen

    Dazu folgende Regel

    Spoiler anzeigen

    rule "aktueller GasStand"
    when
    Time cron "0 0/5 * 1/1 * ? *"
    then
    //Variablen definieren und Werte setzen
    var regel_startzeit = now()
    val Number MonatsVal = regel_startzeit.getMonthValue()
    val Number Tageszahl = now.getDayOfMonth()
    var startday = LocalDate.parse("2021-10-06").atStartOfDay() // Gasstand_letzteLesung.state
    var long dif_days = Duration.between(startday, now).toDays()
    var day = LocalDate.parse("2021-10-06").atStartOfDay()

    //Uebername aus dem esp32
    if (Gasometer_GasometerMainChangeAbsolut.state >= 0) {
    Gasstand_Aktuell.sendCommand((Gasometer_GasometerValue.state as Number) + (GasometerNachkomma.state as Number) / 1000)
    }

    //Allgemeine Daten schreiben
    Gastariftage.sendCommand(Duration.between(day, now).toDays()) //Duration.between(day,ZonedDateTime.now()).toDays()
    GasVerbrauchJahr.sendCommand(((Gasstand_Aktuell.state as Number) - Gasstand_letzteLesung.state) * Gas_Zaehlerfaktor.state as Number * Gas_Brennwert.state as Number ) //Verbrauch ab Zählerstand 6.10.2021
    GasKostenJahr.sendCommand(((GasVerbrauchJahr.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Gastariftage.state as Number) * (GasGrundgebuehrTag.state as Number)))
    GasKostenJahrForecast.sendCommand((GasKostenJahr.state as Number) / (Gastariftage.state as Number) * 365)
    GasVerbrauchJahrForecast.sendCommand((GasVerbrauchJahr.state as Number) / (Gastariftage.state as Number) * 365)
    GasDayAverageMeter.sendCommand(((Gasstand_Aktuell.state as Number) - (Gasstand_letzteLesung.state)) / (dif_days))
    GasDayAverage.sendCommand((GasVerbrauchJahr.state as Number) / (dif_days))
    GasDayAverageCost.sendCommand((GasKostenJahr.state as Number) / (dif_days))

    //Monatswerte berechnen und setzen
    switch (MonatsVal) {
    case 1 : {
    Gas_Stand_Januar.sendCommand((Gasstand_Aktuell.state as Number))
    Gas_VerbrauchJanuar.sendCommand(((Gas_Stand_Januar.state as Number) - (Gas_Stand_Dezember.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
    Gas_kostenJanuar.sendCommand(((Gas_VerbrauchJanuar.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
    Gas_TagesverbrauchJanuar.sendCommand((Gas_VerbrauchJanuar.state as Number) / Tageszahl)
    }

    case 2 : {
    Gas_Stand_Februar.sendCommand((Gasstand_Aktuell.state as Number))
    Gas_VerbrauchFebruar.sendCommand(((Gas_Stand_Februar.state as Number) - (Gas_Stand_Januar.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
    Gas_kostenFebruar.sendCommand(((Gas_VerbrauchFebruar.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
    Gas_TagesverbrauchFebruar.sendCommand((Gas_VerbrauchFebruar.state as Number) / Tageszahl)
    }


    case 3 : {
    Gas_Stand_Maerz.sendCommand((Gasstand_Aktuell.state as Number))
    Gas_VerbrauchMaerz.sendCommand(((Gas_Stand_Maerz.state as Number) - (Gas_Stand_Februar.state as Number))* (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
    Gas_kostenMaerz.sendCommand(((Gas_VerbrauchMaerz.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
    Gas_TagesverbrauchMaerz.sendCommand((Gas_VerbrauchMaerz.state as Number) / Tageszahl)
    }


    case 4 : {
    Gas_Stand_April.sendCommand((Gasstand_Aktuell.state as Number))
    Gas_VerbrauchArpil.sendCommand(((Gas_Stand_April.state as Number) - (Gas_Stand_Maerz.state as Number))* (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
    Gas_kostenApril.sendCommand(((Gas_VerbrauchApril.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
    Gas_TagesverbrauchApril.sendCommand((Gas_VerbrauchApril.state as Number) / Tageszahl)
    }


    case 5 : {
    Gas_Stand_Mai.sendCommand((Gasstand_Aktuell.state as Number))
    Gas_VerbrauchMai.sendCommand(((Gas_Stand_Mai.state as Number) - (Gas_Stand_April.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
    Gas_kostenMai.sendCommand(((Gas_VerbrauchMai.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
    Gas_TagesverbrauchMai.sendCommand((Gas_VerbrauchMai.state as Number) / Tageszahl)
    }


    case 6 : {
    Gas_Stand_Juni.sendCommand((Gasstand_Aktuell.state as Number))
    Gas_VerbrauchJuni.sendCommand(((Gas_Stand_Juni.state as Number) - (Gas_Stand_Mai.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
    Gas_kostenJuni.sendCommand(((Gas_VerbrauchJuni.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
    Gas_TagesverbrauchJuni.sendCommand((Gas_VerbrauchJuni.state as Number) / Tageszahl)
    }


    case 7 : {
    //logInfo("GASstand", MonatsVal.toString())
    Gas_Stand_Juli.sendCommand((Gasstand_Aktuell.state as Number))
    Gas_VerbrauchJuli.sendCommand(((Gas_Stand_Juli.state as Number) - (Gas_Stand_Juni.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
    Gas_kostenJuli.sendCommand(((Gas_VerbrauchJuli.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
    Gas_TagesverbrauchJuli.sendCommand((Gas_VerbrauchJuli.state as Number) / Tageszahl)
    }


    case 8 : {
    Gas_Stand_August.sendCommand((Gasstand_Aktuell.state as Number))
    Gas_VerbrauchAugust.sendCommand(((Gas_Stand_August.state as Number) - (Gas_Stand_Juli.state as Number))* (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
    Gas_kostenAugust.sendCommand(((Gas_VerbrauchAugust.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
    Gas_TagesverbrauchAugust.sendCommand((Gas_VerbrauchAugust.state as Number) / Tageszahl)
    }


    case 9 : {
    Gas_Stand_September.sendCommand((Gasstand_Aktuell.state as Number))
    Gas_VerbrauchSeptember.sendCommand(((Gas_Stand_September.state as Number) - (Gas_Stand_August.state as Number))* (Gas_Zaehlerfaktor.state as Number) *(Gas_Brennwert.state as Number))
    Gas_kostenSeptember.sendCommand(((Gas_VerbrauchSeptember.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
    Gas_TagesverbrauchAugust.sendCommand((Gas_VerbrauchAugust.state as Number) / Tageszahl)
    }


    case 10 : {
    Gas_Stand_Oktober.sendCommand((Gasstand_Aktuell.state as Number))
    Gas_VerbrauchOktober.sendCommand(((Gas_Stand_Oktober.state as Number) - (Gas_Stand_September.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
    Gas_kostenOktober.sendCommand(((Gas_VerbrauchOktober.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
    Gas_TagesverbrauchOktober.sendCommand((Gas_VerbrauchOktober.state as Number) / Tageszahl)
    }


    case 11 : {
    Gas_Stand_November.sendCommand((Gasstand_Aktuell.state as Number))
    Gas_VerbrauchNovember.sendCommand(((Gas_Stand_November.state as Number) - (Gas_Stand_Oktober.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
    Gas_kostenNovember.sendCommand(((Gas_VerbrauchFebruar.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
    Gas_TagesverbrauchNovember.sendCommand((Gas_VerbrauchNovember.state as Number) / Tageszahl)
    }


    case 12 : {
    Gas_Stand_Dezember.sendCommand((Gasstand_Aktuell.state as Number))
    Gas_VerbrauchDezember.sendCommand(((Gas_Stand_Dezember.state as Number) - (Gas_Stand_November.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
    Gas_kostenDezember.sendCommand(((Gas_VerbrauchDezember.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
    Gas_TagesverbrauchDezember.sendCommand((Gas_VerbrauchDezember.state as Number) / Tageszahl)
    }
    }
    end

    Für die Anzeige habe ich dann normale Label genutzt

    Beispiel Yaml

    Spoiler anzeigen


    component: oh-label-card
    config:
    fontSize: 1.3em
    footer: '="Vorschau Jahr: " + items.GasKostenJahrForecast.displayState'
    item: GasKostenJahr
    title: Jahreswerte (ab 06.10.21)

    Da ich noch auf die LEDs zum besseren ausleuchten warte, habe ich schon einmal mit der Einrichtung angefangen.

    Die Daten müssen ja in Openhab, ich selbst nutze die aktuelle Version OH3

    In der Config des ESP32 habe ich für MQTT folgendes eingetragen
    Main Topic: Gaszaehler
    ClientID: gasometer

    Damit die Werte vor und nach dem Komma separat übermittelt werden, habe ich die Stellen nach dem Komma (5 Digits) in der Config eingetragen und für die Nachkommastellen 2 Digits als Sub definiert

    Openhab:
    Als MQTT Broker kommt Mosquito zum Einsatz.
    Die Channel werden dann wie folgt eingestellt
    Name wie bei jedem Channel frei wählbar
    unter MQTT State topic muss dann folgendes eingetragen werden
    Gaszaehler/main/timestamp
    Gaszaehler/main/value
    Gaszaehler/main/raw
    Gaszaehler/main/error

    Für die Nachkommastellen
    Gaszaehler/sub/timestamp
    Gaszaehler/sub/value
    Gaszaehler/sub/raw
    Gaszaehler/sub/error

    Zwischenzeitlich habe ich dank des neu erworbenen Anycubic i3 Mega S Druckers ein kleines Kästchen gedruckt mit dem ich den Abstand der Linse vom Spiegel vergrößert habe.

    Der Abstand wurde um 25mm vergrößert

    Ich werde das noch verfeinern, sobald ich die richtige Ausleuchtung (nach Lieferung der LEDs) gefunden habe.

    Aktuell werden die Zahlen noch nicht richtig erkannt durch die ungleichmäßige Ausleuchtung

    So, nicht das gedacht wird das es nicht weiter geht.
    Spiegel habe ich (Rossmann 99 Cent)
    Aber ich musste den Ausschnitt etwas versetzen, da ich sonst die erste Zahl auf dem Zähler nicht auf dem Bild bekommen hätte.
    Aber, egal wie ich die LED einstelle oder den Blickwinkel der Kamera anpasse, die LED reflektiert so stark das damit 2 Zahlen nich gelesen werden können.
    Ich werde auf den Anschluss einer externen LED gehen. Die LED und den erwähnten Kondensator muss ich mir leider besorgen. Habe ich so nicht in meinem Nähkästchen liegen.

    Danach geht es weiter

    Hier das Bild mit der Reflextion, die beiden Zahlen vor dem Komma bekommt das System nicht aufgelöst

    Die Teile passten genau ineinander

    fangen mal an und stellen die Teile von

    zuerst setzen wir den ESP32 ein. Man beachte die Aussparung für die SD Karte

    darauf kommt die Halterung

    nun noch das Modul für die Stromversorgung abdecken

    Man sieht, woher ich es bezogen habe.

    und Deckel drauf

    ab in den Keller zum Gaszähler

    ich hatte leider bei der ganzen Messerei übersehen das auf der linken Seite eine Lasche rausschaute. Aber wofür hat man einen Dremel

    das ESP Gehäuse drauf und theoretisch könnte man das jetzt einrichten, wenn da nicht die Sache mit dem Spiegel wäre

    Will be Continued ….

    heute was schon der Postbote da
    Und beim zusammenbauen fiel mir auch schon ein was ich noch besorgen wollte!

    ihr könnt es euch schon denken, das Spiegelglas

    ich werde nachher die Bilder des Zusammenbaus bearbeiten und posten

    noch einmal ein herzliches Dankeschön an @don

    Das ist hier kein Verbot, sondern eine wirtschaftlich Entscheidung.
    Niemand wird jetzt noch beim Neubau sagen: ey, mach mir Gas da rein.
    Zumal man ja mindestens eine reg. Energiequelle mit anzapfen muss und schon bald über 60% haben soll, je neuer Heizung.
    Da geht man als Häuslebauer doch direkt auf Strom.

    Bei Neubauten ist es relativ klar, da dort die Häuser entsprechend der geltenden Norm gedämmt sein müssen, dort kann ich mit einer Wärmepumpe den Heizungsbedarf decken. Bei Altbauten sieht das wieder anders aus.
    Für Altbauten passt eine Wärmepumpe m.Meinung nach nicht.

    Es bleibt trotzdem die große Frage, wie der ganze Strom jederzeit zur Verfügung steht wenn alles darüber funktionieren soll. E-Auto und Wärmepumpe heben ja massiv den Bedarf an.

    anerkennen muss man, das Habeck bei Gas aus Fracking aus den USA und den Kohlekraftwerken über seinen Parteischatten gesprungen ist.
    Fakt bleibt aber auch das der Strom der Atommeiler im Januar dringend gebraucht wird.
    Selbst wenn wir alles mit Windmühlen zupflastern bleibt immer noch die offene Frage der Speicherung für die erforderliche Grundlasterhaltung.
    Das Habeck momentan aus der Riege der Minister heraussticht ist auch der anderen Kommunikationsstrategie geschuldet sowie der peinlichen Riege aus der SPD.
    Aber back to topic

    das alle Häuser in Deutschland so saniert werden das mit einem minimalen Aufwand eine Beheizung per Wärmepumpe möglich sein wird, ist blauäugig.
    Dazu kommt das dieses schlichtweg nicht bezahlbar ist.

    Die Situation, das die etablierten Energiearten sich wie in einem Zeitraffer extrem verteuert haben, ist für den Normalbürger nicht lösbar.
    Die meisten werden an vielen Ecken Sparen müssen und da fehlt das Geld an anderer Stelle. letztendlich werden viele an den Lebensmitteln sparen, aber auch dort schlägt die Inflation zu.
    Auch für die Anschaffung eines E-Autos ist da kein Geld.

    Aber die unteren Einkommen müssen, wenn sie ihrem Erwerb weiter nachgehen wollen, zur Arbeit fahren. In der Stadt fährt sicherlich der ÖNV. In der Fläche, und da sind die meisten Fabriken, funktioniert das nur mit dem Auto.
    Ich kenne einige, die zwar eine Fahrgemeinschaft gebildet haben, aber täglich hin und zurück 100km fahren
    Irgendwann reicht dafür das Geld nicht mehr.

    das Thema ist eher, das mittlerweile undifferenziert, Merkel und Scholz haben diesem irrsinnigem EU Corona Font den Geldspeicher geöffnet, die Kohle rausschleudern.


    Man hat bei der Beschaffungsstrategie sich in eine unheilvolle Abhängigkeit begeben.
    Dazu kommt das der Wendehals Merkel die weltweit sichersten Atommeiler abschalten ließ weil sie Angst vor dem anrollenden Tsunamie.

    die Steuern auf Energie betragen ungefähr die Hälfte, der Preis könnte locker massiv gesenkt werden
    Die letzten 20 Jahre sind die Steuereinnahmen massiv erhöht im Vergleich zum BIP

    und jetzt haben wir einen Buchautor, der aus ideologischen Gründen die letzten 3 Atommeiler abschalten will
    Immer in dem Aberglauben das „Erneuerbare Energie „ grundlastfähig sei.
    2021 hatten wir an 56 Nächten Windstille

    die Plus Modelle unterstützen das

    aber es muss ja keine neue sein, eine gebrauchte reicht allemal als reine NAS. Da kann dann noch Maria DB drauf und schon hat man eine gemeinsame Bibliothek für Kodi