Bitcoin und Ethereum Ticker in Fhem

Begonnen von hankyzoolander, 03 Oktober 2017, 07:03:48

Vorheriges Thema - Nächstes Thema

djbone92

Hi Leute  ;D

Ich glaube ich bin einfach zu dumm für den Regex...  :'(
könnte mir bitte einer einen Tipp geben, wie ich den Wert in ein Reading bekomme...  :)

mfg
bone

Gisbert

Hallo bone,

ich mach's wie folgt, für etliche Kryptowährungen, vielleicht ist was für dich dabei:
### Ethereum
define Ethereum HTTPMOD http://www.finanzen.net/devisen/ethereum-euro-kurs 600
attr Ethereum userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr Ethereum enableControlSet 1
attr Ethereum group Bitcoin
attr Ethereum reading01Format %.2f
attr Ethereum reading01Name ethereum
attr Ethereum reading01OExpr $val =~ s/,/\./;; $val;;
attr Ethereum reading01RegOpt s
attr Ethereum reading01Regex quotebox">[^<]*<div[^<]*<div>([\d\.?\,?]+)
attr Ethereum room Mobile
attr Ethereum stateFormat ethereum €

### Bitcoin
define Bitcoin HTTPMOD https://www.bitcoin.de/de/btceur/market 600
attr Bitcoin userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr Bitcoin enableControlSet 1
attr Bitcoin group Bitcoin
attr Bitcoin reading01Format %.0f
attr Bitcoin reading01Name bitcoin
attr Bitcoin reading01OExpr $val =~ s/\,//g;; $val;;
attr Bitcoin reading01RegOpt s
attr Bitcoin reading01Regex id="rate_buy" data-rate="([\d\.?\,?]+)
attr Bitcoin room Mobile
attr Bitcoin stateFormat bitcoin €
attr Bitcoin timeout 10

### IOTA
define IOTA HTTPMOD http://www.coinkurs.com/iota-kurs.html 600
attr IOTA userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr IOTA enableControlSet 1
attr IOTA group Bitcoin
attr IOTA reading01Format %.4f
attr IOTA reading01Name iota
attr IOTA reading01RegOpt s
attr IOTA reading01Regex class="preis" id="MIOTAEUR">([\d\.?\,?]+)
attr IOTA room Mobile
attr IOTA stateFormat iota €
attr IOTA timeout 10

### Ripple
define Ripple HTTPMOD http://www.coinkurs.com/ripple-kurs.html 600
attr Ripple userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr Ripple enableControlSet 1
attr Ripple group Bitcoin
attr Ripple reading01Format %.4f
attr Ripple reading01Name ripple
attr Ripple reading01RegOpt s
attr Ripple reading01Regex class="preis" id="XRPEUR">([\d\.?\,?]+)
attr Ripple room Mobile
attr Ripple stateFormat ripple €
attr Ripple timeout 10

### Litecoin
define Litecoin HTTPMOD http://www.coinkurs.com/litecoin-kurs.html 600
attr Litecoin userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr Litecoin enableControlSet 1
attr Litecoin group Bitcoin
attr Litecoin reading01Format %.2f
attr Litecoin reading01Name litecoin
attr Litecoin reading01RegOpt s
attr Litecoin reading01Regex class="preis" id="LTCEUR">([\d\.?\,?]+)
attr Litecoin room Mobile
attr Litecoin stateFormat litecoin €
attr Litecoin timeout 10

### NEO
define NEO HTTPMOD http://www.coinkurs.com/neo-kurs.html 600
attr NEO userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr NEO enableControlSet 1
attr NEO group Bitcoin
attr NEO reading01Format %.3f
attr NEO reading01Name neo
attr NEO reading01RegOpt s
attr NEO reading01Regex class="preis" id="NEOEUR">([\d\.?\,?]+)
attr NEO room Mobile
attr NEO stateFormat neo €
attr NEO timeout 10

### Bitcoin Cash
define BitcoinCash HTTPMOD http://www.coinkurs.com/bitcoin-cash-kurs.html 600
attr BitcoinCash userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr BitcoinCash enableControlSet 1
attr BitcoinCash group Bitcoin
attr BitcoinCash reading01Format %.1f
attr BitcoinCash reading01Name bitcoincash
attr BitcoinCash reading01OExpr $val =~ s/\,//g;; $val;;
attr BitcoinCash reading01RegOpt s
attr BitcoinCash reading01Regex class="preis" id="BCHEUR">([\d\.?\,?]+)
attr BitcoinCash room Mobile
attr BitcoinCash stateFormat bitcoincash €
attr BitcoinCash timeout 10

define FileLog_Bitcoin FileLog ./log/Bitcoin-%Y-%m.log (Bitcoin|Ethereum|IOTA|Litecoin|Ripple|NEO|BitcoinCash):(bitcoin|ethereum|iota|litecoin|ripple|neo|bitcoincash).*
attr FileLog_Bitcoin createGluedFile 1
attr FileLog_Bitcoin logtype text

define SVG_FileLog_Bitcoin_1 SVG FileLog_Bitcoin:SVG_FileLog_Bitcoin_1:CURRENT
attr SVG_FileLog_Bitcoin_1 alias Kryptowährungen
attr SVG_FileLog_Bitcoin_1 captionPos auto
attr SVG_FileLog_Bitcoin_1 room Mobile
attr SVG_FileLog_Bitcoin_1 sortby 18


Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

_fhemuser_

@Gisbert
momentam wechselt Ethereum um die 1000€ dann wird in der Datenbank nur 1,00€ eingetragen. Wenn man den Wert mit 1000 multipliziert, wird bei 998 der Wert 998000€ eingetragen.

Kann man das abfangen?
fhem in der aktuellsten Version auf:
Raspberry 4 mit SSD | fhem2fhem | NanoCul433 Selbstbau | NanoCul868 Selbstbau | DbLog | MAX! | zigbee2MQTT | alexa | Solar
inkl zigbee2MQTT Server, Unifi-Server

Raspberry 4 mit SD Karte | fhem2fhem | motioneye

Gisbert

Hallo,

man kann das Problem abfangen. Ich frage mittlerweile Ethereum bei Bitcoin.de ab, wobei auch dort das Tausenderproblem exisiert:
define Ethereum HTTPMOD https://www.bitcoin.de/de/etheur/market 600
attr Ethereum userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr Ethereum enableControlSet 1
attr Ethereum group Bitcoin
attr Ethereum reading01Format %.1f
attr Ethereum reading01Name ethereum
attr Ethereum reading01OExpr $val =~ s/\,//g;; $val;;
attr Ethereum reading01RegOpt s
attr Ethereum reading01Regex id="rate_buy" data-rate="([\d\.?\,?]+)
attr Ethereum room Mobile
attr Ethereum stateFormat ethereum €
attr Ethereum timeout 10


Wichtig ist dabei, dass das folgende Attribut so aussieht, war vorher nicht der Fall:
attr Ethereum reading01OExpr $val =~ s/\,//g;; $val;;

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

_fhemuser_

Danke für die schnelle Antwort.

Die Änderung bei reading01OExpr hatte ich auch schon durchgeführt, hat aber nur bei Werten über 1000 € eine Verbesserung gebracht. Unter 1000€ wird >1€ angezeigt.

Sind überhaupt Bedingungen  in diesem Bereich möglich?
fhem in der aktuellsten Version auf:
Raspberry 4 mit SSD | fhem2fhem | NanoCul433 Selbstbau | NanoCul868 Selbstbau | DbLog | MAX! | zigbee2MQTT | alexa | Solar
inkl zigbee2MQTT Server, Unifi-Server

Raspberry 4 mit SD Karte | fhem2fhem | motioneye

djbone92

Hallo
meins funktioniert noch:

define CEXIO HTTPMOD https://cex.io/ 60
attr CEXIO userattr reading01Name reading01Regex reading02Name reading02Regex
attr CEXIO reading01Name ETH
attr CEXIO reading01Regex id="ticker-ETH-EUR-price" class="btn_caption">([\d\.?\,?]+)
attr CEXIO reading02Name XRP
attr CEXIO reading02Regex id="ticker-XRP-EUR-price" class="btn_caption">([\d\.?\,?]+)
attr CEXIO room cex.io
attr CEXIO stateFormat Etherium:ETH€    Ripple:XRP€

Mfg
Bone

Gesendet von meinem ONEPLUS A5000 mit Tapatalk


_fhemuser_

@bone
du fragst aber damit nicht direkt die Daten von den bitcoin.de oder finanzen.net ab. Es sieht eher so aus, als ob du die Webseiten auf deinem System zwischenspeicherst und dort eventuell Zwischenwerte oder Formatierungen anpasst.
fhem in der aktuellsten Version auf:
Raspberry 4 mit SSD | fhem2fhem | NanoCul433 Selbstbau | NanoCul868 Selbstbau | DbLog | MAX! | zigbee2MQTT | alexa | Solar
inkl zigbee2MQTT Server, Unifi-Server

Raspberry 4 mit SD Karte | fhem2fhem | motioneye

djbone92

Zitat von: _fhemuser_ am 11 Januar 2018, 08:42:00
@bone
du fragst aber damit nicht direkt die Daten von den bitcoin.de oder finanzen.net ab. Es sieht eher so aus, als ob du die Webseiten auf deinem System zwischenspeicherst und dort eventuell Zwischenwerte oder Formatierungen anpasst.
Hy
Ich frage die werte von cex.io ab.
Ja im prinzip speichere ich den quellcode ab (HTTPMOD)
Und in den readings habe ich dann die werte der Währungen.
Mfg
Bone

Gesendet von meinem ONEPLUS A5000 mit Tapatalk


_fhemuser_

Danke,

bei cex.io werden die Werte ohne den Tausendertrennpunkt angezeigt. Daher ist die Auswertung deutlich einfacher,
fhem in der aktuellsten Version auf:
Raspberry 4 mit SSD | fhem2fhem | NanoCul433 Selbstbau | NanoCul868 Selbstbau | DbLog | MAX! | zigbee2MQTT | alexa | Solar
inkl zigbee2MQTT Server, Unifi-Server

Raspberry 4 mit SD Karte | fhem2fhem | motioneye

djbone92

Zitat von: _fhemuser_ am 11 Januar 2018, 09:52:31
Danke,

bei cex.io werden die Werte ohne den Tausendertrennpunkt angezeigt. Daher ist die Auswertung deutlich einfacher,
Hy
Ja funktioniert echt toll :)

Aber ACHTUNG:
Wenn du wirklich handelst solltest du die Kurse von deiner Seite nehmen.. Sind immer bei allen Seiten leicht unterschiedlich...

Mfg

Gesendet von meinem ONEPLUS A5000 mit Tapatalk


_fhemuser_

Das mit den Unterschieden ist bekannt.

Ich möchte mir erst eine Übersicht verschaffen welche Änderungen bei welchen Kryptowährungen auftreten bevor ich in den Handel einsteige.
fhem in der aktuellsten Version auf:
Raspberry 4 mit SSD | fhem2fhem | NanoCul433 Selbstbau | NanoCul868 Selbstbau | DbLog | MAX! | zigbee2MQTT | alexa | Solar
inkl zigbee2MQTT Server, Unifi-Server

Raspberry 4 mit SD Karte | fhem2fhem | motioneye

rasti

#56
Hallo,

auch wenn Gisbert ja eigentlich schon den Code geliefert hat,
habe das ganze mal überarbeitet und zusammengefasst.

Ich wollte verschiedene Kryptos anzeigen und loggen lassen,
dafür wäre ein einheitlicher httpmod für eine Seite auf der alle Kryptos
vorhanden sind nicht schlecht. Ich habe nun alle Coinwerte
von http://www.coinkurs.com/  genommen.

Ich hab nun noch den Wallet-Gesamtbetrag berechnet.
Unten ist das Ergebnis zusammengefasst.
Wo die Zahl 10 steht müsst ihr halt eure Anzahl der Token eingeben.

Vielleicht kann's ja jemand brauchen.

Viele Grüße

Ralf



### Ethereum
define ETHEREUM HTTPMOD http://www.coinkurs.com/ethereum-kurs.html 600
attr ETHEREUM userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr ETHEREUM enableControlSet 1
attr ETHEREUM group Cryptos
attr ETHEREUM reading01Name ethereum
attr ETHEREUM reading01OExpr $val =~ s/\,//g;; $val;;
attr ETHEREUM reading01RegOpt s
attr ETHEREUM reading01Regex class="preis" id="ETHEUR">([\d\.?\,?]+)
attr ETHEREUM room Krypto
attr ETHEREUM stateFormat ethereum €
attr ETHEREUM timeout 10


### Verge
define VERGE HTTPMOD http://www.coinkurs.com/verge-kurs.html 600
attr VERGE userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr VERGE enableControlSet 1
attr VERGE group Cryptos
attr VERGE reading01Name verge
attr VERGE reading01OExpr $val =~ s/\,//g;; $val;;
attr VERGE reading01RegOpt s
attr VERGE reading01Regex class="preis" id="XVGEUR">([\d\.?\,?]+)
attr VERGE room Krypto
attr VERGE stateFormat verge €
attr VERGE timeout 10

### IOTA
define IOTA HTTPMOD http://www.coinkurs.com/iota-kurs.html 600
attr IOTA userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr IOTA enableControlSet 1
attr IOTA group Cryptos
attr IOTA reading01Name iota
attr IOTA reading01OExpr $val =~ s/\,//g;; $val;;
attr IOTA reading01RegOpt s
attr IOTA reading01Regex class="preis" id="MIOTAEUR">([\d\.?\,?]+)
attr IOTA room Krypto
attr IOTA stateFormat iota €
attr IOTA timeout 10

### Ripple
define RIPPLE HTTPMOD http://www.coinkurs.com/ripple-kurs.html 600
attr RIPPLE userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr RIPPLE enableControlSet 1
attr RIPPLE group Cryptos
attr RIPPLE reading01Name ripple
attr RIPPLE reading01OExpr $val =~ s/\,//g;; $val;;
attr RIPPLE reading01RegOpt s
attr RIPPLE reading01Regex class="preis" id="XRPEUR">([\d\.?\,?]+)
attr RIPPLE room Krypto
attr RIPPLE stateFormat ripple €
attr RIPPLE timeout 10

### Cardano
define CARDANO HTTPMOD http://www.coinkurs.com/cardano-kurs.html 600
attr CARDANO userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr CARDANO enableControlSet 1
attr CARDANO group Cryptos
attr CARDANO reading01Name cardano
attr CARDANO reading01OExpr $val =~ s/\,//g;; $val;;
attr CARDANO reading01RegOpt s
attr CARDANO reading01Regex class="preis" id="ADAEUR">([\d\.?\,?]+)
attr CARDANO room Krypto
attr CARDANO stateFormat cardano €
attr CARDANO timeout 10


### Bitcoin
define BITCOIN HTTPMOD http://www.coinkurs.com/bitcoin-kurs.html 600
attr BITCOIN userattr reading01Format reading01Name reading01OExpr reading01RegOpt reading01Regex
attr BITCOIN enableControlSet 1
attr BITCOIN group Cryptos
attr BITCOIN reading01Name bitcoin
attr BITCOIN reading01OExpr $val =~ s/\,//g;; $val;;
attr BITCOIN reading01RegOpt s
attr BITCOIN reading01Regex class="preis" id="BTCEUR">([\d\.?\,?]+)
attr BITCOIN room Krypto
attr BITCOIN stateFormat bitcoin €
attr BITCOIN timeout 10


defmod Wallet DOIF
attr Wallet room Krypto
attr Wallet state amount: {(10*[BITCOIN:bitcoin]+10*[ETHEREUM:ethereum]+10*[RIPPLE:ripple]+10*[VERGE:verge]+10*[IOTA:iota]+0*[CARDANO:cardano])}


## Bitcoin & Co logs
define FileLog_Crypto FileLog ./log/Crypto-%Y-%m.log (BITCOIN|ETHERUM|IOTA|RIPPLE|VERGE|CARDANO|Wallet):(bitcoin|ethereum|iota|ripple|verge|amount).*
attr FileLog_Crypto createGluedFile 1
attr FileLog_Crypto logtype text





Polamare

#57
@_fhemuser_ hat da vollkommen recht.
Zuerst sollte man immer eine klare Übersicht bekommen und sich dann für eine Kryptowährung entschieden. Mich nervt es, weil heutzutage jeder Mensch denkt, dass man einfach so mit Bitcoin handeln kann. So ist es halt nicht. Man kann es machen, doch dafür muss man eine Menge Geld haben.

Ich persönlich habe zuerst auf [NoSPam] einige Erfahrungen gesammelt und bekam so eine klare Übersicht. Eigentlich überlege ich es mir noch, doch ich denke, dass es Ethereum sein wird.
Doch, das werden wir schon sehen.

Grüß!

_fhemuser_

Nach dem massiven Absturz aller Kryptowährungen habe ich den Eindruck, dass der Hype deutlich nachgelassen hat.

Mich haält noch ab, dass es seit Monaten eher abwärts als aufwärts geht und dass nicht alle Währungen direkt handelbar sind. Dh wenn ich mit einer Währung anfange die unter 10€ liegt bin ich gezwungen erst "teure" Kryptos wie Ethereum oder Bitcoin kaufen und damit dann die anderen. Und dann noch die lange Registrierungeszeit von einigen Wochen bei den meisten Kryptos.
fhem in der aktuellsten Version auf:
Raspberry 4 mit SSD | fhem2fhem | NanoCul433 Selbstbau | NanoCul868 Selbstbau | DbLog | MAX! | zigbee2MQTT | alexa | Solar
inkl zigbee2MQTT Server, Unifi-Server

Raspberry 4 mit SD Karte | fhem2fhem | motioneye

Carsten1981

Hallo zusammen,

ich wollte mich noch mal hier an den Beitrag dranhängen und erstmal danke für die vorarbeit sagen. Hat auf Anhieb funktioniert den IOTA-Kurs in FHEM einzubinden. Frage den aktuellen Kurs stündlich ab.
Ich habe mir mittels eines Dummys (User readings) und eines DOIF eine RG zur Kursentwicklung gebastelt.


([IOTA:iota] > 0)
(setreading IOTA_Dummy Wert_aktuell [IOTA:iota])
DOELSEIF
([IOTA_Dummy:Wert_aktuell] > 0)
(setreading IOTA_Dummy Prozent_ab_kauf {((([IOTA_Dummy:Wert_aktuell]-[IOTA_Dummy:Kaufpreis])/[IOTA_Dummy:Kaufpreis])*100)})
(setreading IOTA_Dummy Prozent_ab_Mitternacht {((([IOTA_Dummy:Wert_aktuell]-[IOTA_Dummy:Wert_Mitternacht])/[IOTA_Dummy:Wert_Mitternacht])*100)})
(setreading IOTA_Dummy Prozent_ab_Montag {((([IOTA_Dummy:Wert_aktuell]-[IOTA_Dummy:Wert_Montag])/[IOTA_Dummy:Wert_Montag])*100)})
(setreading IOTA_Dummy Prozent_ab_Monatsanfang {((([IOTA_Dummy:Wert_aktuell]-[IOTA_Dummy:Wert_Monatsanfang])/[IOTA_Dummy:Wert_Monatsanfang])*100)})
(setreading IOTA_Dummy Prozent_ab_Jahresanfang {((([IOTA_Dummy:Wert_aktuell]-[IOTA_Dummy:Wert_Jahresanfang])/[IOTA_Dummy:Wert_Jahresanfang])*100)})
(setreading IOTA_Dummy Gewinn {((([IOTA_Dummy:Wert_aktuell]-[IOTA_Dummy:Kaufpreis])*[IOTA_Dummy:Anzahl_IOTAS]))})
DOELSEIF
([23:59])
(setreading IOTA_Dummy Wert_Mitternacht [IOTA:iota])
DOELSEIF
(([00:01]) and (strftime ("%wday",localtime) == 1))
(setreading IOTA_Dummy Wert_Montag [IOTA:iota])


das funktioniert so auch problemlos, was ich aber nicht hinbekomme ist folgendes.

Ich würde gerne auch die Entwicklung der letzten 12h der letzten 7 Tage der letzten 30 Tage und der letzten 365 Tage sehen. Hat jemand eine Idee wie ich dies realisieren könnte ohne eine riesen Menge an User Readings generieren zu müssen?

Danke und Gruß Carsten
fhem 5.8 CUL 433, 8x DS18B20, 8fach 230V Relais
benachrichtigungen über Telegram, Steuerung Solar- und Kaminpumpe, Steuerung Somfy Rollos, Lichtsteuerung über Intertechno, Steuerung Heizungspumpe und Mischer Fußbodenheizung