[46_Aqicn] neues Modul für Luftqualität einer Stadt

Begonnen von CoolTux, 19 Oktober 2017, 14:02:53

Vorheriges Thema - Nächstes Thema

CoolTux

So es konnten nun alle Probleme beseitigt werden. Es dürfen also gerne neue kommen.

Ich habe eine Deutsche Übersetzung für das state Reading der Stationen eingebaut. So fern Euer globales language Attribut DE ist oder Ihr im Aqicn Device language de gesetzt habt kommt die deutsche Übersetzung.
Neue Version steht online bereit.



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

dev0

Zitat von: CoolTux am 19 Oktober 2017, 14:02:53
Wenn das geschehen ist könnt Ihr das Station Device definieren. Wie das geht ist ersichtlich.
Aber nur wenn man FHEMWEB nutzt, via telnet leider nicht. Auch ein "get Aqicn stationSearchByCity Ort" liefert via telnet nix zurück.

Die Commandref beschreibt nur das Client Modul und besginnt mit:
ZitatAqicn - Retrieves data from a Tesla Powerwall 2AC System
;)

CoolTux

Gibt ja auch noch keine commandref  ;D
Das ganze über telnet baue ich noch ein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

maddhin

#18
Ich habe mal etwas mit den Widgets rumgespielt und man kann das jetzt via weblink integrieren:

define <name> weblink iframe http://<fhem-ip>:8083/fhem/ftui/<widget name>.html

aufhübschen (width/height anpassen):

attr <name> htmlattr width="200" height="230" frameborder="0" marginheight="0" marginwidth="0"

Die entsprechende(n) Datei(en) sind als .html im /www/tablet Verzeichnis zu speichern damit diese abrufbar sind (oder eben überall wo sie zugreifbar sind).

Ob der Weg über die html Dateien, die im TabletUI Verzeichnis liegen richtig ist, bezweifle ich, aber die Krücke funktioniert erstmal...

Unter http://aqicn.org/faq/2015-07-28/air-quality-widget-new-improved-feed/ gibt's die jeweiligen Infos und Beispiele, wie man die Widgets an seine Bedürfnisse anpassen kann. Ich habe versucht die beiden Dateien so zu füllen, dass ersichtlich ist was wie wo hinkommt.

Das mit dem Array habe ich aber nicht hinbekommen. Da gibt es eine

ReferenceError: $ is not defined
    at Object.displayCity [as callback] (AQIWidget_array.html:22)
    at aqi.cityname (feed.v1.js?n=7:1)
    at feed.v1.js?n=7:1


Fehlermeldung. Da ich weder JS noch HTML spreche und Google ungnädig war, muss da leider jemand anders nochmal rübergucken. Siehe anbei Array.

Generell wäre es natürlich genial diese Widgets "automatisch via Modul generieren zu lassen" -- ggf. indem man die display/city/language Variablen übergibt. Muss aber nicht und macht die Sache wohl unnötig komplex. Der TabletUI-HTML Umweg ist OK weil flexibel, aber nicht jeder hat TabetUI installiert. Ggf. kann man die Dateien auch woanders speichern...

AQI Widget:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

</head>

<body>
<script  type="text/javascript"  charset="utf-8"> 
    (function(w,d,t,f){  w[f]=w[f]||function(c,k,n){s=w[f],k=s['k']=(s['k']||(k?('&k='+k):''));s['c']= 
    c=(c  instanceof  Array)?c:[c];s['n']=n=n||0;L=d.createElement(t),e=d.getElementsByTagName(t)[0]; 
    L.async=1;L.src='http://feed.aqicn.org/feed/'+(c[n].city)+'/'+(c[n].lang||'')+'/feed.v1.js?n='+n+k;
    e.parentNode.insertBefore(L,e);  };  })(  window,document,'script','_aqiFeed'  );   
</script>
<span  id="city-aqi-container"></span> 
<script  type="text/javascript"  charset="utf-8"> 
_aqiFeed({
display:"<div style='%style;max-width:80px;text-align:center;'><small>%cityname AQI:</small><div style='font-size:30px;height:40px;padding-top:1px;'>%aqiv</div> %impact</div>",
container:"city-aqi-container",
city:"berlin",
lang:"en"   
}); 

</script>

</body>
</html>


AQI Widget Details:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

</head>

<body>
<script  type="text/javascript"  charset="utf-8"> 
    (function(w,d,t,f){  w[f]=w[f]||function(c,k,n){s=w[f],k=s['k']=(s['k']||(k?('&k='+k):''));s['c']= 
    c=(c  instanceof  Array)?c:[c];s['n']=n=n||0;L=d.createElement(t),e=d.getElementsByTagName(t)[0]; 
    L.async=1;L.src='http://feed.aqicn.org/feed/'+(c[n].city)+'/'+(c[n].lang||'')+'/feed.v1.js?n='+n+k;
    e.parentNode.insertBefore(L,e);  };  })(  window,document,'script','_aqiFeed'  );   
</script>
<span  id="city-aqi-container"></span> 
<script  type="text/javascript"  charset="utf-8"> 
_aqiFeed({
display:"%details",
container:"city-aqi-container",
city:"berlin",
lang:"en"   
}); 

</script>

</body>
</html>


AQI Widget Arrays (geht nicht):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>

</head>

<body>
<script  type="text/javascript"  charset="utf-8"> 
    (function(w,d,t,f){  w[f]=w[f]||function(c,k,n){s=w[f],k=s['k']=(s['k']||(k?('&k='+k):''));s['c']= 
    c=(c  instanceof  Array)?c:[c];s['n']=n=n||0;L=d.createElement(t),e=d.getElementsByTagName(t)[0]; 
    L.async=1;L.src='http://feed.aqicn.org/feed/'+(c[n].city)+'/'+(c[n].lang||'')+'/feed.v1.js?n='+n+k;
    e.parentNode.insertBefore(L,e);  };  })(  window,document,'script','_aqiFeed'  );   

var  cities  =  ["london",  "newyork",  "seoul",  "guangzhou",  "tokyo",  "shanghai",  "paris","hongkong"]; 
 
var  aqiWidgetConfig  =  [];   
cities.forEach(function(city)  {  aqiWidgetConfig.push({city:city,  callback:  displayCity});  }); 

_aqiFeed(aqiWidgetConfig);

function displayCity(aqi)  { 
  $("#mutiple-city-aqi").append(aqi.text("<center>%cityname<br>%aqi<br><small>%date</small></center>")); 

</script>

</body>
</html>


maddhin

Hatte gerade ein

PERL WARNING: Use of uninitialized value $aqi in numeric lt (<) at /usr/share/fhem/FHEM/46_Aqicn.pm line 572.

im Log.

Beijing funkt jetzt, danke!

Wie kann man das Abfrageintervall verändern?

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

#21
Neue Version online.

Setzt mal das Attribut stateFormat auf htmlStyle und schaut mal.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Also das Reading AQI zu nehmen für die ganzen Anzeigen ist Kacke. Schau Dir mal den Screenshot bitte an. Auch der dominatPoll hilft hier nichts. Wir sollten wirklich das PM2.5-AQI nehmen, das scheint immer einen Wert zu haben.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Ok vergiss es, Berlin hat das Reading erst gar nicht. Ich mache jetzt ne Abfrage und stelle entsprechend die Readings zusammen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

maddhin

Hm, eigentlich dachte ich die haben AQI und dominantPoll extra gemacht DAMIT immer ein AQI da ist.

ABER: Potsdam Zentrum sind die letzten Werte am 2017-10-20 22:00:00 gemessen worden. D.h. vor 3 Tagen. Meiner Meinung nach wird AQI auf "-" gestellt, wenn nach einer Zeit x keine Werte mehr kommen. Intelligent design?

Also ggf. ein "keine aktuellen Werte" oder wirklich einen "-" lassen damit man weiß, dass die Station "offline" ist..

maddhin

#25
Berlin hat doch AQI 20... :o

EDIT: erst lesen, dann tippen.. OK, Du hattest über das PM 2.5 Reading gesprochen...

CoolTux

Ich habe das jetzt einfach mal durch eine Abfrage gelöst.
Bin gerade dabei die HealthImplications ein zu bauen. Danach kann man ja noch überlegen wie man veraltete Daten Darstellen könnte
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

maddhin

Zitat von: CoolTux am 23 Oktober 2017, 10:45:35
Ich habe das jetzt einfach mal durch eine Abfrage gelöst.
Bin gerade dabei die HealthImplications ein zu bauen. Danach kann man ja noch überlegen wie man veraltete Daten Darstellen könnte

Super - ist wahrscheinlich das einfachste die Daten von Wiki oder AQICN für die Health implications zu übernehmen.

Ich habe bisher noch keine nachhaltige Recherche zu den EU bzw. deutschen Standards gemacht. Das ist kompliziert und bezieht verschiedene Schadstoffe ein. Die amerikanischen Standards sind so schön einfach definiert:)

Und das schönes an AQICN ist auch, dass man alle Werte in µg/m³ umrechnen kann und dann in anderen Standard - wenn man das möchte.

Werde die neue Version heute Abend testen - bin etwas in Rückstand nachdem ich gestern meinen RPi und Fhem neu aufsetzen und wiederherstellen musste.

CoolTux

Wäre schick wenn Du vieleicht Zeit finden könntest eine Art Commandref zu den Readings zu schreiben. Kannst auch einfach Text schreiben ich kann das dann als Commandref schreiben. Müsste aber eben enlisch sein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net