ich bin neu hier und will nicht direkt unangenehm auffallen.

Wenn ja, würde ich direkt durchstarten.
Danke für eine kurze RM.
TobiasKB
Code: Alles auswählen
from machine import I2C, Pin
class acc():
def __init__(self, i2c, sensor_id="MPU6050", addr=0x68):
self.iic = i2c
self.sensor_id = sensor_id
self.addr = addr
#Line 8 self.iic.start()
self.iic.writeto(self.addr, bytearray([107,0]))
self.iic.stop()
def get_raw_values(self):
self.iic.start()
a = self.iic.readfrom_mem(self.addr, 0x3B, 6)
self.iic.stop()
return a
def bytes_toint(self, firstbyte, secondbyte):
if not firstbyte & 0x80:
return firstbyte << 8 | secondbyte
return - (((firstbyte ^ 255) << 8) | (secondbyte ^ 255) + 1)
def get_values(self):
raw_ints = self.get_raw_values()
vals = {}
# print(raw_ints[0])
# print(vals)
vals["AcX"] = self.bytes_toint(raw_ints[0], raw_ints[1]) / 16384.0
vals["AcY"] = self.bytes_toint(raw_ints[2], raw_ints[3]) / 16384.0
vals["AcZ"] = self.bytes_toint(raw_ints[4], raw_ints[5]) / 16384.0
return vals
if __name__ == "__main__": #if __name__ == "__main__": means: this code runs only if file is executed and not when it is imported
i2c = I2C(scl=Pin(5), sda=Pin(4))
accelerometer = acc(i2c)
print(accelerometer.get_values())
print(type(accelerometer.get_raw_values()))
Code: Alles auswählen
from thingflow import *
from wifi import wifi_connect
from mqtt_writer import MQTTWriter
import network
from mpu6050mqtt2 import *
from machine import I2C
ap = network.WLAN(network.AP_IF)
ap.active(False)
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
SID="Messnetz"
PASSWORD="'########"
MQTT_HOST="192.168.1.1"
wifi_connect(SID, PASSWORD)
m = MQTTWriter("esp8266", MQTT_HOST, 1883, "sensor-data")
#Line 19 sensor = SensorAsOutputThing(acc(1))
sensor.connect(Output())
sensor.connect(m)
sched = Scheduler()
sched.schedule_periodic(sensor, 2.0)
sched.run_forever()
Code: Alles auswählen
from machine import I2C, Pin
class Accel:
def __init__(self, i2c, scl_pinno=5, sda_pinno=4, addr=0x68):
self.i2c = I2C(scl=Pin(scl_pinno, Pin.IN),
sda=Pin(sda_pinno, Pin.IN))
self.addr = addr
self.i2c.start()
self.i2c.writeto(self.addr, bytearray([107, 0]))
self.i2c.stop()
self.counter = 0
def get_raw_values(self):
self.i2c.start()
a = self.i2c.readfrom_mem(self.addr, 0x3B, 6)
self.i2c.stop()
return a
def get_ints(self):
b = self.get_raw_values()
c = []
for i in b:
c.append(i)
return c
def bytes_toint(self, firstbyte, secondbyte):
if not firstbyte & 0x80:
return firstbyte << 8 | secondbyte
return - (((firstbyte ^ 255) << 8) | (secondbyte ^ 255) + 1)
def get_values(self):
raw_ints = self.get_raw_values()
vals = {}
vals["accX"] = self.bytes_toint(raw_ints[0], raw_ints[1]) / 16384.0
vals["accY"] = self.bytes_toint(raw_ints[2], raw_ints[3]) / 16384.0
vals["accZ"] = self.bytes_toint(raw_ints[4], raw_ints[5]) / 16384.0
return vals # returned in range of Int16
if __name__ == "__main__": #if __name__ == "__main__": means: this code runs only if file is executed and not when it is imported
i2c = I2C(scl=Pin(5), sda=Pin(4))
accelerometer = Accel(i2c)
print(accelerometer.get_values())
Code: Alles auswählen
i2c = I2C(scl=Pin(5), sda=Pin(4))
acc(i2c)
Code: Alles auswählen
acc(1)
Code: Alles auswählen
sensor = SensorAsOutputThing(acc(1, I2C)
Code: Alles auswählen
4 def __init__(self, I2C, scl_pinno=5, sda_pinno=4, sensor_id="MPU6050", addr=0x68):
5 self.iic = I2C(-1, scl=Pin(scl_pinno, Pin.IN), sda=Pin(sda_pinno, Pin.IN))
Code: Alles auswählen
from thingflow.base import SensorAsOutputThing
MEAN = 100
STDDEV = 10
sensor = SensorAsOutputThing(RandomSensor(1, MEAN, STDDEV, stop_after=5))