danke, also in den Baumarkt
Gaszähler auslesen
-
Pilot188 -
27. April 2022 um 18:31 -
Unerledigt
-
-
Oder Apotheke oder online bestellen.
Druck ist heute morgen gestartet.
Dieses mal in 0,16 statt 0,2mm und etwas langsamer.
Statt 45mm/sek auf 40 runter.
Ist nach Bauchgefühl.
Sind dann statt rund 13h in etwa 16h.
Und eine niegelnagelneue Rolle PLA.Mehr Variablen wüßte ich nicht zu optimieren.
Auf das der Druck (bis heute Abend kurz nach 9) durchläuftUnd noch etwas anderes gedreht auf dem Druckbett. Aber nur um Z um 90°.
Gefühlt läuft der Drucker auf den Achsen ruhiger als auf dem Bett.
Und die Supportstruktur (sieht man auf dem Foto ganz gut) ist vor allem in der Achsrichtung (wo der Kopf links/rechts fährt) länger. -
-
Je nach Bett funktioniert Spüliwasser und Glasreiniger auch sehr gut.
Es kann auch helfen das Brim etwas zu vergrößern. Bei Cura sinds Standard 8 mm oder so.
Und natürlich spielt die Betttemperatur da auch mit rein. Es kann helfen die ersten Schichten mit einer höheren Temp zu drucken. -
muss ich mal ausprobieren
-
-
Zum Gaszähler.
So wie ich den gedruckt habe, ist der Überhang 55°.
Da bin ich davon ausgegangen, dass es auf jeden Fall diese Supportstruktur benötigt.
Aber:
Offensichtlich nicht.
Warum ist das interessant?
Mit Support dauert es etwa 16h
Ohne dauert es etwa 12h20
Kostenverringerung ist da aber auch nicht die Welt.
Nur, je schneller es fertig ist, desto geringer die Gefahr für "oh fuck".Druck ist sauber durchgelaufen.
Ich mach die Teile noch alle etwas sauber und bringe die dann mit.
-
Gefällt mir
-
-
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/changeabsolutFür die Nachkommastellen
gaszaehler/sub/timestamp
gaszaehler/sub/value
gaszaehler/sub/raw
gaszaehler/sub/error
gaszaehler/sub/changeabsolutDa 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 / 365Gas_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
GasDayAverageCostFü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)
}
}
endFü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)Ich habe heute schon einmal in Bezug auf die Gasumlage ein zusätzliches Item (Number) angelegt und der Gruppe "Gasbezugskosten" zugeordnet
Hat zwar noch den Wert 0, und ich werde dann auch noch die Berechnung anpassen müssen, denn die Gasumlage wird ja erst ab einem bestimmten Datum und damit einem Zählerwert berechnet.
Auch bin ich von der separaten Erfassung der Nachkommastellen weg gegangen. Dieses hat den Vorteil, das noch "positive" Werte übermittelt werden, da es doch ab und an zu Fehllesungen kommt.
Wenn ich die Regel umgebaut habe, werde ich diese zur Verfügung stellen.
Evtl. machen wir dann einen separaten Thread unter Openhab auf. -
So das nächste KI Projekt um analoge Instrumente auszulesen: https://www.heise.de/news/Arduino-N…ls-7219903.html
-
-
da lästert man aber schon dass das zu teuer ist bei der Hardware. So ein ESP32 + Kamera sind keine 10 Tacken
-
Die Nicla-Dinger sind aus meiner Sicht eher Industrie als Hobbybereich.
Aber für einen Nicla bekommt man 10 ESP-Systeme. -
-
Für mich wäre es noch interessanter nur ne doofe Kamera am Zähler zu haben die einmal am Tag ein Bild schießt, dieses auf meinen Intel NUC lädt so das der den Zählerstand daraus liest.
Wenn so ein ESP nur einmal am Tag ein Bild übertragen muss und sonst nichts machst sollte der doch mit zwei Batterien echt lange hinkommen. -
Mit dem irren Deepsleep auf jeden Fall.
-
-
jomjol hatte in der ersten Version das doch mehr oder weniger so umgesetzt.
In einem Docker hat er die Zahlen digitalisiert. -
-
-
1. Mit einem starken Magneten
2. mit Sekundenkleber und Zahnstocher / schaschlikspieß -
das sieht so aus als wenn von der einen Seite ein Splint eingetrieben wurde und auf der anderen Seite die Bohrung nur innen ist.
Da wirst Du nur zwei Möglichkeiten haben.
Abbrechen / zerstören oder die Aussparrung von dem Adapter rausfräsen / dremeln bzw. die Zeichnung anpassen. Freecad Zeichnung liegt ja mit bei -
-
wie breit ist den das Scharnier und wie hoch?
Kannst Du die komplett umklappen?
Ich kann sonst die Datei anpassen und sie ausdrucken. -
Gedruckt ist schon alles, wollte nur schauen ob ich den Deckel weg kriege, a Sonaten bearbeite ich den untersten Ring (hatte ich schon vorgesehen).
Umklappen geht leider nicht, da die Wand im weg ist...außer ich probiere mal ob man die Manschette oben drehen kann um die Position zu verändern. -
-
sonst dremeln an den gedruckten Teil
-
Wenn das blaue Plastik nicht zu hart ist vielleicht einfach eine dickere Stricknadel reinschlagen um den Splint damit ausreichend rauszutreiben. Ansonsten halt passend mit 0.5 mm bohrer vorbohren. Minimalinvasiv nennt das der Chirurg.
-
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!