Już sobie poradziłem.
Trzeba było usunąć dokera mosquito i uruchomić ponownie i jest ok.
Supla - MQTT - Dashing
-
- Posts: 9
- Joined: Wed Nov 27, 2019 12:54 pm
Serwis dla klienta supli uruchomiony.
Wszystko wstało po restarcie malinki.
Beku dzięki za szybką reakcję, wspaniała robota!
Wszystko wstało po restarcie malinki.
Beku dzięki za szybką reakcję, wspaniała robota!
-
- Posts: 453
- Joined: Tue Nov 06, 2018 1:49 pm
A nie jest przypadkiem tak że usuwając kontener z MQTT usunąłeś sobie też konfiguracje hasła z niego? I po postawieniu na nowo masz bez hasła i dlatego klient się łączy?Pablo1 wrote: Mon Dec 23, 2019 9:51 pm Serwis dla klienta supli uruchomiony.
Wszystko wstało po restarcie malinki.
Beku dzięki za szybką reakcję, wspaniała robota!
Generalnie w pliku konfiguracyjnym config_template.yaml (tam gdzie wpisujesz konfiguracje supli i mqtt) można wpisać użytkownika i hasło do mqtt jeśli zabezpieczasz brokera w ten sposób.
-
- Posts: 192
- Joined: Fri Aug 02, 2019 12:19 pm
Witam. Mam prośbę do @Beku. Z Twoją pomocą udało mi się uruchomić całość. Wszystko działa super tylko chcę zrobić widgety do sterowania roletami. Masz może jakiegoś gotowca na którym można się wzorować?
Pozdrawiam
Tomek
Pozdrawiam
Tomek
-
- Posts: 9
- Joined: Wed Nov 27, 2019 12:54 pm
Witam.
Mam kolejne pytania.
Próbuję dodać do smashingu widget pogodowy wg instrukcji stąd: https://github.com/Smashing/smashing/wi ... al-Widgets.
Pobieram api key, wpisuje położenie geograficzne, ale ciągle nie mam wyświetlonych wartości. Próbowałem wszystkich widgetów pogodowych, z każdym to samo. Trzeba w tym smashingu wykonać jakieś dodatkowe czynności, np restart dockera? Bo już nie mam pomysłu.
Próbowałem również dodać temperaturę CPU maliny. Przerobiłem trochę skrypt znaleziony w necie:
Temperatura publikuje się jak termometr o id:100, widzę to w mqqt explorerze, ale niestety nie widzę wartości w smashingu, jest "nan".
Co robię nie tak?
Mam też taki pomysł żeby ze zebranych danych policzyć chwilową moc grzania i wyświetlić /(temp zasilania - temp powrotu) * przepływ cieczy * współczynnik/ mniejsza o wzór.
Może jakieś sugestie jak to zrobić.
Mam kolejne pytania.
Próbuję dodać do smashingu widget pogodowy wg instrukcji stąd: https://github.com/Smashing/smashing/wi ... al-Widgets.
Pobieram api key, wpisuje położenie geograficzne, ale ciągle nie mam wyświetlonych wartości. Próbowałem wszystkich widgetów pogodowych, z każdym to samo. Trzeba w tym smashingu wykonać jakieś dodatkowe czynności, np restart dockera? Bo już nie mam pomysłu.
Próbowałem również dodać temperaturę CPU maliny. Przerobiłem trochę skrypt znaleziony w necie:
Code: Select all
#!/usr/bin/env python3.5
import paho.mqtt.publish as publish
from subprocess import check_output
from re import findall
def get_temp():
temp = check_output(["vcgencmd","measure_temp"]).decode("UTF-8")
return(findall("\d+\.\d+",temp)[0])
def publish_message(topic, message):
print("Publishing to MQTT topic: " + topic)
print("Message: " + message)
publish.single(topic, message, hostname="192.168.0.200")
temp = get_temp()
publish_message("supla/channels/status/thermometer/100",'{"id":100,"caption":pi,"temperature":'+temp+'"online":1}')
Co robię nie tak?
Mam też taki pomysł żeby ze zebranych danych policzyć chwilową moc grzania i wyświetlić /(temp zasilania - temp powrotu) * przepływ cieczy * współczynnik/ mniejsza o wzór.
Może jakieś sugestie jak to zrobić.
-
- Posts: 453
- Joined: Tue Nov 06, 2018 1:49 pm
Sorki że dopiero teraz, ale przegapiłem że coś tutaj nowego się pojawiło.tomekk87 wrote: Fri Dec 27, 2019 9:27 am Witam. Mam prośbę do @Beku. Z Twoją pomocą udało mi się uruchomić całość. Wszystko działa super tylko chcę zrobić widgety do sterowania roletami. Masz może jakiegoś gotowca na którym można się wzorować?
Pozdrawiam
Tomek
https://github.com/smar000/openhab-dash ... lershutter
tutaj masz widget z roletami, ale trzeba go zmodyfikować pod MQTT.
Trzeba też zmodyfikować samo hc_mqtt.rb bo ono jest przygotowane do publikowania tylko stanów przyciskow.
Najlepiej sobie skopiować metode post i ją zmodyfikować pod rollershuter tak jak poniżej (do przetestowania)
Code: Select all
post '/mqtt/publish/roller_shutter' do
id = params['id']
state = params['state']
topic = "supla/channels/command/rollershuter/#{id}"
message = "{\"id\" : #{id}, \"shut\" : #{state} }"
begin
client.publish(topic, message)
rescue MQTT::NotConnectedException
client.connect()
retry
rescue => e
puts e.message
end
end
Code: Select all
class Dashing.Ohrollershutter extends Dashing.ClickableWidget
constructor: ->
super
@queryState()
@accessor 'state',
get: -> @_state ? '0'
set: (key, value) -> @_state = value
@accessor 'icon',
get: -> if @['icon'] then @['icon'] else
if parseInt(@get('state')) > 0 then @get('iconon') else @get('iconoff')
set: Batman.Property.defaultAccessor.set
@accessor 'iconon',
get: -> @['iconon'] ? 'circle'
set: Batman.Property.defaultAccessor.set
@accessor 'iconoff',
get: -> @['iconoff'] ? 'circle-thin'
set: Batman.Property.defaultAccessor.set
@accessor 'icon-style', ->
if parseInt(@get('state')) >0 then 'rollershutter-icon-on' else 'rollershutter-icon-off'
plusLevel: ->
newLevel = parseInt(@get('state'))-10
if newLevel > 100
newLevel = 100
else if newLevel < 0
newLevel = 0
@set 'state', newLevel
return @get('state')
minusLevel: ->
newLevel = parseInt(@get('state'))+10
if newLevel > 100
newLevel = 100
else if newLevel < 0
newLevel = 0
@set 'state', newLevel
return @get('state')
levelUp: ->
newLevel = @plusLevel()
$.post '/mqtt/publish/roller_shutter',
id: @get('device'),
state: newLevel
levelDown: ->
newLevel = @minusLevel()
$.post '/mqtt/publish/roller_shutter',
id: @get('device'),
state: newLevel
toggleState: ->
newState = if @get('state') > 0 then '0' else '80'
@set 'state', newState
return newState
queryState: ->
@set 'state', @get('shut')
postState: ->
newState = @toggleState()
$.post '/mqtt/publish/roller_shutter',
id: @get('device'),
state: newState
ready: ->
onData: (data) ->
debugger
onClick: (event) ->
if event.target.id == "level-down"
@levelDown()
else if event.target.id == "level-up"
@levelUp()
else if event.target.id == "switch"
@postState()
-
- Posts: 453
- Joined: Tue Nov 06, 2018 1:49 pm
Ja mam zrobiony skrypt z temperaturą zrobiony taki:Pablo1 wrote: Fri Dec 27, 2019 9:42 pm Witam.
Mam kolejne pytania.
Próbuję dodać do smashingu widget pogodowy wg instrukcji stąd: https://github.com/Smashing/smashing/wi ... al-Widgets.
Pobieram api key, wpisuje położenie geograficzne, ale ciągle nie mam wyświetlonych wartości. Próbowałem wszystkich widgetów pogodowych, z każdym to samo. Trzeba w tym smashingu wykonać jakieś dodatkowe czynności, np restart dockera? Bo już nie mam pomysłu.
Próbowałem również dodać temperaturę CPU maliny. Przerobiłem trochę skrypt znaleziony w necie:Temperatura publikuje się jak termometr o id:100, widzę to w mqqt explorerze, ale niestety nie widzę wartości w smashingu, jest "nan".Code: Select all
#!/usr/bin/env python3.5 import paho.mqtt.publish as publish from subprocess import check_output from re import findall def get_temp(): temp = check_output(["vcgencmd","measure_temp"]).decode("UTF-8") return(findall("\d+\.\d+",temp)[0]) def publish_message(topic, message): print("Publishing to MQTT topic: " + topic) print("Message: " + message) publish.single(topic, message, hostname="192.168.0.200") temp = get_temp() publish_message("supla/channels/status/thermometer/100",'{"id":100,"caption":pi,"temperature":'+temp+'"online":1}')
Co robię nie tak?
Mam też taki pomysł żeby ze zebranych danych policzyć chwilową moc grzania i wyświetlić /(temp zasilania - temp powrotu) * przepływ cieczy * współczynnik/ mniejsza o wzór.
Może jakieś sugestie jak to zrobić.
Code: Select all
#!/bin/bash
temp=$(vcgencmd measure_temp | egrep -o '[0-9]*\.[0-9]*')
curl -d '{"auth_token":"token", "temperature": '$temp'}' -H "Content-Type: application/json" -X POST http://192.168.2.216:3030/widgets/rasptemp
Skrypt mam odpalony w cronie
Code: Select all
/1 * * * * /home/pi/rasptemdashing.sh
no i sam plik default.erb tam mam wpisane:
Code: Select all
<li data-row="4" data-col="4" data-sizex="1" data-sizey="1">
<div data-id="rasptemp" data-view="Ohtemp" data-title="Rpi"></div>
</li>
-
- Posts: 192
- Joined: Fri Aug 02, 2019 12:19 pm
Dzięki za podjęcie się w ogóle próby pomocy w tym temacie. Zrobiłem wszystko zgodnie z sugestią i jak na razie nie ruszyło. Przedstawiam kilka fotek. Widget do sterowania się pojawiła, ale roleta nie reaguje. Jak będziesz miał chwilę i chęci to proszę o kolejne sugestie co zmienić, aby to ruszyło.Beku wrote: Mon Dec 30, 2019 5:00 pmSorki że dopiero teraz, ale przegapiłem że coś tutaj nowego się pojawiło.tomekk87 wrote: Fri Dec 27, 2019 9:27 am Witam. Mam prośbę do @Beku. Z Twoją pomocą udało mi się uruchomić całość. Wszystko działa super tylko chcę zrobić widgety do sterowania roletami. Masz może jakiegoś gotowca na którym można się wzorować?
Pozdrawiam
Tomek
https://github.com/smar000/openhab-dash ... lershutter
tutaj masz widget z roletami, ale trzeba go zmodyfikować pod MQTT.
Trzeba też zmodyfikować samo hc_mqtt.rb bo ono jest przygotowane do publikowania tylko stanów przyciskow.
Najlepiej sobie skopiować metode post i ją zmodyfikować pod rollershuter tak jak poniżej (do przetestowania)
natomiast plik rollershutter.coffe to coś w ten deseń::Code: Select all
post '/mqtt/publish/roller_shutter' do id = params['id'] state = params['state'] topic = "supla/channels/command/rollershuter/#{id}" message = "{\"id\" : #{id}, \"shut\" : #{state} }" begin client.publish(topic, message) rescue MQTT::NotConnectedException client.connect() retry rescue => e puts e.message end end
ale robiłem to na sucho więc to raczej z palca nie zadziałaCode: Select all
class Dashing.Ohrollershutter extends Dashing.ClickableWidget constructor: -> super @queryState() @accessor 'state', get: -> @_state ? '0' set: (key, value) -> @_state = value @accessor 'icon', get: -> if @['icon'] then @['icon'] else if parseInt(@get('state')) > 0 then @get('iconon') else @get('iconoff') set: Batman.Property.defaultAccessor.set @accessor 'iconon', get: -> @['iconon'] ? 'circle' set: Batman.Property.defaultAccessor.set @accessor 'iconoff', get: -> @['iconoff'] ? 'circle-thin' set: Batman.Property.defaultAccessor.set @accessor 'icon-style', -> if parseInt(@get('state')) >0 then 'rollershutter-icon-on' else 'rollershutter-icon-off' plusLevel: -> newLevel = parseInt(@get('state'))-10 if newLevel > 100 newLevel = 100 else if newLevel < 0 newLevel = 0 @set 'state', newLevel return @get('state') minusLevel: -> newLevel = parseInt(@get('state'))+10 if newLevel > 100 newLevel = 100 else if newLevel < 0 newLevel = 0 @set 'state', newLevel return @get('state') levelUp: -> newLevel = @plusLevel() $.post '/mqtt/publish/roller_shutter', id: @get('device'), state: newLevel levelDown: -> newLevel = @minusLevel() $.post '/mqtt/publish/roller_shutter', id: @get('device'), state: newLevel toggleState: -> newState = if @get('state') > 0 then '0' else '80' @set 'state', newState return newState queryState: -> @set 'state', @get('shut') postState: -> newState = @toggleState() $.post '/mqtt/publish/roller_shutter', id: @get('device'), state: newState ready: -> onData: (data) -> debugger onClick: (event) -> if event.target.id == "level-down" @levelDown() else if event.target.id == "level-up" @levelUp() else if event.target.id == "switch" @postState()
Pozdrawiam i Życzę Szczęśliwego Nowego Roku.
You do not have the required permissions to view the files attached to this post.
-
- Posts: 108
- Joined: Mon May 27, 2019 9:46 am
mnie zastanawia czemu masz 5 stopni w domu a 22 na balkonie...